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

image-1697426398748

如果检测的结果是还没加入的话,则需要重新编译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
image-1697426515423

打赏
支付宝 微信
上一篇 下一篇