zabbix自動發現規則批量監控主機的TCP監聽端口

zabbix自動發現

配置自動發現

keysystem.uname 是agent端系統的信息

[root@lb-node1 ~]# zabbix_agentd -p|grep system.uname
system.uname                                  [s|Linux lb-node1 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64]
[root@lb-node1 ~]# 

  • 配置自動發現
    [外鏈圖片轉存失敗(img-p0MCo8Ii-1564503367501)(D7C5296EBB8348C79917393D64E5112A)]

  • 網絡發現模塊執行的服務和主機(IP)的每次檢查都生成發現事件於是配置Discovery的Action
    [外鏈圖片轉存失敗(img-XeOC9DKx-1564503367503)(E98630A0FBD04392B0C9BC9CEE7DA5FE)]
    [外鏈圖片轉存失敗(img-oTzfxcue-1564503367504)(CF17D0060EDA4547966F2457DFD27F06)]
    [外鏈圖片轉存失敗(img-LSHgJ03g-1564503367505)(EA6D9F31E2244A23A4AF6D1CDA2CCEDE)][外鏈圖片轉存失敗(img-kSyoJqUE-1564503367506)(11CE48109AE64ECA9F0BEF9CFEC78F20)]

  • 自動發現主機成功
    [外鏈圖片轉存失敗(img-s0VdbsLm-1564503367507)(4398452629954032913421EC49ABB2D5)]

端口port自動發現

  • 客戶端新建查詢端口腳本discoverport.sh
[root@lb-node1 /etc/zabbix/scripts]# vim discoverport.sh 
#!/bin/bash
portarray=(`sudo netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
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"


  • 增加執行權限
[root@lb-node1 /etc/zabbix/scripts]# chmod +x discovertcpport.sh
  • 客戶端增加discovery的key
UserParameter=tcpportlisten,/usr/local/zabbix_agent/sbin/discovertcpport.sh "$1"
  • 重啓zabbix_agentd服務,server端測試獲取key
[root@zabbix-server ~]# zabbix_get -s 192.168.1.10 -k tcpportlisten
{
	"data":[
		{"{#TCP_PORT}":"10050"},
		{"{#TCP_PORT}":"22"},
		{"{#TCP_PORT}":"25"},
		{"{#TCP_PORT}":"80"}
	]
}
[root@zabbix-server ~]# 

  • 在Linux模板中創建端口自動發現規則

[外鏈圖片轉存失敗(img-g4qVZGOc-1564503367508)(CA67021793BC4634AE8A97687478B7BC)]
2.
[外鏈圖片轉存失敗(img-pkzwT0Aq-1564503367508)(84595BECDF274B75842FD9EB6F843D76)]
3.
[外鏈圖片轉存失敗(img-Ws3aC6Kt-1564503367509)(47DF19C4FE33454FAA6019EB245FBA8A)]
4.
[外鏈圖片轉存失敗(img-FiuAvbUT-1564503367510)(DC983FE80D18403293A3E91B055F2DC6)]

  • 創建Item原型
    [外鏈圖片轉存失敗(img-O1eY9gtp-1564503367511)(18A67EEAB1EF4807B50B8AFD6CB281E4)]
    [外鏈圖片轉存失敗(img-UG9535zM-1564503367512)(F399488B6AA8415FA8F9DD759AFB123B)]

  • 創建觸發器原型
    在這裏插入圖片描述

  • 創建圖像原型
    [外鏈圖片轉存失敗(img-Un2drtxC-1564503367513)(FB0C6E89D7AB48A58D6E789A22469A31)]

  • 查看是否成功,在monitoring-latest data裏面查看是否有端口產生
    [外鏈圖片轉存失敗(img-RKWqrRYA-1564503367514)(FB439FA38534416995124839DF137503)][外鏈圖片轉存失敗(img-Gqe7ib2d-1564503367515)(0C75725095284EF2A843931F8D8633DE)]

  • 報錯解決
    [外鏈圖片轉存失敗(img-HNfobnRR-1564503367516)(9B14F847E7F34956B86AB3313BE239F7)]

解決辦法是 vim /etc/sudoers

#Defaults    requiretty  註釋掉這個
zabbix  ALL=(ALL)      NOPASSWD: ALL

然後在上面的腳本里面改爲

sudo netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq

[外鏈圖片轉存失敗(img-6uqSODnF-1564503367516)(61302FDEBFDA45A9BF1866E812758F6A)]

監聽端口自動發現的演示方法2

配置低級別自動發現的步驟

  1. 配置自動發現監控項Discovery rules(根據腳本或命令生成低級別的自動發現宏變量)
  2. 定義item原型Item prototypes(主要利用低級別自動發現產生的變量,來動態的創建監控項、觸發器、圖形)

實戰演示低級別自動發現的配置管理

  • 演示內容:自動發現服務器本地的監聽的端口,並且將這些端口進行自動化的監控和告警
  1. 配置agent客戶端
[root@lb-node2 /etc/zabbix]# vim zabbix_agentd.d/userparameter_ports.conf 

UserParameter=listen.ports.discovery,python /etc/zabbix/scripts/listen_ports.py

  1. 編寫獲取服務端口的腳本listen_ports.py
#!/usr/bin/python

import os
import json

cmd=os.popen("""netstat -lntp|grep -v rpc|awk -F "[ :]+" '{if($4 ~ /0.0.0.0/ || $4 ~ /127.0.0.1/) print $5}'""")

ports=[]
for port in cmd.readlines():
    r=port.strip()
    ports += [{'{#PORT}':r}]

print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))

  1. 配置測試的監控模板

[外鏈圖片轉存失敗(img-Ex9kPf80-1564503367517)(2741E0FDD0204527A8C9C8F9ED5D880D)][外鏈圖片轉存失敗(img-IyAxpEJy-1564503367518)(51439D26F27B4370A24F2E98491A3078)]

  1. 設置zabbix權限
    默認zabbix-agent使用zabbix用戶啓動,爲了可以是zabbix執行腳本,我們修改他的權限,給他提升權限sudovi
  • 兩種方法
    1. 提升sudo權限

      [root@lb-node2 ~]# visudo

      zabbix ALL=NOPASSWD ALL

    2. 修改zabbix配置,使zabbix-agent以root用戶運行(修改配置後要重啓agent)

    sed -i 's@# AllowRoot=0@AllowRoot=1@g' /etc/zabbix/zabbix_agentd.conf
    
    [外鏈圖片轉存失敗(img-mtJFBltW-1564503367519)(BE843706B3794E69AEB08DA9CBF8D16E)]
    • 還有一種方法:思路用root用戶生成json格式的端口信息日誌,然後zabbix-agent讀取這個日誌即可
  1. zabbix-server端測試獲取agent端的端口信息

[外鏈圖片轉存失敗(img-NOgc04Iz-1564503367519)(C7BB4A82ED654AE9B82CF8DAFF5A719F)]

  1. 自動發現規則已經創建

[外鏈圖片轉存失敗(img-eDuAAEQ0-1564503367520)(9157AC32E90B4F6A8735973208979CFE)]

  1. 創建監控項原型

[外鏈圖片轉存失敗(img-O6sXuPIQ-1564503367521)(BCE24807B4334B74A9107539606F2D33)][外鏈圖片轉存失敗(img-y4IA2yGV-1564503367522)(EB0A49B772A54D4C90E52F1C90A6BF81)]

  1. 創建監控項觸發器原型
    在這裏插入圖片描述

  2. lb-node1主機上自動發現監聽端口實現了
    [外鏈圖片轉存失敗(img-QXG4vzBn-1564503367526)(376B1358C0804399B2871EDE8D206764)]

  • 並且監聽的端口都有值了

[外鏈圖片轉存失敗(img-QJOsxWj6-1564503367527)(51A64C138FE54E99A948223FC39E2C08)]

  • 測試停止zabbix-agent觸發告警
    [外鏈圖片轉存失敗(img-8BE3WpaN-1564503367528)(32674C681C9D494BB16C74C4FB63BCC5)]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章