1. 程式人生 > 實用技巧 >zabbix監控之nginx狀態監控(一)

zabbix監控之nginx狀態監控(一)


【本文件所介紹的內容適用於公司測試/生產環境等常見的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

#SetVariables
HOST="monitor.nfgc.com"
PORT="80"
#Functionstoreturnnginxstats
functionactive{
/usr/bin/curl"http://$HOST:$PORT/ngx_status"2>/de/null|grep'Active'|awk'{print$NF}'
}
functionreading{
/usr/bin/curl"http://$HOST:$PORT/ngx_status"2>/de/null|grep'Reading'|awk'{print$2}'
}
functionwriting{
/usr/bin/curl"http://$HOST:$PORT/ngx_status"2>/de/null|grep'Writing'|awk'{print$4}'
}
functionwaiting{
/usr/bin/curl"http://$HOST:$PORT/ngx_status"2>/de/null|grep'Waiting'|awk'{print$6}'
}
functionaccepts{
/usr/bin/curl"http://$HOST:$PORT/ngx_status"2>/dev/null|awkNR==3|awk'{print$1}'
}
functionhandled{
/usr/bin/curl"http://$HOST:$PORT/ngx_status"2>/dev/null|awkNR==3|awk'{print$2}'
}

functionrequests{
/usr/bin/curl"http://$HOST:$PORT/ngx_status"2>/dev/null|awkNR==3|awk'{print$3}'
}
#Runtherequestedfunction
$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”,如下:

wKiom1fJRkmx8G4gAAECShxum5E396.png

建立一個模板,名稱為:“Tempalte App Nginx”

wKiom1fJRuXAOV3QAACCqwmkTIM130.png

點選“Application”新建一個應用集,名稱為:“Nginx”

wKioL1fJRkrRmbOVAACgS-4n33A144.png

新增監控Item 專案,相關引數值分別如下:

Name:nginx.accepts

Type:Zabbix agent

Key : nginx.accepts

備註:Key值對應nginx_monitor.conf中“UserParame=”後的值,如UserParameter=nginx.accepts,則Key值為:nginx.accepts

Applications:nginx 其他值預設即可!

如下:

wKioL1fJRkex-g7rAAC0R-6ouII981.png

此時就完成nginx的第一個監控專案即nginx accepts監控 ,同理其他監控指標依次類推,新增完成後的結果如下:

wKioL1fJSVrCexKRAADqwExFIAU671.png

最後還需要新增圖形,點選“Graphs“,”如下所示:

新增兩個圖形,分別為“Nginx Clients Status”以及“Nginx Socket Status”

wKiom1fJSkSQHk9UAACj85jaJXw364.png

新建完成後,還需要給兩個圖形新增對應資料Item項,如下

Nginx Clients Status對應的Item專案

wKiom1fJS22wlHtoAACS3J68BHM700.png

Nginx Socket Status對應的Item項(對應的是nginx處理請求總體情況)

wKioL1fJTBfj6eL1AACPV5bTU1I466.png

新增圖形完成後,還需將此監控模板應用到主機上,大約3-5分鐘就可以出圖形,如下所示:

wKiom1fJTTLB9nRxAAEccrLQ7xk028.png

如果出現以上圖形,說明zabbix監控nginx配置完成,注意,如果不出圖形,使用zabbix 命令看是否可以獲取到相關監控資料依次判斷異常!

轉載於:https://blog.51cto.com/blief/1845562