Prometheus监控Nginx有多种方式,这里记录的主要是通过nginx的tub_status模块集合nginx-prometheus-exporter进行监控。
一、Nginx开启http_stub_status_module模块
如果是干净的环境,还没安装nginx的话,在编译的时候需要加入–with-http_stub_status_module 表示开启http_stub_status_module模块,例如下面的编译命令:
./configure --prefix=/home/nginx --with-http_stub_status_module
说明:–prefix=/home/nginx表示安装到/home/nginx目录
如果是已经存在的Nginx,那么需要检测是否已经开启了http_stub_status_module模块,检测的命令如下:
/nginx -V 2>&1 | grep -o with-http_stub_status_module
如果检测的结果是还没加入的话,则需要重新编译Nginx,重新安装,具体如下:
./configure --prefix=/home/nginx --with-http_stub_status_module
make && make install
说明:重新编译安装的话,不会覆盖原来的配置信息。
二、Nginx开放一个监控端口
server {
listen 22222;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
添加上面配置信息之后,通过nginx -s reload 刷新一下。
三、下载并启动nginx-prometheus-exporter
下载地址: https://github.com/nginxinc/nginx-prometheus-exporter/releases
下载完成之后上传到服务器,并解压,例如
tar -zxvf nginx-prometheus-exporter_0.11.0_linux_amd64.tar.gz -C /home/prometheus/nginx-prometheus-exporter
解压完成之后,进入到对应的目录 ,然后通过下面命令进行启动
nohup ./nginx-prometheus-exporter -nginx.scrape-uri http://127.0.0.1:22222/nginx_status &
执行完成之后,可以通过cat nohup.out查看启动日志, 没有报错的话表示启动成功。
[root@C-cicc_172-16-1-52 nginx-prometheus-exporter]# cat nohup.out
NGINX Prometheus Exporter version=0.11.0 commit=e4a6810d4f0b776f7fde37fea1d84e4c7284b72a date=2022-09-07T21:09:51Z, dirty=false, arch=linux/amd64, go=go1.19
2023/10/16 10:31:07 Starting...
2023/10/16 10:31:07 Listening on :9113
2023/10/16 10:31:07 NGINX Prometheus Exporter has successfully started
四、配置prometheus
打开prometheus配置文件prometheus.yml,在scrape_configs下增加下面的配置信息,然后重启prometheus。
- job_name: 'nginx_status_module'
metrics_path: '/metrics'
scrape_interval: 10s
static_configs:
- targets: ['127.0.0.1:9113']
五、导入Grafana模板
https://grafana.com/grafana/dashboards/12708
打赏