博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zabbix 二次开发之调用api接口获取历史数据
阅读量:6302 次
发布时间:2019-06-22

本文共 2229 字,大约阅读时间需要 7 分钟。

     前面一篇写了数据同步和模板绑定,zabbix其实能做的事还蛮多。

    zabbix提供了一个非常好的前端展示页面,但是我们总觉得不太好看;我们可以进一步调用他的api通过获取每一个监控项的历史数据,然后打到我们的监控平台上;主流的有rrdtool方式和highcharts方式;rrdtool略显复杂,还要学习rrdtool之类的几个聚合方式。相对而言我更喜欢highcharts的方式,出图简便,只需要提供数据和时间戳组成的json数据就够了,之前也介绍过具体;那么这里我们先拿出我们想要的数据。

    zabbix的api读取方式如下:

    1、通过post方式传入用户名密码获取token秘钥。

    2、获取所有主机的hostid和name。

    3、通过hostid获取每个监控项目的item和对应的key。

    4、通过传入的itemid获取相对应的历史数据。

以上步骤都是需要传入token才能执行操作,pipy已经提供了第三方插件,让我们省去了这一部分的操作;具体参考: api文档请参考官方文档。想多写点代码可以看小马哥的博客:http://www.xiaomastack.com/2014/08/17/rrdtool-1/。

1、获取主机的代码:

    def get_hosts(self):        data = {        "output": ["hostid", "name"]        }        ret = self.zb.host.get(**data)        return ret

执行结果:

2、获取每个主机对应的监控项和监控项具体名称:

     def item_get(self, hostids="10109"):            data = {           "output":["itemids","key_"],           "hostids": hostids,            }            ret = self.zb.item.get(**data)            return ret

执行结果:

3、获取对应的历史数据:

    def history_get(self, itemid, i ,limit=10):        data = { "output": "extend",          "history": i,          "itemids": itemid,          "sortfield": "clock",          "sortorder": "DESC",          "limit": limit          }        ret = self.zb.history.get(**data)        return ret

具体代码:

from zabbix_client import ZabbixServerProxyclass Zabbix():    def __init__(self):        self.zb = ZabbixServerProxy("http://192.168.10.100/zabbix")        self.zb.user.login(user="Admin", password="zabbix")    def get_hosts(self):        data = {        "output": ["hostid", "name"]        }        ret = self.zb.host.get(**data)        return ret    def item_get(self, hostids="10109"):        data = {       "output":["itemids","key_"],       "hostids": hostids,        }        ret = self.zb.item.get(**data)        return ret    def history_get(self, itemid, i ,limit=10):    ###history参数中有0,1,2,3,4表示:float,string,log,integer,text        data = { "output": "extend",          "history": i,          "itemids": itemid,          "sortfield": "clock",          "sortorder": "DESC",          "limit": limit          }        ret = self.zb.history.get(**data)        return retif __name__ == "__main__":    zabbix_server = Zabbix()#    print zabbix_server.get_hosts()    print zabbix_server.history_get("24519",3)

转载地址:http://ptyxa.baihongyu.com/

你可能感兴趣的文章
多年一直想完善的自由行政审批流程组件【2002年PHP,2008年.NET,2010年完善数据设计、代码实现】...
查看>>
自动生成四则运算题目
查看>>
【翻译】使用新的Sencha Cmd 4命令app watch
查看>>
【前台】【单页跳转】整个项目实现单页面跳转,抛弃iframe
查看>>
因为你是前端程序员!
查看>>
数据库设计中的14个技巧
查看>>
Android学习系列(5)--App布局初探之简单模型
查看>>
git回退到某个历史版本
查看>>
ecshop
查看>>
HTML5基础(二)
查看>>
在GCE上安装Apache、tomcat等
查看>>
在Mac 系统下进行文件的显示和隐藏
查看>>
ue4(c++) 按钮中的文字居中的问题
查看>>
技能点
查看>>
读书笔记《乌合之众》
查看>>
Hadoop日记Day1---Hadoop介绍
查看>>
iOS 学习资料汇总
查看>>
centos7 yum安装jdk
查看>>
Bluedroid与BluZ,蓝牙测试方法的变动(基于bludroid和BlueZ的对比)
查看>>
接口和抽象类有什么区别
查看>>