监控nginx 状态
nginx 编译时必须加入–with-http_stub_status_module 这个模块
一、修改nginx 配置文件:(在zabbix客户端上操作)
vim /usr/local/nginx/conf/nginx.conf
location /nginx_stat { stub_status on; access_log off; allow 192.168.0.0/16; allow 127.0.0.1; deny all; }
保存退出。重启nginx
Active connections: 对后端发起的活动连接数.
Server accepts handled requests: Nginx总共处理了91312个连接,成功创建61312次握手(证明中间没有失败的),总共处理了226个请求.
Reading: Nginx 读取到客户端的Header信息数.
Writing: Nginx 返回给客户端的Header信息数.
Waiting: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是Nginx已经处理完成,正在等候下一次请求指令的驻留连接。
二、编写监控脚本: (在zabbix客户端上操作)
mkdir -p /usr/local/zabbix/script && cd /usr/local/zabbix/script
vim nginx_status.sh
#! /bin/bash #date: 2019-05-05 # Description:zabbix监控nginx性能以及进程状态 # Note:此脚本需要配置在被监控端 HOST="192.168.189.73" #如果你的nginx 不是80端口,需要添加一个端口变量。 # 检测nginx进程是否存在 function ping { /sbin/pidof nginx | wc -l } # 检测nginx性能 function active { /usr/bin/curl "http://$HOST/nginx_stat/" 2>/dev/null| grep 'Active' | awk '{print $NF}' } function reading { /usr/bin/curl "http://$HOST/nginx_stat/" 2>/dev/null| grep 'Reading' | awk '{print $2}' } function writing { /usr/bin/curl "http://$HOST/nginx_stat/" 2>/dev/null| grep 'Writing' | awk '{print $4}' } function waiting { /usr/bin/curl "http://$HOST/nginx_stat/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' } function accepts { /usr/bin/curl "http://$HOST/nginx_stat/" 2>/dev/null| awk NR==3 | awk '{print $1}' } function handled { /usr/bin/curl "http://$HOST/nginx_stat/" 2>/dev/null| awk NR==3 | awk '{print $2}' } function requests { /usr/bin/curl "http://$HOST/nginx_stat/" 2>/dev/null| awk NR==3 | awk '{print $3}' } # 执行function $1 ++++++++++++++++++++++++++
chmod +x nginx_status.sh
三、修改zabbix客户端的配置文件: (在zabbix客户端上操作)
cd /usr/local/zabbix/etc/zabbix_agentd.conf.d
vim nginx_status.conf
保存,退出,重启zabbix客户端.
pkill zabbix_agentd
zabbix_agentd
四、测试 (在zabbix服务器上操作)
五、在zabbix WEB页面添加nginx 监控模版,并添加监控项。
添加监控项:
添加其他的监控项:
监控nginx 日志:创建项
为监控主机(web01 189.73),添加模版
查看数据:
为nginx 模版添加图形:
创建触发器:(nginx 进程挂掉后,触发,动作,邮件报警)
由于先前创建的动作是应用是所有触发器的,所以这里可以不用再单独创建动作。也可以单独为nginx 触发,创建一个动作。
测试触发器:停止nginx
重新启动nginx