zabbix監測nginx status狀態


一、啟用nginx status狀態詳解

nginx和php-fpm一樣內建了一個狀態頁,對於想了解nginx的狀態以及監控nginx非常有幫助。為了后續的zabbix監控,我們需要先了解nginx狀態頁是怎么回事。

1、啟用nginx status配置

在默認主機里面加上location或者你希望能訪問到的主機里面。

server {

    listen  *:80 default_server;

    server_name _;

    location /ngx_status

    {

        stub_status on;

        access_log off;

        #allow 127.0.0.1;

        #deny all;

    }

}

 

2. 重啟nginx

請依照你的環境重啟你的nginx

# service nginx restart

3. 打開status頁面

# curl http://127.0.0.1/ngx_status

Active connections: 11921

server accepts handled requests

 11989 11989 11991

Reading: 0 Writing: 7 Waiting: 42

4. nginx status詳解

active connections – 活躍的連接數量

server accepts handled requests — 總共處理了11989個連接 , 成功創建11989次握手, 總共處理了11991個請求

reading — 讀取客戶端的連接數.

writing — 響應數據到客戶端的數量

waiting — 開啟 keep-alive 的情況下,這個值等於 active – (reading+writing), 意思就是 Nginx 已經處理完正在等候下一次請求指令的駐留連接.

 

 

nginx status信息

 

 

# curl http://127.0.0.1/ngx_status

Active connections: 11921

server accepts handled requests

 11989 11989 11991

Reading: 0 Writing: 7 Waiting: 42

二、Zabbix監控nginx性能

# curl http://127.0.0.1/ngx_status

Active connections: 11921

server accepts handled requests

 11989 11989 11991

Reading: 0 Writing: 7 Waiting: 42

以上為nginx性能計數,我們除了監控以上數據,還需要監控nginx進程狀態,並且配置觸發器!

zabbix客戶端配置

編寫客戶端腳本ngx_status.sh

 

#!/bin/bash 

HOST="127.0.0.1"

PORT="80"

 

# 檢測nginx進程是否存在

function ping {

    /sbin/pidof nginx | wc -l

}

# 檢測nginx性能

function active {

    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'

}

function reading {

    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'

}

function writing {

    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'

}

function waiting {

    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/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}'

}

# 執行function

$1

 

zabbix客戶端配置

將自定義的UserParameter加入配置文件,然后重啟agentd,如下:

 

#cat /usr/local/zabbix-3.0.0/etc/zabbix_agentd.conf | grep nginx

UserParameter=nginx.status[*],/usr/local/zabbix-3.0.0/scripts/ngx-status.sh $1

# killall zabbix_agentd

# /usr/local/zabbix-3.0.0/sbin/zabbix_agentd

 

zabbix_get獲取數據

 

此步驟可以跳過,但是最好是測試一下,因為通過此命令我們可以檢測配置是否正確

 

# /usr/local/zabbix-3.0.0/bin/zabbix_get -s 10.10.1.121 -k 'nginx.status[accepts]'

9570756

# /usr/local/zabbix-3.0.0/bin/zabbix_get -s 10.10.1.121 -k 'nginx.status[ping]'

1

 

在zabbix server服務器上執行如上命令, 10.10.1.121為agentd機器

zabbix web端配置

 

導入Template App NGINX模板

模板我已經寫好了,將會放到附件中。具體導入方式請看前面的文章《zabbix鏈接及解除模板鏈接(76)》

Link NGINX模板

到了最后一個階段,登陸zabbix管理端,link模板到nginx服務器:configuration->hosts->點擊nginx所在服務器->點擊template->Link new templates輸入"Template App NGINX"->Add→最后點擊update

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM