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”,如下:
建立一個模板,名稱為:“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 命令看是否可以獲取到相關監控資料依次判斷異常!
轉載於:https://blog.51cto.com/blief/1845562