1.获取访问zabbix的token
header = {
'Content-Type': 'application/json-rpc'
}
def get_token():
login_param = '''
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "root",
"password": "password"
},
"id": 1,
"auth": null
}'''
rep = requests.post('http://127.0.0.1:8000/api_jsonrpc.php', headers = header, data = login_param)
return str(json.loads(rep.text)['result'])
2.获取被监控项目的item
2.1 找到被监控的主机配置的所有监控,然后找到关键词 2.2 根据主机的hostids 和找到的关键词找到对应的item
header = {
'Content-Type': 'application/json-rpc'
}
def get_item(token):
get_item_param ='''
{
"jsonrpc": "2.0",
"method": "item.get",
"params": {
"output": "extend",
"hostids": "hostids", #点击主机的地方url路径中有这个参数
"search": {
"key_": "检控页面配置的关键词"
},
"sortfield": "name"
},
"auth": "''' + token + '''",
"id": 1
}
'''
rep = requests.post('http://127.0.0.1:8000/api_jsonrpc.php',headers = header,data = get_item_param)
return json.dumps(json.loads(rep.text),indent=4)
3.根据itemid 和token 获取对应的指标
其中的条件是时间 其他指标同理 具体可以参考官方的文档
header = {
'Content-Type': 'application/json-rpc'
}
def get(token):
min_time = str(int(time.mktime(datetime.date.today().timetuple())))
max_time = str(int(time.time()))
history_param ='''
{
"jsonrpc": "2.0",
"method": "history.get",
"params": {
"output": "extend",
"history": 3,
"itemids": "itemids",
"sortfield": "clock",
"sortorder": "DESC",
"time_from":'''+min_time+''',
"time_till":'''+max_time+'''
},
"auth": "''' + str(token) + '''",
"id": 1
}
'''
print(min_time)
print(max_time)
rep = requests.post('http://127.0.0.1:8000/api_jsonrpc.php', headers = header,data = history_param)
list = []
for value in json.loads(rep.text)["result"]:
list.append(int(value["value"]))
return max(list)