prometheus 监控nginx
时间: 2025-01-07 11:12:52 浏览: 6
### 如何使用 Prometheus 监控 Nginx 的最佳实践
#### 启用 NGINX 的 stub_status 模块
为了使 Prometheus 能够抓取 NGINX 的性能数据,需确保已启用 `ngx_http_stub_status_module` 模块。这可以通过编译时加入参数 `--with-http_stub_status_module` 来实现[^2]。
#### 安装并配置 NGINX-Prometheus-Exporter
NGINX 自身并不直接向 Prometheus 提供指标端点;因此推荐部署专门的服务发现工具如 `nginx-prometheus-exporter` 。该组件会定期轮询 NGINX 并将其状态转换成 Prometheus 可理解的时间序列格式[^3]。
```bash
docker run --name nginx-exporter \
-v /path/to/nginx/status:/etc/nginx/conf.d/default.conf \
quay.io/prometheuscommunity/exporter:latest \
--nginx.scrape-uri=http://localhost/stub_status
```
上述命令假设本地存在一个名为 `/path/to/nginx/status` 的文件夹用于挂载包含 stub_status 配置的 conf 文件给容器内部读取。
#### 修改 NGINX 主机上的配置以暴露监控接口
编辑现有的 NGINX 配置,在 http 块内增加如下内容以便对外提供 stub status 接口:
```nginx
server {
listen 80;
server_name localhost;
location /stub_status {
stub_status on;
access_log off;
allow all; # 或者指定允许访问此页面的具体 IP 地址范围
}
}
```
重启 NGINX 让更改生效之后,就可以通过浏览器或其他 HTTP 工具测试新添加的状态页是否正常工作了。
#### 更新 Prometheus YAML 配置文件来采集目标
最后一步是在 Prometheus 中定义新的 scrape job ,指向之前启动好的 exporter 实例地址:
```yaml
scrape_configs:
- job_name: 'nginx'
static_configs:
- targets: ['<exporter-ip>:9113']
```
完成以上设置后,Prometheus 就可以定时拉取来自 NGINX 的统计数据,并存储起来等待进一步分析处理。
阅读全文