zabbix配置監(jiān)控nginx,nginx安裝的時候必須編譯安裝zabbix模塊
需要使用zabbix監(jiān)控nginx搓茬,首先nginx端需要配置ngx_status模塊竿滨,具體如下
1. 啟用nginx status配置
在默認主機里面加上location或者你希望能訪問到的主機里面。
server{
listen*:80 default_server;
server_name_;
location/ngx_status
{
stub_status on;
access_log off;
#allow 127.0.0.1;
#deny all;
}
}
2. 重啟nginx
請依照你的環(huán)境重啟你的nginx
# service nginx restart
3. 打開status頁面
# curl http://127.0.0.1/ngx_status
? Active connections:11921
? server accepts handled requests
? 119891198911991
? Reading:0 Writing:7 Waiting:42
4. nginx status詳解
? active connections – 活躍的連接數(shù)量
? server accepts handled requests — 總共處理了11989個連接 , 成功創(chuàng)建11989次握手, 總共處理了11991個請求
? reading — 讀取客戶端的連接數(shù).
? writing — 響應數(shù)據(jù)到客戶端的數(shù)量
? waiting — 開啟 keep-alive 的情況下,這個值等于 active – (reading+writing), 意思就是 Nginx 已經(jīng)處理完正在等候下一次請求指令的駐留連接
nginx status信息
# curl http://127.0.0.1/ngx_status
Active connections:11921
server accepts handled requests
119891198911991
Reading:0Writing:7Waiting:42
以上為nginx性能計數(shù)徒役,我們除了監(jiān)控以上數(shù)據(jù)孽尽,還需要監(jiān)控nginx進程狀態(tài),并且配置觸發(fā)器忧勿!
二杉女、zabbix客戶端配置
編寫客戶端腳本
ngx_status.sh
#!/bin/bash
# DateTime: 2017-5-15
# AUTHOR:joj
# Description:zabbix監(jiān)控nginx性能以及進程狀態(tài)
# Note:此腳本需要配置在被監(jiān)控端,否則ping檢測將會得到不符合預期的結果
#設置主機地址和端口號
HOST="127.0.0.1"
PORT="80"
case $1 in
active)
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}';;
accepts)
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}';;
handled)
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}';;
requests)
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}';;
reading)
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}';;
writing)
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}';;
waiting)
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}';;
ping)
/sbin/pidof nginx | wc -l ;;
*)
echo "Usage: $0 { active | accepts | handled | requests | reading | writing | waiting | ping}" ;;
esac
將自定義的UserParameter加入配置文件鸳吸,然后重啟agentd熏挎,如下:
#cat /usr/local/zabbix-3.0.0/etc/zabbix_agentd.conf | grep nginx
UserParameter=nginx.status[*],/usr/local/zabbix-3.0.0/scripts/ngx_status.sh$1
# killall zabbix_agentd ? ?#殺死zabbix客戶端
#?/usr/local/zabbix-3.0.0/sbin/zabbix_agentd ?#重新啟動zabbix客戶端
zabbix_get獲取數(shù)據(jù)(測試是否能獲取數(shù)據(jù))
此步驟可以跳過,但是最好是測試一下晌砾,因為通過此命令我們可以檢測配置是否正確
#?/usr/local/zabbix-3.0.0/bin/zabbix_get -s 10.10.1.121 -k 'nginx.status[accepts]'
9570756
#?/usr/local/zabbix-3.0.0/bin/zabbix_get -s 10.10.1.121 -k 'nginx.status[ping]'
在zabbix server服務器上執(zhí)行如上命令, 10.10.1.121為agentd機器
zabbix web端配置
導入Template App NGINX模板
模板我已經(jīng)寫好了坎拐,將會放到附件中。
Link NGINX模板
到了最后一個階段,登陸zabbix管理端哼勇,link模板到nginx服務器:configuration->hosts->點擊nginx所在服務器->點擊template->Link new templates輸入"Template App NGINX"->Add->最后點擊update都伪。
監(jiān)控效果
zabbix-nginx-status