自学内容网 自学内容网

prometheus通过nginx-vts-exporter监控nginx

Prometheus监控nginx有两种方式。

一种是通过nginx-exporter监控,需要开启nginx_stub_status,主要是nginx自身的status信息,metrics数据相对较少;

另一种是使用nginx-vts-exporter监控,但是需要在编译nginx的时候添加nginx-module-vts模块,监控数据较多,提供了包含server、upstream以及cache的相关监控指标,指标更加丰富

综合上述两种优缺点,我采用nginx-vts-exporter实现对nginx的监控。

0.实验环境

版本地址
nginx1.26.0https://blog.csdn.net/liulunan_lln/article/details/140295547
nginx-module-vts0.2.2https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2.1.tar.gz
nginx-vts-exporter0.10.3https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz

1.对现有nginx升级

1.1 安装nginx-module-vts

# 进入nginx安装目录
cd /root/nginx/nginx-1.26.0
# 下载新的nginx-module-vts
wget https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2.2.tar.gz
# 解压
tar -zxvf v0.2.2.tar.gz
# 预编译 需要新增--add-module=nginx-module-vts-0.2.2   --prefix是nginx的安装目录,需要跟现有的nginx保持一致
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --add-module=nginx-module-vts-0.2.2
# 编译(这里只make,不要make install,不然会覆盖。如果是新装nginx,可以继续make install)
make
make install

1.2 调整配置文件

cd /usr/local/nginx/conf/
# 备份原配置文件
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
vi /usr/local/nginx/conf/nginx.conf
# 修改nginx.conf配置,增加以下内容
http {

    # 需要配置
    vhost_traffic_status_zone;  
    vhost_traffic_status_filter_by_host on;
    
    server {
        listen  80; #端口任意
        server_name localhost;

        # 主要是这个location配置
        location /status/ {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
  }
}

添加在nginx.conf中的http段落下。

开启基础监控
vhost_traffic_status_zone;

开启详细状态码统计
vhost_traffic_status_filter on;
vhost_traffic_status_filter_by_set_key $status $server_name;

开启URL统计
vhost_traffic_status_filter on;
vhost_traffic_status_filter_by_set_key u r i u r i s : : uri uris:: uriuris::server_name;

配置建议:

  1. 打开vhost过滤vhost_traffic_status_filter_by_host on;
    开启此功能,在Nginx配置有多个server_name的情况下,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个server_name上。
  2. 在不想统计流量的server区域禁用vhost_traffic_status,在sever中添加vhost_traffic_statusoff;假如nginx没有规范配置server_name或者无需进行监控的server上,那么建议在此vhost上禁用统计监控功能。否则会出现“127.0.0.1”,hostname等的域名监控信息。

1.3 重启nginx

# 停止旧nginx
/usr/local/nginx/sbin/nginx -s stop
# 启动nginx
/usr/local/nginx/sbin/nginx

# 查看nginx是否包含nginx-module-vts-0.2.2 
# configure arguments: 最后是否有 --add-module=nginx-module-vts-0.2.2
[root@master nginx]# ./sbin/nginx -V
nginx version: nginx/1.26.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --add-module=nginx-module-vts-0.2.2

1.4 验证

浏览器访问:http://ip:port/status
请添加图片描述

2.指标采集器nginx-vts-exporter

2.1 下载

wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
tar -zxvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
mv nginx-vts-exporter-0.10.3.linux-amd64 /root/exporter/nginx_exporter/
rm -rf nginx-vts-exporter-0.10.3.linux-amd64 nginx-vts-exporter-0.10.3.linux-amd64.tar.gz

2.2 启动采集器

nohup /root/exporter/nginx_exporter/nginx-vts-exporter  -nginx.scrape_uri https://192.168.56.110/status/format/json -telemetry.address=:49148 >> /root/exporter/nginx_exporter/nginx_vts_exporter.log 2>&1 &

2.3 查看效果请添加图片描述

3.配置到prometheus

打开prometheus配置文件prometheus.yml,然后使配置生效执行curl -X POST http://192.168.56.110:9090/-/reload
在这里插入图片描述

4.grafana添加nginx看板

面板地址:https://grafana.com/grafana/dashboards/2949-nginx-vts-stats/
导入模板编号:2949
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.监控指标说明

  • nginx_server_requests:统计nginx各个host 各个请求的总数,精确到状态码
  • nginx_upstream_requests:统计各个upstream 请求总数,精确到状态码
  • nginx_server_connections:统计nginx几种连接状态type的连接数
  • nginx_server_cache:统计nginx缓存计算器,精确到每一种状态和转发type
  • nginx_server_bytes: 统计nginx进出的字节计数可以精确到每个host,in进,out出
  • nginx_upstream_bytes: 统计nginx各个 upstream 分组的字节总数,细分到进出
  • nginx_upstream_responseMsec:统计各个upstream 平均响应时长,精确到每个节点
  • nginx_server_info:可以用于判断nginx是否存活
  • nginx_vts_exporter_build_info:可以用于判断nginx vts exporter是否存活

参考


原文地址:https://blog.csdn.net/liulunan_lln/article/details/142383740

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!