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、获取主机的代码:

    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 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)
时间: 2024-12-04 18:38:44

zabbix 二次开发之调用api接口获取历史数据的相关文章

zabbix调用api接口批量添加主机

zabbix调用api接口批量添加主机,这里用的是python 2.7(需安装xlrd模块处理表格). (1)到官网下载xlrd模块:https://pypi.python.org/pypi/xlrd (2)解压压缩包:tar xvf xlrd-1.0.0.tar.gz(3)进入到解压的文件夹运行python setup.py install命令安装 1.整理一个excel表格(test.xlsx),格式如下: 2.addhost.py脚本,添加主机名.显示名称.dns主机名.群组.模板字段(网

AutoCAD二次开发——AutoCAD.NET API开发环境搭建

AutoCAD二次开发--AutoCAD.NET API开发环境搭建 AutoCAD二次开发--AutoCAD.NET API开发环境搭建 AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(COM),1997年VBA,1998年Visual Lisp,2006年.net API(DLL). 趋势和方向:AutoCAD.net API(AutoCAD20

[转载]微信公众平台二次开发之自定义菜单接口

原文地址:微信公众平台二次开发之自定义菜单接口作者:糊涂人 今天在SAE上运行代码时出现了一个小问题,所以发一篇博客与大家分享,这也是我第一次写关于技术上的博客,希望大家帮忙顶顶 步骤1. 你要有一个公众号,自己申请,过程略,很简单的. 步骤2. 登陆进去->高级功能,这时候要想开发必须要输入url和token,这里方法我引一下别人的文章http://www.cnblogs.com/txw1958/p/wechat-tutorial.html. 步骤3. 如果上面的工作完成了,这个时候你会在高级

C# 调用API接口处理公共类 自带JSON实体互转类

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; using System.Web; n

怎么调用api接口

api的简单调用,调用api的方法 方法一:用前端方法调用api 完整代码: 1 <!DOCTYPE html> 2 3 <html lang="en"> 4 <head> 5 <meta charset="UTF-8"> 6 <title>Title</title> 7 </head> 8 <style> 9 10 </style> 11 <body&

Zabbix二次开发_02获取数据

最近准备写一个zabbix二次页面的呈现.打算调用zabbix api接口来进行展示. 具体流程以及获取的数据. 1.  获得认证密钥 2.  获取zabbix所有的主机组 3.  获取单个组下的所有主机 4.  获取某个主机下的所有监控项 5.  获取某个监控项的历史数据 6.  获取某个监控项的最新数据 认证获取 user.login方法获取zabbix server的认证结果官方地址:https://www.zabbix.com/documentation/2.2/manual/api/r

#IT明星不是梦# 自动化平台的构建与zabbix二次开发那些事

在前东家,我对于运维平台重新做了二次的改造,当然基于zabbix平台的功能也在不断的完善,相对于之前的基础架构,我们这次采用vue + element的前端架构,出图使用的是echart的方式.后端我们使用了restful的标准通信框架. 自动化架构 1.当然在讲到zabbix之前我们先看一下我们之前在老东家的时候做的相关的一些平台操作: 平台相关注解: 底层的数据主要使用CMDB来进行管理,CMDB开放APi接口给上层的发布系统.DB系统:当然各个子系统对接都是有权限审计. 数据录入统一使用脚

zabbix 二次开发之同步CMDB主机和模板绑定

最近在做zabbix的二次开发:发现zabbix在做自动化方便提供了强悍的支持,下面分享下CMDB和zabbix打通,把CMDB平台里面的所有机器同步到zabbix数据库,然后进行批量的模板绑定: 开发环境: zabbix :2.4 python:flask框架.前端bootstrap,jquey: 实现思路: 一. 在CMDB表和ZAbbix主机表里面建立第三张管理的表(定义叫缓存表):利用zabbix API把数据库里面的host插入到第三张缓存表:然后通过和CMDB库里面的比较把没有在缓存

调用API接口,查询手机号码归属地

使用https://www.juhe.cn/提供的接口,查询归属地 在官网注册key即可使用. 代码如下 #!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib, sys from urllib import urlencode, urlopen reload(sys) sys.setdefaultencoding('utf8') #调用接口,获取结果为二维字典 def getPageCode(url, params): par