Web服务器-Nginx监控&备份

60 阅读3分钟

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一大章介绍了Kubernetes的知识,本章节我们进入中间件的讲解,这里会包含很多不同的类型组件,中间件的第一个大类我这里定义的是Web服务器。由于目前使用最广泛的Web服务器是Nginx,所以我们这里的讲解主要以Nginx服务器为主。

任何应用软件,部署以后,都需要考虑到监控和备份的问题。我们这一章的Nginx也不例外。

Nginx监控

Nginx默认监控模块

server {
    listen 80;
    server_name localhost;
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 192.168.31.0/24;  # 限制访问IP,根据需要 
        deny all;
    }
}

监控指标

Active connections: 3 
server accepts handled requests
 3 3 6 
Reading: 0 Writing: 1 Waiting: 2 

Active connections:当前活跃连接数。

accepts vs handled:若差异大,可能有连接被丢弃。

Reading/Writing/Waiting:分别代表读取头、响应写入、空闲客户端连接数。

Prometheus的监控

上面的监控信息,实在是简单了,而且随着云原生的发展,大部分监控都需要接入到Prometheus里面,所以我们必须要把我们的监控数据兼容Prometheus格式。

下面我们将使用动态加载mod的方式加载的vts模块,也算是弥补我们在Lua的使用动态加载的遗憾。也是这个模块才会有更详细的监控数据。

动态加载监控模块

1.部署编译依赖包

 yum install gcc make pcre-devel zlib-devel openssl-devel git

2.下载同版本nginx

NGINX_VERSION=$(nginx -v 2>&1 | awk -F'/' '{print $2}')
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
tar -zxvf nginx-${NGINX_VERSION}.tar.gz

3.下载vts源码

#也可以不安装git命令,手工上传源码包 
git clone https://github.com/vozlt/nginx-module-vts.git

4.动态编译

cd nginx-${NGINX_VERSION}
./configure --with-compat  --add-dynamic-module=../nginx-module-vts

make modules

5.配置动态模块加载

cp objs/ngx_http_vhost_traffic_status_module.so /usr/share/nginx/modules/
echo "load_module /usr/share/nginx/modules/ngx_http_vhost_traffic_status_module.so;" > /usr/share/nginx/modules/vts.conf

6.重载nginx并配置监控信息

#在nginx.conf主配置文件 http模块下添加参数
#这样配置需要为每个网站配置 location
vhost_traffic_status_zone;

#下面这个配置就可以全局的
vhost_traffic_status_zone shared:vhost_traffic_status:10m;

server {
    listen 80;
    server_name localhost;
    location /status {
      vhost_traffic_status_display;
      vhost_traffic_status_display_format html;
      access_log off;
      allow 192.168.31.0/24;  # 按需开放访问IP
      deny all;
    }
  }

7.暴露给exporter

#json指标地址
#还需要启动exporter, 从这里读取数据
 http://192.168.31.126/status/format/json

放一个网上找的Grafana的Nginx监控大屏。

备份

Nginx的核心其实就是配置文件,所以备份的核心也是这些配置文件,可以通过任何计划定时把配置文件同步到其他地方。如果还涉及到静态文件,也可以同步备份。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。