简述
监控Nginx主要用到以下三个模块:
- nginx-module-vts:Nginx virtual host traffic statusmodule,Nginx的监控模块,能够提供JSON格式的数据产出。
- nginx-vts-exporter:Simple serverthat scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。主要用于收集Nginx的监控数据,并给Prometheus提供监控接口,默认端口号9913。
- Prometheus:监控Nginx-vts-exporter提供的Nginx数据,并存储在时序数据库中,可以使用PromQL对时序数据进行查询和聚合。
1.下载nginx-module-vts模块
解压
unzip nginx-module-vts-master.zip
mv nginx-module-vts-master /usr/local/
2.安装nginx
tar zxvf nginx-1.15.7.tar.gz
cd nginx-1.15.7
./configure --prefix=/usr/local/nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module --add-module=/usr/local/nginx-module-vts-master
make && make install
修改nginx配置文件,新起一个vhost暴露给server端访问数据:
vim /usr/local/nginx/conf/nginx.conf
server下添加如下:http {
vhost_traffic_status_zone; --添加
...
server {
...
location /status {
vhost_traffic_status_display; --添加
vhost_traffic_status_display_format html; --添加
}
}
}
Nginx-module-vts模块介绍:
这是一个Nginx模块,提供对虚拟主机状态信息的访问。它包含当前状态,例如servers, upstreams, caches。这类似于nginx plus的实时活动监视。内置的html和旧版本的演示页面也保持一致。这个模块主要就是来监控nginx虚拟主机状态的。
首先,指令vhost_traffic_status_zone 是必需的,如果指令vhost_traffic_status_display 被设置,可以通过下方式访问:
测试nginx配置文件是否正确: /usr/local/nginx/sbin/nginx -t
如果正确没问题,启动nginx 启动nginx: /usr/local/nginx/sbin/nginx
此时访问http://IP地址/status可以看到nginx的状态信息了。
3.安装nginx-vts-exporter
https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.9.1/nginx-vts-exporter-0.9.1.linux-amd64.tar.gz
tar -zxvf nginx-vts-exporter-0.9.1.linux-amd64.tar.gz
mv nginx-vts-exporter-0.9.1.linux-amd64 /usr/local/nginx-vts-exporter
chmod +x /usr/local/nginx-vts-exporter-0.5/bin/nginx-vts-exporter
cd /usr/local/nginx-vts-exporter/bin
通过nginx-vts-exporter二进制文件来执行nginx-vts-exporter程序
nohup ./nginx-vts-exporter -nginx.scrape_uri http://10.10.xx.xx:80/status/format/json &
nginx-vts-exporter的监听端口是9913
也可以使用systemctl管理nginx-vts-exporter进程。
[root@localhost nginx-vts-exporter]
[Unit]
Description=prometheus_nginx_vts
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri http://10.10.xx.xx:80/status/format/json
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@localhost nginx-vts-exporter]# systemctl daemon-reload
[root@localhost nginx-vts-exporter]# systemctl enable nginx_vts_exporter
[root@localhost nginx-vts-exporter]# systemctl start nginx_vts_exporter
[root@localhost nginx-vts-exporter]# systemctl status nginx_vts_exporter
● nginx_vts_exporter.service - prometheus_nginx_vts
Loaded: loaded (/usr/lib/systemd/system/nginx_vts_exporter.service; disabled; vendor preset: disabled)
Active: active (running) since Fri xxxx-xx-xx xx:xx:xx EDT; 4 days ago
Main PID: 90274 (nginx-vts-expor)
CGroup: /system.slice/nginx_vts_exporter.service
└─90274 /usr/local/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri http://10.10.xx.xx:80/status/format/json
4.修改prometheus-cfg.yaml文件
添加如下job:
- job_name: 'nginx'
scrape_interval: 5s
static_configs:
- targets: ['192.168.124.16:9913']
kubectl apply -f prometheus-cfg.yaml
kubectl delete -f prometheus-deploy.yaml
kubectl apply -f prometheus-deploy.yaml
#注意: - targets: [‘10.10.xx.xx:9913’]这个ip地址是nginx-vts-exporter程序所在机器的ip地址
5.在grafana界面导入nginx json文件
|