一、 nginx-prometheus-exporter
1 nginx 配置
1.1 Nginx 模块支持
nginx 安装的时候需要有 nginx 的状态模块: stub_status
可通过如下命令检查
nginx -V 2>&1 | grep -o with-http_stub_status_module
1.2 Nginx 配置文件配置
添加如下配置到自己 nginx 的配置文件中
server {
listen 9010;
location /metrics {
stub_status on;
access_log off;
error_log off;
allow 127.0.0.1;
deny all;
}
}
2 部署 nginx-prometheus-exporter
2.1 二进制方式部署
需要在每台 nginx 所在的服务器上部署一个 nginx-prometheus-exporter
github地址 https://github.com/nginxinc/nginx-prometheus-exporter
下载解压
curl -o nginx-prometheus-expoter.zip -L https://github.com/nginxinc/nginx-prometheus-exporter/archive/refs/heads/main.zip
unzip nginx-prometheus-expoter.zip
构建
需要有 go 环境。 部署 go 环境 请参考
之后运行如下相关命令进行构建
cd nginx-prometheus-exporter-main
CGO_ENABLED=0 GOOS=linux GOARCH=$TARGETARCH go build -trimpath -a -ldflags "-s -w -X main.version=${VERSION}" -o nginx-prometheus-exporter .
构建成功后,在当前目录下会有二进制可执行文件 nginx-prometheus-exporter
2.1.2 配置 systemd
nginx-exporter.service
[Unit]
Description=NGINX Prometheus Exporter
Requires=nginx_exporter.socket
[Service]
User=nginx_exporter
ExecStart=/usr/local/bin/nginx-prometheus-exporter -nginx.scrape-uri="http://127.0.0.1:8080/stub_status"
[Install]
WantedBy=multi-user.target
2.1.3 获取 Nginx 指标数据
可以通过如下方式获取到 Nginx的指标数据
nginx-prometheus-exporter -nginx.scrape-uri=http://<nginx>:8080/metrics
其中<nginx>是IP地址/DNS名称,通过该名称可以使用nginx
也可以使用更快速的 UNIX 套接字
请运行:
nginx-prometheus-exporter -nginx.scrape-uri=unix:<nginx>:/metrics -web.listen-address=unix:/path/to/socket.sock
其中<nginx>是unix域套接字的路径,通过该套接字可以获得nginx运行状态。
2.1.4 添加 prometheus 的配置
- job_name: "nginx"
scrape_interval: 5s
static_configs:
- targets:
- "<nginx-prometheus-exporter 的IP>:9113"
labels:
group: 'nginxs'