1. 程式人生 > >ZABBIX自定義key監控nginx狀態

ZABBIX自定義key監控nginx狀態

1. 先把zabbix_agent監控指令碼貼上來:

cat nginx_status.sh 
#!/bin/bash

NGINX_PORT=8000 
NGINX_COMMAND=$1

case $NGINX_COMMAND in
    connect)
        if $(/usr/bin/which pidof) -s nginx &>/dev/null;then
            echo "0" 
        else
            echo "1"
        fi
    ;;
    active)
        curl -s localhost:8000/nginx_status|grep -i 'Active connections'|awk '{print $NF}'
    ;;
    reading)
        curl -s localhost:8000/nginx_status|grep -i 'reading'|awk '{print $2}'
    ;;
    writing)
        curl -s localhost:8000/nginx_status|grep -i 'Writing'|awk '{print $4}'
    ;;
    waiting)
        curl -s localhost:8000/nginx_status|grep -i 'waiting'|awk '{print $6}'
    ;;
    accepts)
        curl -s localhost:8000/nginx_status|awk 'NR==3{print $1}'
    ;;
    handled)
        curl -s localhost:8000/nginx_status|awk 'NR==3{print $2}'
    ;;
    requests)
        curl -s localhost:8000/nginx_status|awk 'NR==3{print $3}'
    ;;
    *)
        echo "USAGE: $0 {active|reading|writing|waiting|accepts|handled|requests}"
esac

# Active connections
#   當前活動客戶端連線數,包括Waiting連線數。
# accepts
#   已接受的客戶端連線總數。
# handled
#   處理的連線總數。通常,引數值與accepts 除非已達到某些資源限制(例如: worker_connections限制)相同。
# requests
#   客戶端請求的總數。
# Reading
#   nginx正在讀取請求標頭的當前連線數。
# Writing
#   nginx將響應寫回客戶端的當前連線數。
# Waiting
#   當前等待請求的空閒客戶端連線數(開啟keep-alive的情況下,這個值等於 Active - (Reading+Writing))

2. 編輯zabbix_agentd.conf檔案

# UserParameter=                                    # 找到這一行在下面新增自定義key

UserParameter=nginx_status[*],/bin/bash /home/changchun/scripts/nginx_status.sh $1

# zabbix_server端可通過zabbix_get測試: zabbix -s agent_ip -p10050 -k "nginx_status[connect]"

3.建立模板

4.新增監控項

a)找到剛才新建的模板--->選擇監控項

b)建立監控項

c)取active為例,其他相同配置即可(因為我是配置的agent主動模式,所以配置的主動模式,想了解的可以參考我之前的文章)

5.新增觸發器,選擇模板--->觸發器

a)建立觸發器


b)這裡的觸發器為了,監控nginx_connect的


c)接下來就可以在最新資料中看到結果了



# 因為這邊是線上環境,就不進行測試了,自己感興趣的話則使用虛擬機器進行測試吧