Nginx监控搭建
- Nginx监控搭建介绍说明
- 方法一、tub_status模块监控
- 方法二、vts工具监控
Nginx监控搭建介绍说明
文章介绍两种不同的Nginx监控方法,第一种是nginx自带的tub_status模块进行监控,第二种是用vts监控工具进行监控。都是基于prometheus、grafana结合第三方模块或监控工具搭建,监控Nginx中间件的使用情况 。
方法一、tub_status模块监控
- 下载 https:///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 &
启动成功如图所示
7. 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:///vozlt/nginx-module-vts
- tar -zxvf 解压nginx-module-vts,监控模块放至nginx目录下
3. 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
6. 安装启动nginx-vts-exporter
下载链接:https:///hnlq715/nginx-vts-exporter
tar -zxvf解压
chmod +x /usr/local/nginx_exporter/bin/nginx-vts-exporter -R #整个路径添加权限
7. 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
8. 修改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