日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zabbix 监控项自动发现过滤_通过Zabbix的自动发现(规则)自动创建监控项

發布時間:2024/9/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zabbix 监控项自动发现过滤_通过Zabbix的自动发现(规则)自动创建监控项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下圖是一個已配置并啟用的自動發現規則:

應用到165.194這個主機后,自動發現的監控項:

服務端配置創建Template

創建Discovery rule

鍵值readPorts跟被監控端配置的參數有關,下面再提。創建監控項原型

宏引用符號{ #SERVICE }和{ #TCP_PORT }跟被監控端返回的json數據有關。net.tcp.listen[]表示監聽目標機器的端口狀態,返回值為0或1,0表示Down,1表示Up。另外,$1表示鍵值里的第一個參數,即。

創建觸發器原型

添加完監控項和觸發器原型的樣子:

添加主機并關聯此模板

此略。

被監控端配置

首先,看一下/etc/zabbix目錄下的文件。scripts目錄是新加的,zabbix_agentd.conf也作了修改。

使用自動發現功能,需要返回符號zabbix要求的json數據:

例如:1

2

3

4

5

6

7

8

9

10

11

12{

"data": [

{

"{#SERVICE}": "phjd_mysql",

"{#TCP_PORT}": "28001"

},

{

"{#SERVICE}": "philips_taxfree_tuangou_payment_management",

"{#TCP_PORT}": "16200"

}

]

}

其形式大致如下:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17{

"data": [

{

"{#KEY01}": "value01_01",

"{#KEY02}": "value01_02",

"{#KEY03}": "value01_03",

...

},

{

"{#KEY01}": "value02_01",

"{#KEY02}": "value02_02",

"{#KEY02}": "value02_03",

...

},

...

]

}

readPorts.sh腳本的內容很簡單,就是讀取已準備好的json數據文件ports.json,作為返回給zabbix server的值:1

2

3

4

5mypath=$(cd `dirname $0`; pwd)

cat $mypath/ports.json

為了返回給server端,需要再zabbix_agentd.conf中配置:

這樣,server端就可以使用readPorts這個鍵值,以獲取寫在ports.json中的數據。readPorts下面定義的getPorts、getAllPorts是另外兩個可用的自定義鍵值。

自動發現需監控的服務/端口,難點不在于讀取,而在于自動生成json數據文件。此處的ports.json是根據ports.ini轉換而來的。

ports.ini文件需人工填寫:

getPorts.py腳本如下,用于轉換ports.ini為ports.json:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28#!/usr/bin/env python

#coding:utf-8

import os, json, re

mypath = os.path.dirname(os.path.realpath(__file__))

port_list = []

port_dict = {"data":None}

with open('%s/ports.ini' % mypath, 'r') as f:

for line in f.readlines():

line = line.strip()

if line:

try:

port_srv = line.split(':')

port_list.append({"{#TCP_PORT}": port_srv[1].strip(),

"{#SERVICE}": port_srv[0].strip()})

except:

pass

port_dict["data"] = port_list

json_str = json.dumps(port_dict, sort_keys=True, indent=4)

# json_str已是json字符串,但每行尾部有一個多余的空格,zabbix不接受,須刪除行尾空格

p = re.compile("s+$")

for line in json_str.split('n'):

ss = re.sub(p, "", line)

print ss

轉換ports.ini為json形式:

至于getAllPorts.py,它的功能是直接返回主機上實際開放的端口數據:

總結

以上是生活随笔為你收集整理的zabbix 监控项自动发现过滤_通过Zabbix的自动发现(规则)自动创建监控项的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。