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

# 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”,如下:

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 命令看是否可以獲取到相關監控數據依次判斷異常!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章