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,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
安全 数据挖掘 API
【实时数据】商品详情API接口系列开发
商品详情API接口系列对于电商平台至关重要,它们为开发者提供了实时、准确的商品信息,使得在线销售和展示商品变得更加高效和精准。以下是几个主要的电商平台及其商品详情API接口的介绍:
|
2月前
|
SQL API 数据库
为API设置默认排序规则结果数据的正确性
Dataphin数据服务支持API调用时通过OrderByList自定义排序,确保数据返回符合业务需求。默认排序在API设计时至关重要,因为它影响用户体验、数据一致性及查询正确性。新版本 Dataphin 提供了排序优先级设置,允许在SQL脚本或OrderByList中指定排序,以适应不同场景。
|
3天前
|
分布式计算 DataWorks API
DataWorks产品使用合集之使用REST API Reader往ODPS写数据时,如何获取入库时间
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
15天前
|
JSON JavaScript 前端开发
若依修改,若依如何发送get和post请求,发送数据请求的写法,若依请求的API在src的api文件下,建立请求的第一步,在API中新建一个文件,第二步新建JavaScript文件
若依修改,若依如何发送get和post请求,发送数据请求的写法,若依请求的API在src的api文件下,建立请求的第一步,在API中新建一个文件,第二步新建JavaScript文件
|
22天前
|
JSON 数据可视化 API
技术心得:如何用Python和API收集与分析网络数据?
技术心得:如何用Python和API收集与分析网络数据?
21 2
|
2月前
|
DataWorks 安全 数据可视化
DataWorks Embed API - 手把手教您在自建的 Web 嵌入 DataWorks 数据血缘图
DataWorks 提供丰富的数据可视化界面,让用户能轻松地透过界面操作大数据业务,但仍有集成至自建 Web 界面的需求,减少切换页面的频率。下文就以透过阿里云令牌服务结合自建 Web 界面代理登录阿里云,做到嵌入DataWorks数据地图的血缘图。
174 1
DataWorks Embed API - 手把手教您在自建的 Web 嵌入 DataWorks 数据血缘图
|
1月前
|
数据采集 DataWorks 监控
DataWorks产品使用合集之可以使用API来访问数据吗
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
26 6
|
16天前
|
API
Vue2和Vue3的区别,OptionsAPI与CompositionAPI的区别,Vue2所有的数据,都写在data和method方法中,setup是一个全新的配置项,Vue2是选项式API的写法
Vue2和Vue3的区别,OptionsAPI与CompositionAPI的区别,Vue2所有的数据,都写在data和method方法中,setup是一个全新的配置项,Vue2是选项式API的写法
|
17天前
|
JavaScript API
前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用
前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用
|
17天前
|
API
前后端数据交互,API风格组合式API和选项式API,setup是一个标识,组合式编写的意思,使定义count.value的值自增的写法,组合式API使用axios的写法,ref定义响应数据写法
前后端数据交互,API风格组合式API和选项式API,setup是一个标识,组合式编写的意思,使定义count.value的值自增的写法,组合式API使用axios的写法,ref定义响应数据写法

推荐镜像

更多