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)