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 地址。
  • 9113nginx-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 中的数据源配置是否正确。

5. 其他优化和安全设置

  • 您可以在生产环境中考虑使用认证或限制 IP 来保护 Nginx 状态页。
  • 优化 Prometheus 抓取间隔,避免对服务器造成过大压力。

通过以上步骤,您应该能够成功在生产环境下使用 Prometheus 和 Grafana 监控 Nginx。

好的,下面我会具体举例说明如何配置 Nginx 的状态页并允许 Prometheus 访问,以便启动 nginx-exporter

1. 配置 Nginx 的状态页

首先,您需要在 Nginx 中启用状态页。可以通过在 Nginx 配置文件中添加 stub_status 模块来实现。

例子:配置 Nginx 的状态页
  1. 打开 Nginx 的主配置文件,通常位于 /etc/nginx/nginx.conf 或者 /etc/nginx/sites-available/default

  2. 在配置文件中添加一个新的 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-exporterhttp://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 的监控数据了。
图标id:111

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值