zabbix監控nginx

(1)agent端配置

1)nginx編譯安裝須要加上該選項--with-http_stub_status_module

2)修改nginx配置文件

#vim /usr/local/nginx/conf/nginx.conf
location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
    }
#nginx -s reload

3)nginx狀態解釋

Active connections  Nginx正處理的活動連接數個數;重要
server              Nginx啓動到如今共處理了多少個鏈接。
accepts             Nginx啓動到如今共成功建立幾回握手。 
handled requests    Nginx總共處理了幾回請求。
Reading             Nginx讀取到客戶端的 Header 信息數。
Writing             Nginx返回給客戶端的 Header 信息數。
Waiting             Nginx已經處理完正在等候下一次請求指令的駐留連接,開啓。
Keep-alive的狀況下,Waiting這個值等於active-(reading + writing)。
請求丟失數=(握手數-鏈接數)能夠看出,本次狀態顯示沒有丟失請求。

4)修改agent端配置文件監控nginx狀態配置

# vim /etc/zabbix/zabbix_agentd.d/nginx_monitor.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh "$1"

5)獲取nginx狀態的shell腳本

#cd /etc/zabbix/zabbix_agentd.d/
#vim nginx_monitor.sh
NGINX_PORT=80  
NGINX_COMMAND=$1
nginx_active(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Active/ {print $NF}'
}
nginx_reading(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Reading/ {print $2}'
}
nginx_writing(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Writing/ {print $4}'
       }
nginx_waiting(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Waiting/ {print $6}'
       }
nginx_accepts(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $1}'
       }
nginx_handled(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $2}'
       }
nginx_requests(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $3}'
       }
  case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
      *)
echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
    esac

6)給腳本添加執行權限

chmod +x nginx_monitor.sh

7)重啓agent服務

# systemctl restart zabbix-agent

(2)服務器端配置

思路:定義application_status模板--->定義應用集nginx_status--->定義監控項---->定義圖形--->定義觸發器---->添加主機或主機關聯這個模板nginx

1)server端驗證是否能獲取agent端的key值

zabbix_get -s 192.168.1.32 -k nginx_status[active]

2)鍵值

nginx_status[active]
nginx_status[reading]
nginx_status[writing]
nginx_status[waiting]
nginx_status[accepts]
nginx_status[handled]
nginx_status[requests]

3)添加模板

4)定義應用集

5)定義監控項:這裏我只寫了一個

6)定義圖形

7)定義觸發器:不是必須的,我這裏設置超過50個併發鏈接就執行報警

8)主機關聯模板

9)驗證

相關文章
相關標籤/搜索