监控Nginx服务器状态是确保Web服务健康运行的重要环节。以下是在Zabbix上监控Nginx的详细步骤:
首先需要在Nginx上启用状态模块,以便Zabbix可以获取监控数据。
编辑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
访问http://your-nginx-server/nginx_status
,应该能看到类似以下输出:
Active connections: 1
server accepts handled requests
10 10 20
Reading: 0 Writing: 1 Waiting: 0
在Nginx服务器上安装Zabbix Agent:
# Ubuntu/Debian
sudo apt install zabbix-agent
# CentOS/RHEL
sudo yum install zabbix-agent
配置Zabbix Agent:
编辑/etc/zabbix/zabbix_agentd.conf
:
Server=your-zabbix-server-ip
ServerActive=your-zabbix-server-ip
Hostname=your-nginx-server-hostname
创建自定义监控项:
在/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}'
重启Zabbix Agent:
sudo systemctl restart zabbix-agent
web.page.get[localhost,nginx_status,80]
Zabbix官方提供了Nginx监控模板,可以简化配置:
如果需要监控更多指标,可以添加自定义监控项:
nginx.active
创建图形:
创建触发器:
{your-nginx-host:nginx.active.last()}>100
监控Nginx错误日志:
/var/log/nginx/error.log
监控SSL证书过期:
web.certificate.get
键监控SSL证书状态监控响应时间:
web.test
功能监控关键页面的响应时间通过以上步骤,您可以在Zabbix上全面监控Nginx服务器的运行状态,及时发现并解决问题。