(三)Python调用Zabbix api之从入门到放弃——从本节开始放弃

因为忙着写项目。所以没有时间来回倒腾!因此开始讨厌写一些技术博客,所以从本节开始放弃,刚入门就要放弃了!可能我是一个不善于分享的人,也可能我是一个自私的人。不得不承认白羊座的人做事情确实是三分钟热度。昨天还想着好好的写一篇系列文章,除了当是给自己做一些总结之外,也可以帮助到有需要的朋友。不过,确实是三分钟热度了,今天是拔凉拔凉的。

好了,下面是获取IP,HOSTS,HOSTID,GROUPID,ITEMID的Python代码,随便贴点,希望起到抛砖引玉的效果。当然,也是不完整的。

# -*- coding:utf-8 -*-

class Token:
    """Request zabbix server token"""
    __REQ = {
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            "user": ZBXUSER,
            "password": ZBXPASS
        },
        "id": 0
    }

    @classmethod
    def request(cls):
        try:
            try:
                return ZBXHttp.request(Token.__REQ)['result']
            except Exception:
                raise MonAlarmException('Invalid username or password, unable to request zabbix token')
        except MonAlarmException as e:
            e.error()
            return Response.format(errorDesc=e, errorCode=MonAlarmErrCode.UNABLE_REQ_TOKEN)

class BasicData:
    __REQ = {
        "jsonrpc": "2.0",
        "method": "host.get",
        "params": {
            "output": ['host'],
            'selectInterfaces': ['ip'],
            'selectGroups': ''
        },
        "auth": Token.request(),
        "id": 1
    }

    @classmethod
    def __request(cls):
        result = ZBXHttp.request(BasicData.__REQ)
        err = result.get('error', None)
        if err:
            try:
                raise MonAlarmException('Unable to request basic data, Session terminated, re-login, please.')
            except MonAlarmException as e:
                e.error()
                return Response.format(errorDesc=e, errorCode=MonAlarmErrCode.UNABLE_REQ_BASICDATA)
        else:
            return result

    @classmethod
    def get_summary(cls):
        ip = []
        host = []
        hostid = []
        groupid = []

        result = cls.__request()['result']
        for item in result:
            ip.append(item['interfaces'][0]['ip'])
            host.append(item['host'])
            hostid.append(item['hostid'])
            groupid.append(item['groups'][0]['groupid'])

        return [ip, host, hostid, groupid]

class ItemsID:
    @classmethod
    def request(cls,host_id, item_name):
        __REQ = {
            "jsonrpc": "2.0",
            "method": "item.get",
            "params": {
                "output": "itemid",
                "hostids": host_id,
                "search": {"key_": item_name}
            },
            "auth": Token.request(),
            "id": 2
        }
        try:
            return ZBXHttp.request(__REQ)['result'][0]['itemid']
        except Exception:
            return 0
# -*- coding:utf-8 -*-

class Action:
    @classmethod
    def get_cpu_data(cls):
        summary = BasicData.get_summary()
        ip = summary[0]
        host = summary[1]
        hostid = summary[2]
        groupid = summary[3]

        count = len(summary[0])

        for index in range(count):
            itemid = ItemsID.request(hostid[index], CpuItem.item_cpu_used)
            print({
                'ip': ip[index],
                'host': host[index],
                'hostid': hostid[index],
                'groupid': groupid[index],
                'itemname': CpuItem.item_cpu_load,
                'itemid': itemid
            })

if __name__ == '__main__':

    Action.get_cpu_data()

原文地址:http://blog.51cto.com/freshair/2133274

时间: 2024-11-07 06:15:36

(三)Python调用Zabbix api之从入门到放弃——从本节开始放弃的相关文章

(二)Python调用Zabbix api之从入门到放弃——登录并获取身份验证令牌

访问zabbix api的URL是: http://x.x.x.x/zabbix/api_jsonrpc.php x.x.x.x可能是你的IP或者域名 访问流程概览: 1.首先登录 2.认证成功后zabbix server返回一个token 3.带着这个token去访问各种数据,做各种操作 4.完毕! 一.用RESTClient进行登录 在json请求的正文中,具有以下属性: jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0; me

(一)Python调用Zabbix api之从入门到放弃——准备工作

需要准备: 1.有可以用的zabbix服务端 2.准备一个火狐浏览器插件--RESTClient,用于调试使用 3.你必须具备python知识,如不具备,请放弃.谢谢! 4.你最好再有一个方便使用的python IDE,我的是Pycharm 原文地址:http://blog.51cto.com/freshair/2132723

python 调用zabbix api实现查询主机信息,输出所有主机ip

之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python #coding:utf8 import requests import json headers = {'Content-Type': 'application/json-rpc'} server_ip = '10.37.149.109' url = 'http://%s/zabbix/api_j

python调用zabbix api接口实时展示数据

近日公司准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示. 经过思考之后,计划获取如下内容: 1.  获得认证密钥 2.  获取zabbix所有的主机组 3.  获取单个组下的所有主机 4.  获取某个主机下的所有监控项 5.  获取某个监控项的历史数据 6.  获取某个监控项的最新数据 计划最后展示框架如下内容(这只是值方面,其它的会再加): 主机组1 ----主机名1---监控项1----当前值 ---监控项2----当前值 ----主机名2----监控

Python调用Zabbix API接口批量修改(禁用/启用)触发器trigger

#!/bin/env python3 #coding:utf-8 import json import os import requests url = "http://192.168.1.1/zabbix/api_jsonrpc.php" # 此处域名修改为相应的地址 headers = { 'Content-Type': 'application/json-rpc' } def token_get(): #根据账号密码获取token data = { "jsonrpc&q

Python调用微博API

上头叫通过微博ID获取用户发布过的历史微博内容,于是研究了下新浪微博提供的API 1 首先在微博开放中心下"创建应用"创建一个应用,应用信息那些随便填,填写完毕后,不需要提交审核,需要的只是那个app-key和app-secret 2 在"微博开放平台"的"管理中心"找到刚才创建的应用,点开这个应用,点开左边"应用信息"栏,会看见"App key"和"App Secret"的字样,这两个

使用Python调用Flickr API抓取图片数据

Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据. 首先需要先去Flickr注册成为其开发者,创建应用,获得API_KEY和API_SECRET,其API网址在:https://www.flickr.com/services/api/ Flickr提供了多种开发工具进行使用.这里我们使用Python开发工具.官方推荐的开发工具是Beej’s Python

用zabbix生成awstats图表以及通过Python调zabbix API自动化操作

awstats作为一款日志分析软件,功能不错,但是界面过于简单,也没有图表功能,这里我采取了一种变通的方法,将awstats的分析结果(pv.hits(文件数).bandwidth.visits(独立ip))添加到zabbix,并通过zabbix生成趋势图表. 在前两篇文章中,我们队awstats的使用及其工作方式进行了简明扼要的介绍:awstats对每个站点进行分析之后,会生成一个"awstats012016.txt"格式的"数据库"文件:awstats的展示页面

调用zabbix API实现批量管理主机及个监控项

首先贴上zabbix官网和中文官网的地址: https://www.zabbix.com/documentation/3.4/manual/api/reference/item/object https://www.zabbix.com/documentation/3.4/zh/manual/api 任何时候任何难题在官网上几乎都能找到答案 首先,我们想用利用zabbix的restful api来访问zabbix,肯定是需要登陆认证的.在zabbix的后续操作中,必须要有一个TOKEN,这也是官