Prometheus 和 Grafana 通过nginx-exporter监控nginx的详细步骤
作者:北京秃子运维
在生产环境下,您已经部署了 Prometheus 和 Grafana,并希望通过它们来监控另一台 Ubuntu 20.04 上的 Nginx 服务。以下是配置步骤:
1. 安装和配置 nginx-exporter (Nginx 的 Prometheus 导出器)
nginx-exporter
是 Prometheus 用来从 Nginx 收集指标的组件。
安装步骤:
1.在目标 Ubuntu 20.04 服务器上安装 nginx-exporter
:
- 您可以使用官方的 Go 程序编译,或者直接下载预编译的二进制文件:
wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v0.10.0/nginx-prometheus-exporter_0.10.0_linux_amd64.tar.gz tar -xzvf nginx-prometheus-exporter_0.10.0_linux_amd64.tar.gz sudo mv nginx-prometheus-exporter /usr/local/bin/
2.配置 nginx-exporter
:
- 假设您的 Nginx 的状态页在
http://localhost:8080/status
(这个 URL 需要在 Nginx 配置中开启并允许 Prometheus 访问),启动nginx-exporter
:
nginx-prometheus-exporter -nginx.scrape-uri=http://localhost:8080/status
3.配置为服务(可选):
- 为了保证
nginx-exporter
能在系统重启后自动启动,您可以将其配置为系统服务:
sudo tee /etc/systemd/system/nginx-prometheus-exporter.service > /dev/null <<EOL [Unit] Description=Nginx Prometheus Exporter After=network.target [Service] User=nobody ExecStart=/usr/local/bin/nginx-prometheus-exporter -nginx.scrape-uri=http://localhost:8080/status Restart=always [Install] WantedBy=multi-user.target EOL sudo systemctl daemon-reload sudo systemctl start nginx-prometheus-exporter sudo systemctl enable nginx-prometheus-exporter
2. 配置 Prometheus 来抓取 Nginx 的指标
在 Prometheus 的配置文件中(通常为 prometheus.yml
),添加 Nginx 的目标:
scrape_configs: - job_name: 'nginx' static_configs: - targets: ['<Nginx_Server_IP>:9113']
- 这里
<Nginx_Server_IP>
是您 Ubuntu 服务器的 IP 地址。 9113
是nginx-exporter
默认暴露的端口。
3. 在 Grafana 中创建 Nginx 的仪表盘
1.进入 Grafana,添加 Prometheus 数据源。
2.导入 Nginx 的现有仪表盘模板或创建自定义仪表盘:
- 您可以在 Grafana 官方模板库中找到 Nginx 的仪表盘模板(例如,Dashboard ID:11199 )。
3.设置数据源为您在 Prometheus 中配置的 Nginx 监控源,保存并应用。
4. 验证配置
- 确保在 Grafana 中能看到 Nginx 的相关监控数据。如果没有数据,检查以下内容:
- Nginx 状态页是否可以被
nginx-exporter
访问。 - Prometheus 是否可以正确抓取
nginx-exporter
的数据。 - Grafana 中的数据源配置是否正确。
- Nginx 状态页是否可以被
5. 其他优化和安全设置
- 您可以在生产环境中考虑使用认证或限制 IP 来保护 Nginx 状态页。
- 优化 Prometheus 抓取间隔,避免对服务器造成过大压力。
通过以上步骤,您应该能够成功在生产环境下使用 Prometheus 和 Grafana 监控 Nginx。
好的,下面我会具体举例说明如何配置 Nginx 的状态页并允许 Prometheus 访问,以便启动 nginx-exporter
。
1. 配置 Nginx 的状态页
首先,您需要在 Nginx 中启用状态页。可以通过在 Nginx 配置文件中添加 stub_status
模块来实现。
例子:配置 Nginx 的状态页
- 打开 Nginx 的主配置文件,通常位于
/etc/nginx/nginx.conf
或者/etc/nginx/sites-available/default
。 - 在配置文件中添加一个新的 location 块,用于暴露 Nginx 的状态信息。假设您要在
localhost:8080/status
暴露状态页,配置如下:
server { listen 8080; location /status { stub_status; allow 127.0.0.1; # 仅允许本地访问 deny all; # 拒绝其他所有访问 } }
stub_status
指令启用 Nginx 的基本状态信息。allow 127.0.0.1; deny all;
配置限制只有本地可以访问状态页,您可以根据需要修改允许访问的 IP。
3.保存配置文件后,重新加载 Nginx 服务以应用配置:
sudo systemctl reload nginx
4.测试配置是否生效,访问 http://localhost:8080/status
:
curl http://localhost:8080/status
预期输出应类似于:
Active connections: 1 server accepts handled requests 10 10 10 Reading: 0 Writing: 1 Waiting: 0
2. 启动 nginx-exporter
配置好 Nginx 的状态页后,接下来就是启动 nginx-exporter
。
例子:启动 nginx-exporter
假设您的 nginx-exporter
已经安装在 /usr/local/bin/
路径下,可以通过以下命令启动:
nginx-prometheus-exporter -nginx.scrape-uri=http://localhost:8080/status
这个命令告诉 nginx-exporter
从 http://localhost:8080/status
获取 Nginx 的状态信息并转换为 Prometheus 可识别的格式。
配置 nginx-exporter
为系统服务(可选)
为了确保 nginx-exporter
在系统重启后自动运行,可以将其配置为系统服务:
1.创建一个新的 systemd 服务文件:
sudo nano /etc/systemd/system/nginx-prometheus-exporter.service
2.将以下内容复制到服务文件中:
[Unit] Description=Nginx Prometheus Exporter After=network.target [Service] User=nobody ExecStart=/usr/local/bin/nginx-prometheus-exporter -nginx.scrape-uri=http://localhost:8080/status Restart=always [Install] WantedBy=multi-user.target
3.保存并退出编辑器。
4.重新加载 systemd 并启动 nginx-exporter 服务:
sudo systemctl daemon-reload sudo systemctl start nginx-prometheus-exporter sudo systemctl enable nginx-prometheus-exporter
3. 验证 nginx-exporter 工作情况
您可以通过访问 http://<Nginx_Server_IP>:9113/metrics
来检查 nginx-exporter
是否正常工作。访问时应看到 Prometheus 格式的指标数据。
通过以上步骤,您的 nginx-exporter
应该已经正确配置并在工作了,Prometheus 也可以开始抓取 Nginx 的监控数据了。
到此这篇关于Prometheus 和 Grafana 通过nginx-exporter监控nginx的文章就介绍到这了,更多相关Prometheus 和 Grafana 监控nginx内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!