Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Verwendung von python3-zabbixapi

Detaillierte Erläuterung der Verwendung von python3-zabbixapi

高洛峰
高洛峰Original
2017-03-10 18:45:201439Durchsuche

In diesem Artikel wird die Verwendung von python3-zabbixapi ausführlich erläutert.

Einige Fälle, in denen Python3 die Zabbix-API verwendet. . Insbesondere können Sie auf der offiziellen Website von Zabbix nach der API-Ausrede suchen und diese einfach ersetzen.

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


Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von python3-zabbixapi. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn