前言
经过一个星期的死磕,Zabbix取数据和RRDtool绘图都弄清楚了,做第一运维平台的时候绘图取数据是直接从Zabbix的数据库取的,显得有点笨拙,不过借此也了解了Zabbix数据库结构还是有不少的收获。
学习Zabbix的API官方文档少不了:
官方文档地址链接https://www.zabbix.com/documentation/
选择对应版本,不过2.0版本的API手册位置有点特别开始开始还以为没有,后来找到如下:https://www.zabbix.com/documentation/2.0/manual/appendix/api/api。
用ZabbixAPI取监控数据的思路大致是这样的,先获取所有监控的主机,再遍历每台主机获取每台主机的所有图形,最后获取每张图形每个监控对象(item)的最新的监控数据或者一定时间范围的数据。
按照思路一段一段的贴我的程序代码:
获取token
登录Zabbix获取token
1 | #!/usr/bin/env python |
获取所有主机
获取所有主机
1 | #################################################### |
返回的结果是一个列表,每个元素是一个字典,字典的key代表主机名,value代表hostid
获取每台主机的每张图形
获取每台主机的每张图形
1 | #################################################### |
注意传入的参数是主机名而不是主机id,结果也是由字典组成的列表。
获取监控对象
获取每张图的监控对象item
1 | #可以返回完整信息rs,含有hostid |
返回的数据已经包含了最新的一次监控数据的值和取值的时间戳,如果只需要取最新的监控数据,到这里其实就可以了,这次传入的参数是graphid。
根据itemid取得更多的监控数据
根据itemid取得更多的监控数据,下面是取10条监控数据,可以任意更改参数获取更多的数据,全凭自己所需了。
1 | ################################################## |