前言:
- 被監控端需要安裝好 Zabbix-agent 以及 NGINX (API)
- 本文為本人整理之筆記,如有侵權冒犯,請立即告知
新增組態模板 並將下面提供的檔案匯入
檔案下載:Template App NGINX
查看NGINX模組已被加入,並點擊進入「Template App NGINX」進入編輯
將需要被監控的機器加入「Template App NGINX」模組中
進入被監控端的nginx配置文件中加入下列配置
sudo vi /etc/nginx/conf.d/default.conf
#zabbix监控nginx配置 location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } |
sudo nginx -t
sudo nginx -s reload
編寫Zabbix-agent監控Script
sudo vi /etc/zabbix/zabbix_agentd.d/nginx_status.sh
#!/bin/bash #Script to fetch nginx statuses for monitoring systems #Author Tony HOST="127.0.0.1" PORT="80" function ping { #用於檢測nginx進程是否存在 /sbin/pidof nginx | wc -l } function active { #用於提取status中的active數值 /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}' } function reading { #用於提取status中的reading數值 /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}' } function writing { #用於提取status中的writing數值 /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}' } function waiting { #用於提取status中的waiting數值 /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' } function accepts { #用於提取status中的accepts數值 /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}' } function handled { #用於提取status中的handled數值 /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}' } function requests { #用於提取status中的request數值 /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}' } $1 #通過第一個位置參數的值来調用相應的函數 |
授予權限
chmod a+x nginx_status.sh
編輯zabbix配置文件
sudo vi /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
加入
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1 |
修改Zabbix-agent.conf中的參數
將「Include=/etc/zabbix/zabbix_agentd.d/」修改為「Include=/etc/zabbix/zabbix_agentd.d/*.conf」
重啟 zabbix-agent
sudo systemctl restart zabbix-agent
測試使否能取得nginx連接值
curl http://localhost/nginx_status
在Zabbix-Serve端下指令取得值
zabbix_get -s 172.16.16.97 -k nginx.status[accepts]
回到Zabbix UI監控平台查看
1. 執行該指令時curl http://localhost/nginx_status
會造成錯誤,取不到數值,
需要先查看 /etc/hosts 是否有設置Hosts,檢查正常,
請修改 default.conf
的配置,將下列註解,即可正常
# allow 127.0.0.1; # deny all; |
2. 在Zabbix Server 執行該指令時zabbix_get -s 172.16.16.97 -k nginx.status[accepts]
會出現抓到空值的情況發生,
只需要修改sudo vi /etc/zabbix/zabbix_agentd.d/nginx_status.sh
腳本,將「HOST="127.0.0.1"」修改成「HOST="localhost"」
問題即可解決
參考資料:
天下風雲出我輩,一入江湖歲月催,
塵事如潮人如水,只嘆江湖幾人回。