时间:2021-07-01 10:21:17 帮助过:51人阅读
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)
以上就是详解python3-zabbixapi的使用的详细内容,更多请关注Gxl网其它相关文章!