zabbix通过自动发现规则,根据脚本自动动态的定义监控的key,再根据key获取值
discovery.py动态获取key
#!/usr/bin/env python
importjsonimportsysdefget_ip():
a={"data":[
{"{#IP}":"127.0.0.4"},
{"{#IP}":"127.0.0.5"},
{"{#IP}":"127.0.0.6"}
]
}print json.dumps(a,sort_keys=True, indent=2)
get_ip()
脚本模拟动态获取访问最多的ip,并通过zabbix自动发现把ip作为key。这个脚本数出来的格式必须是json格式,用于zabbix去识别发现,而且里面的键要是data。
#!/usr/bin/env python
importsys
a={"127.0.0.4":1,"127.0.0.5":2,"127.0.0.6":3}
ip=sys.argv[1]print a[ip]
此脚本模拟根据key获取value
配置zabbix的配置文件
UserParameter=discovery_gsd_ip_num,/opt/script/discovery.py
UserParameter=gsd_ip_num[*],/opt/script/get.py $1
zabbix页面添加自动发现规则
添加监控原型
zabbix 定义了一个变量 {#IP} = ip 也就是我们在任何一个脚本里面都可以将这个变量加传递进去!
注意,这是在模板的自动发现规则里面的监控项原型定义的监控项 并不是 模板里面的监控项 两者是不同的,当你把监控项原型定义之后,他会自动发现里面的规则,然后帮助我们自动在监控项里面添加
然后查看监控项,可以看到我们定义的动态的key已经生成,失效的key到期会自动删除
查看最新数据,也可以看到已经获取到数据