zabbix实现自定义自动发现的流程

前言

本章介绍如何去自定义一个zabbix自动发现的整个流程

过程

首先需要在模板当中创建一个自动发现的规则,这个地方只需要一个名称和一个键值,例如

  • 名称:Ceph Cluster Pool Discovery
  • 键值:ceph.pools 过滤器中间要添加你需要的用到的值宏
    我的数据是:
1
2
[root@lab8106 ~]# zabbix_get -s 127.0.0.1 -k ceph.pools
{"data":[{"{#POOLNAME}":"rbd"},{"{#POOLNAME}":"metedata"},{"{#POOLNAME}":"data"}]}

这里我的宏就是

1
{#POOLNAME}

然后要创建一个监控项原型:
也是一个名称和一个键值:

1
2
- 名称:test on $1
- 键值:ceph.pools.used[{#POOLNAME}]

这个地方名称可以用参数形式,包含的就是下面的那个键值中的参数对应的位置的值

然后需要去写一个这样的键值的收集

1
2
UserParameter=ceph.pools, python /sbin/ceph-status.py pools
UserParameter=ceph.pools.used[*], python /sbin/ceph-status.py pool_used $1

测试下效果:

1
2
[root@lab8106 ~]# zabbix_get -s 127.0.0.1 -k ceph.pools.used["rbd"]
888

这个地方,上面的是去做的自动发现,下面的键值就是根据上面的自动发现返回的值去作为一个参数进行新的查询,后面的$1就是将参数传到收集的脚本里面去的,这样就能根据自动发现的不同的名称返回来不同的值,从而添加不同的监控项目,而不需要自己一个个添加了

总结

自动发现实际上就是需要首先去获得需要监控的值,然后将这个值作为一个新的参数传递到另外一个收集数据的item里面去,这样就可以了,这里是做的最基本的单项数据的获取,后面应该会遇到多重变量的情况,就需要赋值多重变量,到时需要用到再记录下

变更记录

Why Who When
创建 武汉-运维-磨渣 2016-10-28