插件窝 干货文章 zabbix如何配置nginx监控

zabbix如何配置nginx监控

Nginx Zabbix 监控 UserParameter 295    来源:    2025-04-26

Zabbix配置Nginx监控指南

一、准备工作

  1. 确保Zabbix Server和Zabbix Agent已正确安装
  2. Nginx服务器已安装并运行
  3. 确保Zabbix Agent可以访问Nginx状态信息

二、配置Nginx状态模块

  1. 启用Nginx状态模块

    server {
       listen 8080;
       server_name localhost;
    
       location /nginx_status {
           stub_status on;
           access_log off;
           allow 127.0.0.1;  # 允许Zabbix Agent IP
           deny all;
       }
    }
    
  2. 重新加载Nginx配置

    nginx -s reload
    
  3. 测试状态页面是否正常工作

    curl http://localhost:8080/nginx_status
    

    正常输出应类似:

    Active connections: 1 
    server accepts handled requests
    10 10 20 
    Reading: 0 Writing: 1 Waiting: 0 
    

三、配置Zabbix Agent

  1. 编辑Zabbix Agent配置文件

    vim /etc/zabbix/zabbix_agentd.conf
    
  2. 添加以下内容:

    UserParameter=nginx.active[*],curl -s http://$1:$2/nginx_status | awk '/Active connections/ {print $3}'
    UserParameter=nginx.accepts[*],curl -s http://$1:$2/nginx_status | awk 'NR==3 {print $1}'
    UserParameter=nginx.handled[*],curl -s http://$1:$2/nginx_status | awk 'NR==3 {print $2}'
    UserParameter=nginx.requests[*],curl -s http://$1:$2/nginx_status | awk 'NR==3 {print $3}'
    UserParameter=nginx.reading[*],curl -s http://$1:$2/nginx_status | awk '/Reading/ {print $2}'
    UserParameter=nginx.writing[*],curl -s http://$1:$2/nginx_status | awk '/Reading/ {print $4}'
    UserParameter=nginx.waiting[*],curl -s http://$1:$2/nginx_status | awk '/Reading/ {print $6}'
    
  3. 重启Zabbix Agent

    systemctl restart zabbix-agent
    
  4. 在Zabbix Server上测试Agent是否正常工作

    zabbix_get -s <nginx_server_ip> -k "nginx.active[127.0.0.1,8080]"
    

四、Zabbix Web界面配置

  1. 创建主机

    • 进入"Configuration" → "Hosts" → "Create host"
    • 填写主机名称和可见名称
    • 添加主机到适当的组
  2. 添加监控项

    • 进入"Configuration" → "Hosts" → 选择主机 → "Items" → "Create item"
    • 添加以下监控项:
      • 活跃连接数: nginx.active[{HOST.CONN},8080]
      • 已接受连接数: nginx.accepts[{HOST.CONN},8080]
      • 已处理连接数: nginx.handled[{HOST.CONN},8080]
      • 总请求数: nginx.requests[{HOST.CONN},8080]
      • 读取状态连接数: nginx.reading[{HOST.CONN},8080]
      • 写入状态连接数: nginx.writing[{HOST.CONN},8080]
      • 等待状态连接数: nginx.waiting[{HOST.CONN},8080]
  3. 创建图形

    • 进入"Configuration" → "Hosts" → 选择主机 → "Graphs" → "Create graph"
    • 添加相关监控项到图形中
  4. 创建触发器(可选)

    • 进入"Configuration" → "Hosts" → 选择主机 → "Triggers" → "Create trigger"
    • 例如:当活跃连接数超过阈值时触发告警

五、使用Zabbix模板(推荐)

  1. 导入Nginx监控模板(可从Zabbix官网下载或使用社区模板)

    • 进入"Configuration" → "Templates" → "Import"
    • 上传模板XML文件
  2. 将模板关联到主机

    • 编辑主机 → "Templates"标签 → 添加Nginx模板

六、高级监控选项

  1. 监控Nginx进程状态

    UserParameter=nginx.process,ps aux | grep nginx | grep -v grep | wc -l
    
  2. 监控Nginx端口状态

    UserParameter=nginx.port,netstat -tlnp | grep nginx | wc -l
    
  3. 监控Nginx错误日志(需配置日志监控)

七、注意事项

  1. 确保防火墙允许Zabbix Server访问Agent端口(默认10050)
  2. 对于生产环境,建议使用认证保护Nginx状态页面
  3. 定期检查监控项是否正常工作
  4. 根据实际负载调整触发器阈值

通过以上步骤,您可以在Zabbix中实现对Nginx的全面监控,包括连接数、请求处理状态等关键指标。