下图是一个已配置并启用的自动发现规则:

应用到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的自动发现(规则)自动创建监控项相关推荐

  1. zabbix如何添加图表显示内容_自定义 Zabbix 监控指标及图表

    问题描述 有时候 Zabbix 监控系统的模版提供的监控指标并不能满足我们的需求,比如我们要监控服务器的线程数.TCP 连接数等,这些指标在 Zabbix 自带的模板中是没有的,这时候我们就需要自定义 ...

  2. springboot自动配置原理_今日份学习之Spring Boot自动配置实现原理

    通过前面章节的学习,我们掌握了使用Spring Boot框架进行实际应用开发的方法.在使用Spring Boot 的过程中,我们时常会为一些看似简单,但实际上蕴藏了强大功能的实现而惊呼,下面就让我们来 ...

  3. 艾宾浩斯计划表自动生成网站_施工进度计划表横道图,自动出图超方便,建议收藏...

    横道图,是一种非常实用的图表类型.施工进度计划的制定在工程项目里是很重要的,这可以大大提高施工单位的管理水平,是项目施工必备.作为一个在工地摸爬滚打好几年的人来说,这些更是不可或缺的.几年下来,也整理 ...

  4. bat自动输入密码登录_【第7期】Teamcenter自动登录改进,对portal.bat中登录密码加密...

    前言: 之前发过一个Teamcenter登录的文章,大体逻辑是在protal.bat或者eclipse的debug\run configura的-vmargs中加入-Dautologin.user和- ...

  5. 如何显示密件抄送人员地址_如何在Outlook中使用规则自动密件抄送电子邮件

    如何显示密件抄送人员地址 Sometimes, you might want to copy your sent emails to another address without the recip ...

  6. Mycat监控_监控平台Mycat-web配置指标_作为配置中心注册发现用---MyCat分布式数据库集群架构工作笔记0038

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们再去看这个mycat-web怎么用 点击配置,这里配置我们zookeeper的ip和端口 ...

  7. python钉钉自动打卡_用Python来实现钉钉自动打卡并发送邮件短信提醒

    用Python来实现钉钉自动打卡并发送邮件短信提醒 自从用钉钉打卡,老忘记打,只会python语言,所以用Python写了一个自动跑的脚本,每天定时跑.这样就避免忘记了. 之后把adb.exe所在的文 ...

  8. python蚂蚁森林自动偷能量_介绍两种实现蚂蚁森林自动“偷”能量的方法

    起因 最近博主迷上了偷能量(蚂蚁森林),后来发现一好友每天定点来博主森林偷能量,很准时 大家发现没,每天都是7.16分准时来偷,每天!因为博主的能量是7.16分成熟~ 本来博主呢,以前也用过这些方法, ...

  9. 五项管理行动日志_迈向学习型组织,企业必须具备五项修炼

    未来真正出色的企业,将是能够设法使各阶层人员全心投入,并有能力不断学习的组织. --彼得·圣吉 陈春花老师曾说,一个企业组织在平稳发展之时,最可怕的是怠情,是组织疲劳,就像人们说的"温水煮青 ...

最新文章

  1. Ubuntu16.04 - 安装RabbitVCS,linux下的TortoiseSVN!!!
  2. asp.net应用程序_如何在ASP.NET中为聊天应用程序构建键入指示器
  3. java jdk myeclipse_java初体验(JDK+myeclipse)
  4. 上周回顾:艾妮闹春 Sun/HP高层人士震荡
  5. 大众点评被合并至美团? 官方回应:不存在这种可能性
  6. Kali学习笔记15:防火墙识别、负载均衡识别、WAF识别
  7. docker专题(2):docker常用管理命令(下)
  8. 为什么在WSE配置中不要选择Establish Secure Session
  9. 宗成庆《文本数据挖掘》学习笔记:第一章绪论
  10. Google Scholar 谷歌学术文献检索技巧总结
  11. web前端之跳一跳网页版小游戏
  12. 【软件网每日新闻播报│第9-18期】
  13. Unix/Linux编程:多协议服务器(TCP/UDP)-----DAYTIME
  14. adreno630gpu参数_高通骁龙AdrenoGPU天梯以及直观分析,推荐。
  15. mysql数据库日志binlog保存时效(expire_logs_days)
  16. 如何使用网线连接树莓派和电脑
  17. (转)周鸿祎产品秘笈:小版本成就大产品
  18. 明远智睿5G工业网关 5G物联网人工智能
  19. oracle 连接查询,子查询,分组函数
  20. 手机程序电量测试之docker toolbox安装docker

热门文章

  1. centos php配置mysql数据库_CentOS+Nginx+PHP+MySQL详细配置(图解)
  2. java 创建线程_【80期】说出Java创建线程的三种方式及对比
  3. PHP中的des加密类
  4. python实现分布式_Python如何快速实现分布式任务
  5. java script的图片隐藏,java和javascript中过滤掉img形式的字符串不显示图片的方法...
  6. java如何识别tiled地图_Egret学习-TiledMap使用
  7. vsftp:425 错误
  8. 【H2 Database】Server模式启动
  9. java com dll_通过COM组件方式实现java调用C#写的DLL文件
  10. 字典序最小是什么意思_《拓扑序简介》第十六讲