prometheus监控nginx的两种方式
作者:搁潜
Nginx监控搭建介绍说明
文章介绍两种不同的Nginx监控方法,第一种是nginx自带的tub_status模块进行监控,第二种是用vts监控工具进行监控。都是基于prometheus、grafana结合第三方模块或监控工具搭建,监控Nginx中间件的使用情况 。
方法一、tub_status模块监控
- 下载 https://github.com/nginxinc/nginx-prometheus-exporter/releases
- 解压 tar -zxvf
- 开启nginx_stub_status模块
开源nginx提供了一个简单页面用于展示状态数据,该页面由tub_status模块提供,如果已在本地服务安装nginx,进入nginx/sbin目录下执行
./nginx -V 2>&1 | grep -o with-http_stub_status_module
- 如果在终端输出with-http_stub_status_module,说明nginx已启用tub_status模块;
yum安装的是二进制文件,意思是已经编译好的nginx,它只有配置文件和二进制文件,没有源代码,所以你想加第三方模块,只能去nginx的官方网站:http://nginx.org 下载源代码,使用**–with-http_stub_status_module**参数从源码重新编译安装;
./configure --prefix=/DATA/soft/nginx/ --with-http_stub_status_module --add-module=nginx-module-vts make sudo make install
- 确认stub_status模块启动之后,修改nginx的配置文件指定status页面的URL;
server { listen 80; #端口可以自己重新起一个,配置文件要在外层nginx.conf中添加 location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } }
- 执行命令启动nginx-prometheus -exporter ;
nohup ./nginx-prometheus-exporter -nginx.scrape-uri http://127.0.0.1:80/nginx_status &
启动成功如图所示
- prometheus.yml文件添加被监控的机器节点;
- job_name: 'nginx_status_module' # 采集nginx的指标 metrics_path: '/metrics' # 拉取指标的接口路径 scrape_interval: 10s # 采集指标的间隔周期 static_configs: - targets: ['127.0.0.1:9113'] # nginx-prometheus-exporter服务的ip和端口
重新启动prometheus后,导入grafan模板;
模板链接:https://grafana.com/grafana/dashboards/12708
方法二、vts工具监控
- vts模块下载,链接:https://github.com/vozlt/nginx-module-vts
- tar -zxvf 解压nginx-module-vts,监控模块放至nginx目录下
- nginx源码文件重新编译安装
./configure --prefix=/DATA/soft/nginx/ --with-http_stub_status_module --add-module=nginx-module-vts make sudo make install
- 修改nginx配置
#nginx配置server中添加: location /status { vhost_traffic_status_display; vhost_traffic_status_display_format html; } } #http中添加: vhost_traffic_status_zone; vhost_traffic_status_filter_by_host on;
- 添加系统变量,启动nginx
vi /usr/lib/systemd/system/nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/DATA/soft/nginx/sbin/nginx ExecReload=DATA/soft/nginx/sbin/nginx -s reload ExecStop=DATA/soft/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target
# 完成启动: systemctl enable nginx.service systemctl start nginx.service systemctl status nginx.service
启动nginx后访问http://locahost/status
- 安装启动nginx-vts-exporter
下载链接:https://github.com/hnlq715/nginx-vts-exporter
tar -zxvf解压
chmod +x /usr/local/nginx_exporter/bin/nginx-vts-exporter -R #整个路径添加权限
- nginx-vts-exporter设置系统变量
vim /usr/lib/systemd/system/nginx_exporter.service [Unit] Description=nginx_vts_exporter After=network.target [Service] Type=simple ExecStart=/usr/local/nginx_exporter/bin/nginx-vts-exporter -nginx.scrape_uri http://192.168.62.75/status/format/json #ip替换成需要监控的ip Restart=on-failure [Install] WantedBy=multi-user.target
启动nginx_exporter
systemctl enable nginx_exporter.service systemctl status nginx_exporter.service systemctl start nginx_exporter.service
- 修改prometheus配置文件并重启
netstat -anlp | grep nginx-vts #查看nginx_vts_exporter启动的端口
- job_name: 'nginx' static_configs: - targets: ['127.0.0.1:9913'] #9913为工具启动的端口 labels: instance: nginx
grafana导入nginx-vts-exporter监控模板
模板链接:https://grafana.com/grafana/dashboards/2949
以上就是prometheus监控nginx的两种方式的详细内容,更多关于prometheus监控nginx的资料请关注脚本之家其它相关文章!