对于zabbix 我们并不陌生 他是开源的监控系统,现在的一部分企业都在用zabbix,今天给大家分享的是企业级监控zabbix的自动发现规则,有了它我们自定义健康的时候根据宏值可以让他自动发现对应的value 从而省去我们一部分的重复代码 .
现需求 需要自定义一个监控脚本,目的是取各服务器三线ip地址 进行向另一端源服务器进行ping rtt和loss的请求进行判断是否存在丢包行为。

1:不同业务,对应不同的模板,我们需要现创建一个模板,用于我们这个特殊的业务

[zabbix/自动发现规则]_第1张图片

2:创建完成后,点击我们创建好的模板的右边自动发现规则,右上角创建发现规则:
[zabbix/自动发现规则]_第2张图片

其中的键值就是我们自定义的脚本,这个脚本会在下面给大家呈现,这个脚本的目的就是取到三线的ip传递到另一个脚本进行ping rtt值和loss率,注意:这个脚本数出来的格式必须是json格式,用于zabbix去识别发现,而且里面的键要是data,下面会给大家看实例

3:到被监控主机的其中一台的script下定义刚才自动发现规则定义的键值的脚本:
[zabbix/自动发现规则]

其中UserParamter就是我zabbix 定义脚本位置的地方,最上面chk_kuaishou_delay[*] 就是我上面创建规则的对应键值,下面就是我脚本输出的结果,大家可以看到
这是一个字典,最外面是data,data对面的value是每一个相同的key{#IPADDRES} 对面不同的value 当然盖上的就是我的三线ip,这就是zabbix能自动发现的格式,而
key{#IPADDRES}也是固定的格式 这个格式需要待会我们在zabbix页面上指定,这样的话 就会为我们省去不少的功夫 他会判断出 ipaddres是对面3个ip地址,从而达到我们要求的I效果
4:编写脚本,将zabbix自动发现的value传进去从而达到自动发现value去get值:

[zabbix/自动发现规则]
脚本如下第二个脚本就是我们的正式监控项以及触发器,我们需要把上面的{#IPADDRES}的valu(ip) 传递到下面的脚本进行测试,当然这个整个过程我们只需要把第二个脚本写出来至于参数怎么办 完全不需要我们去考虑,因为后面我们会在页面上定义,定义{#IPADDRES}的宏值他会自动去找着这个宏对应的三个ip然后我们再把脚本填进去就可以了
5:定义宏值,添加监控项原型,触发器类型,以及额外的图形:
[zabbix/自动发现规则]_第3张图片
点击自动发现规则里面的过滤器,注意,这时候我们上面定义的{#PADDRES}就起到作用了,有的朋友会有疑问,他怎么去自动发现的,这就体现出来了,当我们定义玩这个脚本之后,将key写到过滤器里面,这样他就会把对应过滤器对应的value值取出来,最后的结果也就是 zabbix 定义了一个变量 {#PADDRES} = ip 也就是我们在任何一个脚本里面都可以将这个变量加传递进去!
[zabbix/自动发现规则]

然后我们点击监控项原型,将我们要执行的脚本添加进去,里面传递进来的就是我们的宏(变量),注意,我要强调一下,这是在模板的自动发现规则里面的监控项原型定义的监控项 并不是 模板里面的监控项 两者是不同的,当你把监控项原型定义之后,他会自动发现里面的规则,然后帮助我们自动在监控项里面添加

[zabbix/自动发现规则]_第4张图片

下一步,我们将触发器类型也要定义一下
[zabbix/自动发现规则]_第5张图片

然后我们的要求是既能报警也要将图形的汇总趋势展现出来 这时候 我们需要点击图形原型 将两个监控项传递进来

[zabbix/自动发现规则]

然后点击更新,这时候我们的自动发现规则就完成了,如何确认已经成功了呢?,大家知道我只在模板的自动发现规则创建了监控项原型 并没有在主机上创建监控项,当我们成功地时候 会在主机的监控项自动给我们创建监控项,图形也会展现出来,下面请看图

[zabbix/自动发现规则]_第6张图片

这个就是自动发现给我们创建的监控项 其中 6个监控项 分别对应 移动联通电信,两个脚本 所以出现2*3 图形也是给我们展现出3线的图形丢包rtt情况 以上就是这些 有问题欢迎咨询 QQ1301927919