
1,確定監(jiān)控內容
1)配置nginx
在編譯nginx時加上--with-http_stub_status_module選項
編輯配置文件
[root@VM_0_2_centos ~]# vim /usr/local/nginx/conf/nginx.conf
location /status {
? ? ? ? ? ? stub_status on;
? ? ? ? }
2)查看
[root@VM_0_2_centos ~]# curl http://127.0.0.1/status
Active connections: 1
server accepts handled requests
42257 42257 43019
Reading: 0 Writing: 1 Waiting: 0
Active connections:當前活動的連接數量。
Accepts:已經接受客戶端的連接總數量。
Handled:已經處理客戶端的連接總數量。
(一般與accepts一致,除非服務器限制了連接數量)。
Requests:客戶端發(fā)送的請求數量。
Reading:當前服務器正在讀取客戶端請求頭的數量。
Writing:當前服務器正在寫響應信息的數量。
Waiting:當前多少客戶端在等待服務器的響應。
2,編寫監(jiān)控腳本
1)編寫
[root@VM_0_2_centos ~]# vim /shell/chk_nginx_status.sh
#! /bin/bash
# Description:zabbix監(jiān)控nginx性能以及進程狀態(tài)
# Note:此腳本需要配置在被監(jiān)控端,否則ping檢測將會得到不符合預期的結果
#主機ip或者域名
HOST="jluocc.cn"
#nginx開放端口
PORT="80"
case $1 in
ping)
? ? /sbin/pidof nginx | wc -l;;
active)
? ? /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}';;
reading)
? ? /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}' ;;
writing)
? ? /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}';;
waiting)
? ? /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}';;
accepts)
? ? /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $1}';;
handled)
? ? /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $2}';;
requests)
? ? /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $3}';;
*)
? ? echo 'ping|active|reading|writing|waiting|accepts|handled|requests'
esac
2)授權
[root@VM_0_2_centos ~]# chmod +x /shell/chk_nginx_status.sh
3)測試
[root@VM_0_2_centos ~]# /shell/chk_nginx_status.sh active
1
3,zabbix_agent配置
1)查看
[root@VM_0_2_centos ~]# cat /usr/local/zabbix/etc/zabbix_agentd.conf | grep zabbix_agentd.conf.d
# Include=/usr/local/etc/zabbix_agentd.conf.d/
# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf? ?#開啟這一行
2)編輯監(jiān)控nginx配置文件
[root@VM_0_2_centos ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_nginx.conf
UserParameter=nginx.status[*],/shell/chk_nginx_status.sh $1
3)重啟zabbix_agent
[root@VM_0_2_centos ~]# /etc/init.d/zabbix_agentd restart
4)測試
[root@VM_0_2_centos ~]# /usr/local/zabbix/bin/zabbix_get -s 172.16.0.2 -k nginx.status[active]
1
[root@VM_0_2_centos ~]# /usr/local/zabbix/bin/zabbix_get -s 172.16.0.2 -k nginx.status[reading]
0
4,zabbix_server端監(jiān)控nginx
1)添加主機

2)添加監(jiān)控模板


3)創(chuàng)建應用級


4)創(chuàng)建監(jiān)控項

以一個accepts為例

創(chuàng)建后如下圖

5)創(chuàng)建圖形

5,查看監(jiān)控項



6,創(chuàng)建聚合圖形




最終合成

總結
到此監(jiān)控nginx已經基本完成,觸發(fā)告警下一節(jié)持續(xù)更新中,關注我
結束語:
更多精彩內容持續(xù)更新中,關注我微信公眾號,有你更精彩。
