1. 程式人生 > >通過zabbix 3.2監控nginx活動狀態

通過zabbix 3.2監控nginx活動狀態

linux zabbix nginx

第一:安裝nginx

1.通過yum源安裝(也可以通過編譯安裝,這裏介紹yum源安裝)

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx

默認安裝目錄為/etc/nginx,可以通過rpm -qc nginx 或 rpm -ql nginx 查看。

第二:查看、啟用、驗證nginx狀態

1.查看nginx狀態模塊是否安裝

命令:/sbin/nginx -V

查看結果中是否包括:--with-http_stub_status_module 這個內容,包括就說明狀態模塊已安裝;

2.啟用狀態模塊

命令:vim /etc/nginx/nginx.conf

找到server{}內容,在該內容最後添加如下內容

location = /nginx-status {

stub_status on;

access_log off;

allow 127.0.0.1;

allow zabbix-server-ip;

deny all;


說明:(1)/nginx-status為虛擬路徑,在進行http訪問查看nginx狀態時,需要輸入的路徑;

(2)allow和deny用於安全訪問目的,可以根據自己的安全需求進行自定義;

3.驗證nginx狀態是否可以訪問(驗證前重啟下nginx)

命令:curl http://ip:port/nginx-status #這是linux下的訪問命令#

http://ip:port/nginx-status #這是windows下的訪問URL#

可以正常顯示結果,則表示以上配置正確;否則,檢查配置;

第三:編寫腳步,增加配置文件,重啟zabbix

1.編輯腳步

腳步保存路徑(這裏是我的,您的可以自定義):/etc/zabbix/zabbix_agentd.d/scripts/

腳步內容如下:

#!/bin/bash

#script to fetch nginx statuses for tribily monitoring systems

# Author: [email protected]

# License: none

# Set Variables

#BKUP_DATE='/bin/date +%Y%m%d`\'

#LOG="/var/log/zabbix/webstatus.log"

HOST=127.0.0.1

PORT="81"

# Functions to return nginx stats

function active {

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

}

function reading {

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

}

function writing {

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

}

function waiting {

/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'

}

function accepts {

/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $1}'

}

function handled {

/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $2}'

}

function requests {

/usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $3}'

}

# Run the requested function

$1

保存後,給該腳步添加可執行權限:chmod a+x 腳步名稱

2.增加配置文件

配置文件增加位置(這裏我增加的位置,您的可以自定義,但是一定要讓zabbix_agentd.conf包含該文件):/etc/zabbix/zabbix_agentd.d/

內容如下:

UserParameter=nginx.accepts,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh accepts

UserParameter=nginx.handled,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh handled

UserParameter=nginx.requests,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh requests

UserParameter=nginx.active,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh active

UserParameter=nginx.reading,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh reading

UserParameter=nginx.writing,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh writing

UserParameter=nginx.waiting,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh waiting

上述中包含方法,編輯/etc/zabbix/zabbix_agentd.conf,默認情況下,會有該語句:Include=/etc/zabbix/zabbix_agentd.d/*.conf,您可以根據自己的配置文件所在的目錄修改此語句或增加新的語句。

3.重啟zabbix agent

由於我采用的是yum源安裝,重啟方法很簡單:systemctl restart zabbix-agent

第四:驗證zabbix get可以獲取nginx狀態數據

1.安裝zabbix get

安裝命令:rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-get-3.2.1-1.el7.x86_64.rpm

2.測試方法:

命令:zabbix_get -s nginx服務ip -p 10050 -k "nginx.connections.active"

說明:如果不通,請檢查防火墻是否開放了10050端口

第五:配置zabbix模版

1. Configuration -> Templates -> Create template

Template name : Template App Nginx Service

Groups In groups : Templates

Add

2. 創建應用分組

## 現在又回到了模板頁,跟我一起點 Template App Nginx Service 模板後面的 Applications -> Create application

Name : Nginx status

Add

3. 創建監控項

## 現在的位置是 Template App Nginx Service 模板中的 Applications 頁面,跟我一起點擊剛創建的 Nginx status 後面的 Items -> Create item

Name : nginx active ## 監控項名稱

Type : Zabbix agent ## 監控類型,默認被動模式

Key : nginx.active ## 由於是自定義 Key ,所以要自己寫上去。如果使用自帶的 Key ,點擊 Select 選擇就可以了

Type of information : Numeric( unsiqned ) ## 數據在進行類型轉化之後存入數據庫

Numeric( unsiqned ) : 64 位無符號整數
Numeric( float ) : 浮點數類型
Character : 字符串類型數據,限制為 255B
Log : 日誌文件,必須使用的 Key 為 log[]
Text : 文本,不限制大小

Data type : Decimal ## 數據類型用於存儲 Items 中 Key 所獲取的數值值,存儲在不同的表中,如:history 、history_str 等表

Boolean : 在數據存儲時將原本的值替換為 0 或 1,TRUE 存儲為 1 ,FALSE 存儲為 0 ,所有的值都區分大小寫( 任何非零都為 TRUE ,0 為 FALSE )
Octal : 八進制數的數值格式
Decimal : 十進制數的數值格式
Hexadecimal : 十六進制數的數值格式

## Zabbix 自動執行數據類型的格式轉換

Units : 留空 ## 單位符號,Zabbix 會自動處理接收到的數據,並且把數據轉換為需要顯示的格式

Use custom multiplier : 不勾選 ## 如果開啟,所接收到的數據會被乘以整數或浮點數。該選項用於單位換算,KB 、MBps 換為 B 、Bps 等

Update interval( in sec ) : 30 ## 間隔多長時間通過 Items 收集數據,單位 秒

Flexible intervals : ## 用於設置不同時間段收集數據的間隔不同,如果設置,則此時間段按這個間隔,其余的按上面參數的間隔

New flexible interval Interval( in sec ) : 50 Period 1-7,00:00-24:00 Add : ## 通過這裏來添加一個新的時間段

History storage period( in days ) : 90 ## 歷史數據保留時間

Trend storage period( in days ) : 365 ## 趨勢數據保留時間

Store value : As is ## 數據存儲時的類型

As is : 無預處理

Delta( speed per second ) : 顯示每秒速率的值( 例如網卡流量 )

Delta( simple change ) : 顯示本次數值與上次數值的差值

Show value : As is ## 無預處理( 數據顯示時的類型,值映射:將接收到的值映射為一個狀態,不改變原值,只改變顯示結果,例如將 1 映射為 Nginx service states )

New application : 留空 ## 創建一個新的應用分組

Applications : Nginx status ## 選擇一個已有的應用分組

Populates host inventory field : None ## 將此 Item 分配給某個資產管理組

Description : 留空 ## 對 Item 的描述信息

Enabled : 勾選 ## 開啟此 Item

Add

#根據以上方法分別定義 active | accepts | handled | requests | reading | writing | waiting 監控項

第六:將模版應用與被監控主機

應用完成後,就可以查看nginx狀態數據了


通過zabbix 3.2監控nginx活動狀態