文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python3--zabbixapi 的

2023-01-31 08:05

关注

python3 使用zabbix api的一些案例。。具体可以去zabbix官网找API借口,替换一下就可以。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib.request
import json
import re

url = 'http://xxxxxxxxxxxxxxxx/api_jsonrpc.php'
username = 'xxxxxxxxxxxxxxx'
password = 'xxxxxx'


# 登陆
def requestJson(url, values):
    data = json.dumps(values).encode('utf-8')
    req = urllib.request.Request(url, data, {'Content-Type': 'application/json-rpc'})
    response = urllib.request.urlopen(req, data)
    a = response.read().decode(encoding='utf-8')
    output = json.loads(a)
    #    print output
    try:
        message = output['result']
    except:
        message = output['error']['data']
        print(message)
        quit()

    return output['result']


##登陆的API
def authenticate(url, username, password):
    values = {'jsonrpc': '2.0',
              'method': 'user.login',
              'params': {
                  'user': username,
                  'password': password
              },
              'id': '0'
              }
    idvalue = requestJson(url, values)
    return idvalue


# auth的值
auth = authenticate(url, username, password)


##查询组ID {'groupid': '8', 'name': 'Switch'}
def groups(auth):
    values = {
        "jsonrpc": "2.0",
        "method": "hostgroup.get",
        "params": {
            "output": ["groupid", "name"],
        },
        'auth': auth,
        'id': '1'
    }
    output = requestJson(url, values)
    return output


# b = groups(auth)
# print(b)

##查询主机  {'hostid': '10108',
def hosts(auth):
    values = {
        "jsonrpc": "2.0",
        "method": "host.get",
        "params": {
            "output": ["groupid", "name"],
            "groupids": "8",
        },
        'auth': auth,
        'id': '1'
    }
    output = requestJson(url, values)
    return output


host = hosts(auth)
host1 = []
host2 = []
for i in range(len(host)):
    host1.append(host[i]['name'])
    host2.append(host[i]['hostid'])

host3 = dict(zip(host1, host2))


##查询主机项目 {'key_': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'itemid': '26399'}
def item(auth):
    values = {
        "jsonrpc": "2.0",
        "method": "item.get",
        "params": {
            "output": ["itemids", "key_"],
            "hostids": "10108",
        },
        'auth': auth,
        'id': '1'
    }
    output = requestJson(url, values)
    return output


# print(item(auth))

##查询项目的历史值  'lastvalue': '-14760.0000'
def his(auth, itemids):
    values = {
        "jsonrpc": "2.0",
        "method": "item.get",
        "params": {
            "output": "extend",
            "history": 0,
            "itemids": itemids,
            "sortfield": "itemid",
            "sortorder": "DESC",
            "limit": 1
        },
        'auth': auth,
        'id': '1'
    }
    output = requestJson(url, values)
    return output


# print(his(auth,26399))

##查询触发项目值和监控项目  {'description': 'xxxxxxxxxxxxxxx', 'hostname': 'xxxxxxxxxxxxxxx', 'items': [{'itemid': '26399'}], 'triggerid': '17030'}
def trigger(auth, hostid):
    values = {
        "jsonrpc": "2.0",
        "method": "trigger.get",
        "params": {
            "output": [
                "description",
            ],
            "filter": {
                "hostid": hostid,
            },
            "selectItems": "",
            "sortfield": "hostname",
            "sortorder": "DESC"
        },
        'auth': auth,
        'id': '1'
    }
    output = requestJson(url, values)
    return output



	###简单使用案例,可查考,根据触发器查找历史。
        t1 = trigger(auth, host3[msg['Content']])
        t2 = []
        t3 = []
        for i in range(len(t1)):
            t5 = t1[i]['items'][0]  ##   'items': [{'itemid': '26399'}]
            t6 = his(auth, t5['itemid'])  ##   his(auth,26399)
            t2.append(t1[i]['description'])  ##监控项目描述
            t3.append(round(float(t6[0]['lastvalue'])) / 1000)  ##项目ID 的值
        t4 = dict(zip(t2, t3))
        t8 = []
        for k in t4:
            t7 = k + ":" + "{}".format(t4[k]) + "db"
            t8.append(t7)
        t9 = "\n".join(t8)


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯