Zabbix監控指定端口;


生產上常常會監控某些具體端口狀態,下面介紹具體步驟:json


主機名
ip
操做系統
zabbix版本
zabbix-server 172.27.9.63 Centos7.3.1611 zabbix_server (Zabbix) 4.4.1
zabbix-agent 172.27.9.65
Centos7.3.1611 zabbix_agentd (daemon) (Zabbix) 4.4.1


1.腳本編寫
windows

兩個腳本,port_alert.sh爲端口自發現腳本,port.conf爲指定的監控端口號
bash

[root@zabbix-agent ~]# cd /etc/zabbix/script/[root@zabbix-agent script]# more port_alert.sh #/bin/bashCONFIG_FILE=/etc/zabbix/script/port.conf
Check(){
    grep -vE '(^ *#|^$)' ${CONFIG_FILE} | grep -vE '^ *[0-9]+' &> /dev/null    if [ $? -eq 0 ]
    then
        echo Error: ${CONFIG_FILE} Contains Invalid Port.        exit 1    else
        portarray=($(grep -vE '(^ *#|^$)' ${CONFIG_FILE} | grep -E '^ *[0-9]+'))
    fi}PortDiscovery(){
    length=${#portarray[@]}
    printf "{\n"
    printf  '\t'"\"data\":["
    for ((i=0;i<$length;i++))
      do
         printf '\n\t\t{'
         printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
         if [ $i -lt $[$length-1] ];then
                    printf ','
         fi
      done
    printf  "\n\t]\n"
    printf "}\n"}port(){
    Check
    PortDiscovery}port
[root@zabbix-agent script]# more port.conf22
80#  abc 1#ebc50
3306  
8080
10050
10051
 3822
21
9100

注意兩個腳本屬主爲zabbix:zabbix。
服務器

配置文件port.conf每一個端口號一行,每行的被監控端口能夠有空格,空行和註釋行#會被過濾。
微信


2.修改被監控端的zabbix_agent.conf配置文件,新增KEY值port.alerttcp

[root@zabbix-agent ~]# view /etc/zabbix/zabbix_agentd.confUserParameter=port.alert,/etc/zabbix/script/port_alert.sh

重啓agent端zabbix服務ide

[root@zabbix-agent ~]# systemctl restart zabbix-agent



3.server端測試測試

[root@zabbix-server ~]# zabbix_get -s 172.27.9.65 -k port.alert{
        "data":[
                {"{#TCP_PORT}":"22"},                {"{#TCP_PORT}":"80"},                {"{#TCP_PORT}":"50"},                {"{#TCP_PORT}":"3306"},                {"{#TCP_PORT}":"8080"},                {"{#TCP_PORT}":"10050"},                {"{#TCP_PORT}":"10051"},                {"{#TCP_PORT}":"3822"},                {"{#TCP_PORT}":"21"},                {"{#TCP_PORT}":"9100"}
        ]}

測試成功,返回json格式的合法端口號
spa


4.新建模板,建立自動發現規則操作系統

新建模板:

圖片.png

新建自動發現規則:

圖片.png

自動發現清單中新建監控項原型:

圖片.png

自動發現清單中新建觸發器:

圖片.png

添加表達式:

圖片.png

模板關聯主機:

圖片.png

查看最新數據:

圖片.png

查看告警信息:

圖片.png

查看微信端告警:

圖片.png

查看郵件報警:

圖片.png





windows服務器監控端口告警;


二、建立腳本文件

在客戶端新建discovertcpport.bat文件,放在c:\zabbix\目錄中,內容以下:


   echo off
    echo {
    echo         "data":[
    for /F "tokens=2 delims= " %%i IN ('netstat -anp tcp^|find /i "LISTENING"') DO for /F "tokens=2 delims=:" %%j IN ("%%i") DO echo                 {"{#TCP_PORT}":"%%j"},
    echo                 {"{#TCP_PORT}":"10050"}
    echo         ]
    echo }


腳本說明:


命令netstat -anp tcp ^|find /i "LISTENING" 用來查看監聽狀態的TCP端口;


for /F "tokens=2 delims= "表示循環輸出的截取值,即每行以空格(delims= )分隔的第2段(token=2)值,以變量%%i輸出;


以後以一樣的循環截取出端口號並格式化輸出結果;


這裏的輸出格式必須按JSON對象格式輸出,不然報錯「Value should be a JSON object」;


特別要注意最後一行沒有逗號,所以單獨添加一行echo {"{#TCP_PORT}":"10050"}來結束,以知足JSON對象格式。


三、修改客戶端配置


在客戶端的zabbix_agentd.conf中添加如下內容:


UnsafeUserParameters=1

UserParameter=tcpportlisten,c:\zabbix\discovertcpport.bat


說明:第一條表示容許使用用戶自定義參數,第二條設置用戶參數,名稱tcpportlisten是自定義的KEY名,後接KEY要執行的命令或腳本文件。

從新啓動zabbix agentd服務


客戶端測試


以管理員身份運行CMD,cd到c:\zabbix目錄,輸入腳本文件名,回車:


Zabbix監控(八):自動監控windows端口


說明:上圖是在我筆記上測試的,掃描出的端口並不是監控主機10.188.1.44的。

JSON格式說明:#TCP_PORT是變量名稱,後面的數值是變量的值。


五、服務端測試

[root@zabbix ~]# zabbix_get -s 10.32.11.158 -k tcpportlisten

圖片.png


說明:能夠看到監控主機掃描出的端口中已有10050,而我在後面添加了一個10050,沒關係,接着往下看。

相關文章
相關標籤/搜索