zabbix 二次开发之调用api接口获取历史数据

简介:

     前面一篇写了数据同步和模板绑定,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已经提供了第三方插件,让我们省去了这一部分的操作;具体参考:https://pypi.python.org/pypi/zabbix-client/0.1.1;zabbix api文档请参考官方文档。想多写点代码可以看小马哥的博客:http://www.xiaomastack.com/2014/08/17/rrdtool-1/。



1、获取主机的代码:

1
2
3
4
5
6
     def  get_hosts( self ):
         data  =  {
         "output" : [ "hostid" "name" ]
         }
         ret  =  self .zb.host.get( * * data)
         return  ret

执行结果:

wKiom1bs2ZeQ8h4-AAAWp5vQUCg265.png


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

1
2
3
4
5
6
7
      def  item_get( self , hostids = "10109" ):
             data  =  {
            "output" :[ "itemids" , "key_" ],
            "hostids" : hostids,
             }
             ret  =  self .zb.item.get( * * data)
             return  ret

执行结果:

wKiom1bs2kCR8dxUAACJFCe8cpY529.png


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

1
2
3
4
5
6
7
8
9
10
     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


wKiom1bs2rCxd8hfAABJdtliRu4984.png


具体代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from  zabbix_client  import  ZabbixServerProxy
class  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  ret
if  __name__  = =  "__main__" :
     zabbix_server  =  Zabbix()
#    print zabbix_server.get_hosts()
     print  zabbix_server.history_get( "24519" , 3 )









本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1752848,如需转载请自行联系原作者
目录
相关文章
|
10天前
|
缓存 前端开发 API
API接口封装系列
API(Application Programming Interface)接口封装是将系统内部的功能封装成可复用的程序接口并向外部提供,以便其他系统调用和使用这些功能,通过这种方式实现系统之间的通信和协作。下面将介绍API接口封装的一些关键步骤和注意事项。
|
17天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。
|
29天前
|
安全 算法 API
产品经理必备知识——API接口
前言 在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如今万物互联的时代,我通过一部手机就可以实现衣食住行的方方面面,比如:在家购物、远程控制家电、自动驾驶等等,背后都离不开我们今天要聊的API接口。
|
29天前
|
数据采集 JSON API
如何实现高效率超简洁的实时数据采集?——Python实战电商数据采集API接口
你是否曾为获取重要数据而感到困扰?是否因为数据封锁而无法获取所需信息?是否因为数据格式混乱而头疼?现在,所有这些问题都可以迎刃而解。让我为大家介绍一款强大的数据采集API接口。
|
1月前
|
安全 API 数据安全/隐私保护
API接口知识小结
应用程序接口API(Application Programming Interface),是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统(中后台系统)或后台不同系统之间的交互点。包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口。
|
4天前
|
人工智能 API 开发者
免费使用Kimi的API接口,kimi-free-api真香
今年AI应用兴起,各类智能体涌现,但API免费额度有限。为解决这一问题,GitHub上的[kimi-free-api](https://github.com/LLM-Red-Team/kimi-free-api)项目提供了方便,支持高速流式输出、多轮对话等,与ChatGPT接口兼容。此外,还有其他大模型的免费API转换项目,如跃问StepChat、阿里通义Qwen等。该项目可帮助用户免费体验,通过Docker-compose轻松部署。只需获取refresh_token,即可开始使用。这个开源项目促进了AI学习和开发,为探索AI潜力提供了新途径。
173 2
|
9天前
|
JSON 监控 API
在API接口对接中关键示例问题(1)
在API接口对接中,有几个关键的问题需要注意,以确保接口的稳定性、安全性和易用性。以下是这些问题及部分示例代码的简要概述
|
12天前
|
Java BI API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
12 0
|
18天前
|
XML API 网络架构
API 常用的接口类型都有哪些?
在软件开发的宏大舞台上,接口充当着不可或缺的角色,确保了不同的软件模块能够高效、无缝地沟通和协作。
|
18天前
|
监控 API 开发者
邮件发送API接口配置步骤?
`邮件发送API让开发者轻松集成邮件功能。选择服务提供商如SendGrid、Mailgun或AWS SES,注册获取API密钥。配置发件人、收件人、主题和内容,调用API发送邮件。处理响应以确认发送成功,并监控性能进行优化。API简化了邮件发送,提升开发效率。`

热门文章

最新文章

推荐镜像

更多