【本文檔所介紹的內容適用於公司測試/生產環境等常見的zabbix監控應用部署】
一:相關環境準備:
1.1相關軟件以及系統
系統要求:Centos 6及以上(64位)
環境要求:zabbix監控系統(服務端,客戶端)
相關中間件:nginx (版本1.6.0及以上)
二:配置zabbix監控nginx
2.1修改nginx配置文件,在server區塊添加nginxs狀態監控配置,如下所示
location ^~ /ngx_status {
stub_status on;
access_log off;
}
注意:nginx配置nginx狀態監控的前提是nginx能夠支持此模塊,即:http_stub_status_module模塊,編譯時必須添加此模塊
2.2 添加zabbix監控nginx配置,(這裏zabbix相關安裝目錄爲:/usr/local),相關操作如下
2.2.1新建nginx狀態值獲取腳本
由於zabbix監控nginx主要是用到nginx_status狀態數值,而要獲取到nginx狀態數據,就必須要通過腳本來print相關數值,所以我們需要建立一個獲取nginx的狀態數值的腳本,腳本內容如下:
vim /usr/local/zabbix-agent/scripts/ngx_stauts.sh
# Set Variables HOST="monitor.nfgc.com" PORT="80" # Functions to return nginx stats function active { /usr/bin/curl "http://$HOST:$PORT/ngx_status" 2>/de/null| grep 'Active' | awk '{print $NF}' } function reading { /usr/bin/curl "http://$HOST:$PORT/ngx_status" 2>/de/null| grep 'Reading' | awk '{print $2}' } function writing { /usr/bin/curl "http://$HOST:$PORT/ngx_status" 2>/de/null| grep 'Writing' | awk '{print $4}' } function waiting { /usr/bin/curl "http://$HOST:$PORT/ngx_status" 2>/de/null| grep 'Waiting' | awk '{print $6}' } function accepts { /usr/bin/curl "http://$HOST:$PORT/ngx_status" 2>/dev/null| awk NR==3 | awk '{print $1}' } function handled { /usr/bin/curl "http://$HOST:$PORT/ngx_status" 2>/dev/null| awk NR==3 | awk '{print $2}' } function requests { /usr/bin/curl "http://$HOST:$PORT/ngx_status" 2>/dev/null| awk NR==3 | awk '{print $3}' } # Run the requested function $1
備註:以上腳本主要是爲了獲取nginx相關狀態值,需要注意的是如果nginx的statusurl地址改變,則相應的配置也需要改變,同理腳本的路徑也需要根據實際情況改動。
2.2.2添加nginx監控配置文件
編輯zabbix_agent的配置文件:/usr/local/zabbix-agent/etc/zagentd.conf,添加以下內容,引用擴展目錄下的配置文件
Include=/usr/local/zabbix-agent/etc/zabbix_agentd.conf.d/*.conf
添加zabbix監控nginx配置,內容如下
vim /usr/local/zabbix-agent/etc/zagentd.conf.d/ngx_monitor.conf
UserParameter=nginx.accepts,/usr/local/zabbix-agent/scripts/ngx_status.sh accepts
UserParameter=nginx.handled,/usr/local/zabbix-agent/scripts/ngx_status.sh handled
UserParameter=nginx.requests,/usr/local/zabbix-agent/scripts/ngx_status.sh requests
UserParameter=nginx.connections.active,/usr/local/zabbix-agent/scripts/ngx_status.sh active
UserParameter=nginx.connections.reading,/usr/local/zabbix-agent/scripts/ngx_status.sh reading
UserParameter=nginx.connections.writing,/usr/local/zabbix-agent/scripts/ngx_status.sh writing
UserParameter=nginx.connections.waiting,/usr/local/zabbix-agent/scripts/ngx_status.sh waiting
2.3 賦予腳本執行權限,重啓zabbix_agentd 服務
chmod o+x /usr/local/zabbix-agent/scripts/ngx_status.sh
service zabbix_agentd reload
2.4 測試是否能夠正常獲取到nginx狀態相關數據
添加完之後還需要測試server端是否可以收到數據, 在server端zabbix_get測試一下
zabbix_get -s 127.0.0.1 -p10050 -k "nginx.connections.active"
1
如果獲取到數據,說明配置無誤,接下來就需要到zabbix頁面添加相關監控項。
三:在web頁面添加nginx監控項目
登陸zabbix,點擊“configuratio”-“template”-“Create template”,如下:
創建一個模板,名稱爲:“Tempalte App Nginx”
點擊“Application”新建一個應用集,名稱爲:“Nginx”
添加監控Item 項目,相關參數值分別如下:
Name:nginx.accepts
Type:Zabbix agent
Key : nginx.accepts
備註:Key值對應nginx_monitor.conf中“UserParame=”後的值,如UserParameter=nginx.accepts,則Key值爲:nginx.accepts
Applications:nginx 其他值默認即可!
如下:
此時就完成nginx的第一個監控項目即nginx accepts監控 ,同理其他監控指標依次類推,添加完成後的結果如下:
最後還需要添加圖形,點擊“Graphs“,”如下所示:
添加兩個圖形,分別爲“Nginx Clients Status”以及“Nginx Socket Status”
新建完成後,還需要給兩個圖形添加對應數據Item項,如下
Nginx Clients Status對應的Item項目
Nginx Socket Status對應的Item項(對應的是nginx處理請求總體情況)
添加圖形完成後,還需將此監控模板應用到主機上,大約3-5分鐘就可以出圖形,如下所示:
如果出現以上圖形,說明zabbix監控nginx配置完成,注意,如果不出圖形,使用zabbix 命令看是否可以獲取到相關監控數據依次判斷異常!