Home  >  Article  >  Backend Development  >  Detailed explanation of the use of python3-zabbixapi

Detailed explanation of the use of python3-zabbixapi

高洛峰
高洛峰Original
2017-03-10 18:45:201437browse

This article explains in detail the use of python3-zabbixapi

Some cases of python3 using zabbix api. . Specifically, you can go to the zabbix official website to find the API excuse and just replace it.

#!/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)


The above is the detailed content of Detailed explanation of the use of python3-zabbixapi. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn