# coding=utf8
# Autor : Always V
# Time : 2018/9/13 15:56
# File : zabbix_api.py
# Software PyCharm
'''
env: python3.6 zabbix3.4.11
zabbix api文档地址:https://www.zabbix.com/documentation/3.4/
'''
import json
from urllib import request
url = "http://xx.xx.xx.xx/zabbix/api_jsonrpc.php"
header = {"Content-Type":"application/json"}
def get_sumbit_data(src_method, src_params, src_no, is_or_not_auth=""):
'''
:param src_method: 需要调用的接口
:param src_params: 需要填的参数
:param src_no: id号
:param is_or_not_auth:权限id
:return: 返回json数据
'''
if not is_or_not_auth:
data = json.dumps(
{
"jsonrpc": "2.0",
"method": src_method,
"params": src_params,
"id": src_no ,
}).encode('utf-8')
else:
data = json.dumps(
{
"jsonrpc": "2.0",
"method": src_method,
"params": src_params,
"id": src_no ,
"auth": is_or_not_auth
}).encode('utf-8')
req = request.Request(url, headers=header, data=data)
try:
ret_urlopen = request.urlopen(req)
return req, ret_urlopen
except Exception as e:
print("Auth Failed, Please Check Your Name And Password:", e)
class ZabbixApi(object):
def __init__(self):
params = {"user": "xxxx", "password": "xx@xxx"}
self.req, self.result = get_sumbit_data("user.login", params, 0)
def _get_auth_id(self):
response = self.result.read().decode('utf-8')
page = json.loads(response)
self.result.close()
self.auth_id = format(page.get('result'))
print("Auth Successful. The Auth ID Is: {}".format(page.get('result')))
def _get_hostsgroup_id(self):
params = {"output": ["groupid", "name"],}
self.req, self.result = get_sumbit_data("hostgroup.get", params, 1,self.auth_id)
response = self.result.read().decode('utf-8')
page = json.loads(response)
self.result.close()
for hostsgroup in page.get('result'):
print("----host_groups----",hostsgroup)
def _get_hosts_id(self):
#groupids的值是上面获取的主机组id
params = {"output": ["hostid", "name"],"groupids": "2",}
self.req, self.result = get_sumbit_data("host.get", params, 0,self.auth_id)
response = self.result.read().decode('utf-8')
page = json.loads(response)
self.result.close()
for hostid in page.get("result"):
print("_get_hosts_id Successful. The _get_hosts_id ID Is: ",hostid)
def _get_items_id(self):
#hostids指的是host的id
params = {"output": ["itemids", "key_", "history"], "hostids": "10255",}
self.req, self.result = get_sumbit_data("item.get", params, 1, self.auth_id)
response = self.result.read().decode('utf-8')
page = json.loads(response)
self.result.close()
for itemsid in page.get('result'):
print("----=-=-=-s=-----",itemsid)
def _get_history_monitor_data(self):
#history参数需要一一对应,具体含义:
# 0 - numeric float;数字浮点数
# 1 - character;字符
# 2 - log; 日志
# 3 - numeric unsigned; 数字符号
# 4 - text.文本
params = {"output": "extend","history": 1,"itemids": "28312","limit": 10}
self.req, self.result = get_sumbit_data("item.get", params, 1, self.auth_id)
response = self.result.read()
page = response.decode('utf-8')
page = json.loads(page)
self.result.close()
for data in page.get("result"):
print("----=-=-=-=-----",data)
zapi = ZabbixApi()
zapi._get_auth_id()
zapi._get_hostsgroup_id()
zapi._get_hosts_id()
zapi._get_items_id()
zapi._get_history_monitor_data()