1. 程式人生 > >zabbix自定義監控nginx

zabbix自定義監控nginx

nginx round play address running pan off spa sbin

nginx配置ngx_status

1.編譯安裝時帶上--with-http_stub_status_module參數

2.vi nginx.conf

location ~* ^/ngx_status
    {
        stub_status on;
        access_log off;
        #allow 127.0.0.1;
        #deny all;
    }

3.檢測nginx狀態配置

#curl 127.0.0.1/ngx_status

Active connections: 1 
server accepts handled requests request_time
 
235587 235587 1393175 83746941 Reading: 0 Writing: 1 Waiting: 0

編寫zabbix客戶端腳本

vi /usr/local/zabbix-agent/shell/nginx_check.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

這裏用./nginx_check.sh ping測試

shell腳本報錯:bash: ./nginx_check.sh: /bin/bash^M: bad interpreter: No such file or directory

原因是nginx_check.sh是在windows下編輯然後上傳到linux系統裏執行的。.sh文件的格式為dos格式。而linux只能執行格式為unix格式的腳本。

解決:用dos2unix命令修改

#dos2unix xxx.sh

再用./nginx_check.sh ping測試,通過

技術分享圖片

配置自定義UserParameter加入zabbix客戶端zabbix_agentd.conf

為什麽要自定義KEY

有時候我們想讓被監控端執行一個zabbix沒有預定義的檢測,zabbix的用戶自定義參數功能提供了這個方法。我們可以在客戶端配置文件zabbix_angentd.conf裏面配置UserParameter.

語法:UserParameter=key,command

用戶自定義參數包含一個key和一個命令,key必須整個系統唯一,配置好之後,重啟客戶端。

這裏我們vi zabbix_agentd.conf,加入:

UserParameter=nginx.status[*],/usr/local/zabbix-agent/shell/nginx_check.sh  $1

nginx.status[*]這些key將由zabbix agent執行後面的shell腳本返回,最大可以返回512KB的數據。

然後需要重啟zabbix_agentd.

zabbix服務端用zabbix_get測試獲取數據

zabbix_get 是 zabbix 服務端的一個命令,用於檢測 agent 端的配置是否正確,可以很方便地知道 key 是否能正常獲取到數據,在測試自定義監控的時候特別有用

[root@xxxx ~]# zabbix_get -h
Zabbix get v2.2.17 (revision 65977) (27 February 2017)

usage: zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key>

Options:
  -s --host <host name or IP>          Specify host name or IP address of a host  # agent 端的 ip
  -p --port <port number>              Specify port number of agent running on the host. Default is 10050  #agent 監聽的端口   默認是10050
  -I --source-address <IP address>     Specify source IP address    # 如果server 端有多個網卡 可以指定通過哪個網卡進行數據獲取

  -k --key <key of metric>             Specify key of item to retrieve value for    # 執行的參數,即key

  -h --help                            Give this help
  -V --version                         Display version number

# 例子
Example: zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"

在服務端測試:

技術分享圖片

zabbix操作後臺導入nginx模板

配置--模板--導入

技術分享圖片

給該主機添加nginx的自定義監控模板

技術分享圖片

完成後查看圖形

技術分享圖片

zabbix自定義監控nginx