zabbix來監控nginx服務
1.nginx服務是否在執行
2.請求數量
yum install epel-release -y
yum install nginx -y
[root@nginx-mysqldb nginx]# service nginx start
Redirecting to /bin/systemctl start nginx.service
[root@nginx-mysqldb nginx]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 40552 root 8u IPv4 316071 0t0 TCP *:http (LISTEN)
nginx 40552 root 9u IPv6 316072 0t0 TCP *:http (LISTEN)
nginx 40553 nginx 8u IPv4 316071 0t0 TCP *:http (LISTEN)
nginx 40553 nginx 9u IPv6 316072 0t0 TCP *:http (LISTEN)
nginx 40555 nginx 8u IPv4 316071 0t0 TCP *:http (LISTEN)
nginx 40555 nginx 9u IPv6 316072 0t0 TCP *:http (LISTEN)
[root@nginx-mysqldb nginx]#
[root@zabbix-client-1 zabbix_agentd.d]# cat /etc/nginx/nginx.conf
#開啓nginx本身的統計功能
location /nginx_status {
stub_status on;
}
service nginx restart
5.web方式存取,檢視效果
http://192.168.1.xxx/nginx_status
輸出效果如下所示:
Active connections: 2
server accepts handled requests
18 18 23
Reading: 0 Writing: 1 Waiting: 1
Active connections Nginx正處理的活動鏈接數個數;重要
accepts Nginx啓動到現在共接受了多少個連線。
handled Nginx啓動到現在共處理了多少個連線。
requests Nginx總共處理了請求次數。
Reading Nginx讀取到用戶端的 Header 資訊數。
Writing Nginx返回給用戶端的 Header 資訊數。
Waiting Nginx已經處理完正在等候下一次請求指令的駐留鏈接,開啓。
Keep-alive的情況下,Waiting這個值等於active-(reading + writing)。
請求丟失數=(握手數-連線數)可以看出,本次狀態顯示沒有丟失請求。
提供以下狀態資訊:
Active connections
當前活動的用戶端連線數,包括Waiting連線數。
accepts
接受的用戶端連線總數。
handled
已處理的連線總數。通常,參數值與accepts 除非達到某些資源限制(例如, worker_connections限制)相同。
requests
用戶端請求總數。
Reading
nginx正在讀取請求檔頭的當前連線數。
Writing
nginx正在將響應寫回到用戶端的當前連線數。
Waiting
當前等待請求的空閒用戶端連線數
[root@zabbix-client-1 zabbix_agentd.d]# cat userparameter_nginx.conf
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx.sh $1
[root@zabbix-client-1 zabbix_agentd.d]#
[root@zabbix-client-1 zabbix_agentd.d]# cat nginx.sh
HOST="192.168.1.141"
PORT="80"
function ping {
/sbin/pidof nginx | wc -l
}
function active {
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
case $1 in
active)
active
;;
reading)
reading
;;
writing)
writing
;;
waiting)
waiting
;;
accepts)
accepts
;;
ping)
ping
;;
handled)
handled
;;
requests)
requests
;;
esac
[root@zabbix-client-1 zabbix_agentd.d]#
[root@nginx-mysqldb zabbix_agentd.d]# chmod +x nginx.sh
[root@nginx-mysqldb zabbix_agentd.d]# service zabbix-agent restart
Redirecting to /bin/systemctl restart zabbix-agent.service
[root@nginx-mysqldb zabbix_agentd.d]#
[root@zabbix-server-1 ~]# zabbix_get -s 192.168.111.133 -p 10050 -k nginx.status[active]
1
[root@zabbix-server-1 ~]# zabbix_get -s 192.168.111.133 -p 10050 -k nginx.status[active]
3
[root@zabbix-server-1 ~]#
自己建立應用集,新增監控項,然後新增圖形,出圖
nginx.status[active]
nginx.status[reading]
nginx.status[writing]
nginx.status[waiting]
nginx.status[accepts]
nginx.status[handled]
nginx.status[requests]
建立一個監控項,新增圖形
可以將多個監控項新增到一個圖形裡,這樣也比較好,可以對比的看效果
新增一個觸發器:
一旦nginx服務down,馬上告警
[root@nginx-mysqldb zabbix_agentd.d]# vim nginx_v2.sh
HOST="192.168.1.141"
PORT="80"
case $1 in
active)
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
;;
reading)
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
;;
writing)
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
;;
waiting)
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
;;
accepts)
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
;;
ping)
/sbin/pidof nginx | wc -w
;;
handled)
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
;;
requests)
/usr/bin/curl --insecure "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
;;
esac