插件窝 干货文章 如何在Zabbix上监控Nginx

如何在Zabbix上监控Nginx

Nginx Zabbix 监控 userparameter 79    来源:    2025-04-03

在Zabbix上监控Nginx

监控Nginx服务器状态是确保Web服务健康运行的重要环节。以下是在Zabbix上监控Nginx的详细步骤:

1. 启用Nginx状态模块

首先需要在Nginx上启用状态模块,以便Zabbix可以获取监控数据。

配置Nginx状态页面

编辑Nginx配置文件(通常在/etc/nginx/nginx.conf/etc/nginx/sites-available/default):

server {
    listen 80;
    server_name localhost;

    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;    # 只允许本地访问
        allow 192.168.1.0/24; # 允许Zabbix服务器IP段
        deny all;
    }
}

重启Nginx使配置生效:

sudo systemctl restart nginx

2. 验证Nginx状态页面

访问http://your-nginx-server/nginx_status,应该能看到类似以下输出:

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

3. 在Zabbix服务器上配置监控

方法一:使用Zabbix Agent主动模式

  1. 在Nginx服务器上安装Zabbix Agent

    # Ubuntu/Debian
    sudo apt install zabbix-agent
    
    # CentOS/RHEL
    sudo yum install zabbix-agent
    
  2. 配置Zabbix Agent: 编辑/etc/zabbix/zabbix_agentd.conf

    Server=your-zabbix-server-ip
    ServerActive=your-zabbix-server-ip
    Hostname=your-nginx-server-hostname
    
  3. 创建自定义监控项: 在/etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf中添加:

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

    sudo systemctl restart zabbix-agent
    

方法二:使用Zabbix HTTP监控

  1. 在Zabbix前端,进入"Configuration" → "Hosts"
  2. 选择或创建Nginx主机
  3. 添加新的HTTP监控项:
    • Key: web.page.get[localhost,nginx_status,80]
    • Type: Zabbix agent
    • Update interval: 1m

4. 导入Nginx监控模板

Zabbix官方提供了Nginx监控模板,可以简化配置:

  1. 下载模板:Zabbix官方Nginx模板
  2. 在Zabbix前端,进入"Configuration" → "Templates"
  3. 点击"Import",上传下载的XML文件
  4. 将模板关联到Nginx主机

5. 创建自定义监控项(可选)

如果需要监控更多指标,可以添加自定义监控项:

  1. 进入"Configuration" → "Hosts",选择Nginx主机
  2. 点击"Items",然后"Create item"
  3. 配置监控项,例如:
    • Name: Nginx Active Connections
    • Key: nginx.active
    • Type: Zabbix agent
    • Type of information: Numeric (unsigned)
    • Update interval: 1m

6. 创建图形和触发器

  1. 创建图形

    • 进入"Configuration" → "Hosts",选择Nginx主机
    • 点击"Graphs",然后"Create graph"
    • 添加相关监控项(如活跃连接数、请求数等)
  2. 创建触发器

    • 进入"Configuration" → "Hosts",选择Nginx主机
    • 点击"Triggers",然后"Create trigger"
    • 例如,当活跃连接数超过阈值时触发告警: {your-nginx-host:nginx.active.last()}>100

7. 验证监控数据

  1. 进入"Monitoring" → "Latest data"
  2. 选择Nginx主机,查看收集到的数据
  3. 确认所有监控项都能正确获取数据

高级监控选项

  1. 监控Nginx错误日志

    • 使用Zabbix日志监控功能监控/var/log/nginx/error.log
    • 设置触发器检测特定错误模式
  2. 监控SSL证书过期

    • 使用Zabbix的web.certificate.get键监控SSL证书状态
  3. 监控响应时间

    • 使用Zabbix的web.test功能监控关键页面的响应时间

通过以上步骤,您可以在Zabbix上全面监控Nginx服务器的运行状态,及时发现并解决问题。