04:获取zabbix监控信息
目录:zabbix其他篇
03: zabbix API接口 对 主机、主机组、模板、应用集、监控项、触发器等增删改查
目录:
1.1 检索警报 返回顶部
参考官网:https://www.zabbix.com/documentation/3.4/zh/manual/api/reference/alert/get
1、通过触发器trigger获取所有报警信息
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#! /usr/bin/env python # -*- coding: utf-8 -* import urllib2 import json url = 'http://1.1.1.5/zabbix/api_jsonrpc.php' username = 'Admin' password = '1' ################################ 一:登陆脚本 login.py ########################### #1、定义通过HTTP方式访问API地址的函数,后面每次请求API的各个方法都会调用这个函数 def requestJson(url,values): data = json.dumps(values) req = urllib2.Request(url, data, {'Content-Type': 'application/json-rpc'}) response = urllib2.urlopen(req, data) output = json.loads(response.read()) try: message = output['result'] except: message = output['error']['data'] print message quit() return output['result'] #2、API接口认证的函数,登录成功会返回一个Token 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 # 结果是一个token值:cc75ed2a314906a835ac0786266468ac
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 获取所有触发器中报警信息,如果不报警则不会获取到 def trigger_get_alarm(auth): values = { "jsonrpc": "2.0", "method": "trigger.get", "params": { "output": [ "host", "description", "triggerid", "eventid", "templateids" ], "selectGroups": [ "name" ], "selectHosts": [ "name", "host" ], "selectItems": [ "name", "lastvalue", "units" ], "filter": { "value": 1 }, "monitored": 1, "selectLastEvent": "extend", "expandComment": 1, "expandDescription": 1, "sortfield": "priority", "sortorder": "DESC", "withLastEventUnacknowledged": 1 }, "auth": auth, "id": 1 } output = requestJson(url, values) return output auth = authenticate(url, username, password) print json.dumps( trigger_get_alarm(auth) ) # 获取的报警信息如下 ''' [{ "description": "User_Login", # 这里是报警信息的具体内容 "items": [{ "itemid": "28439", "units": "", "lastvalue": "59", "name": "login_user" }], "lastEvent": { "eventid": "73", "objectid": "15601", "clock": "1528266869", "object": "0", "acknowledged": "0", "value": "1", "source": "0", "ns": "387320307" }, "triggerid": "15601", "hosts": [{ "host": "zabbix_agent_1.1.1.3", "hostid": "10264", "name": "zabbix_agent_1.1.1.3" }], "groups": [{ "groupid": "19", "name": "New Create Group" }, { "groupid": "20", "name": "New Group 02" }] }] '''
1.2 历史数据 返回顶部
参考官网:https://www.zabbix.com/documentation/3.4/zh/manual/api/reference/history/get
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#1、只返回给定 监控项 的历史记录 def get_historys_by_item(auth): values = { "jsonrpc": "2.0", "method": "history.get", "params": { "output": "extend", "history": 3, # 要返回的历史对象类型 # 0 - numeric float;数字浮点数;1 - character;字符 ;2 - log; 日志;3 - numeric unsigned; 数字符号;4 - text.文本 "itemids": ["28439"], "sortfield": "clock", "sortorder": "DESC", "limit": 2 # 显示两条数据 }, "auth": auth, "id": 1 } output = requestJson(url, values) return output auth = authenticate(url, username, password) print json.dumps( get_historys_by_item(auth) ) ''' [{ "itemid": "28439", "ns": "244866385", "value": "4", "clock": "1528274369" }, { "itemid": "28439", "ns": "197647992", "value": "4", "clock": "1528274339" }] '''
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#2、只返回给定 主机 的历史记录 def get_historys_by_host(auth): values = { "jsonrpc": "2.0", "method": "history.get", "params": { "output": "extend", "history": 3, # 要返回的历史对象类型 # 0 - numeric float;数字浮点数;1 - character;字符 ;2 - log; 日志;3 - numeric unsigned; 数字符号;4 - text.文本 "hostids": "10264", "sortfield": "clock", "sortorder": "DESC", "limit": 2 # 显示两条数据 }, "auth": auth, "id": 1 } output = requestJson(url, values) return output auth = authenticate(url, username, password) print json.dumps( get_historys_by_host(auth) ) ''' [{ "itemid": "28439", "ns": "244866385", "value": "4", "clock": "1528274369" }, { "itemid": "28439", "ns": "197647992", "value": "4", "clock": "1528274339" }]
作者:学无止境
出处:https://www.cnblogs.com/xiaonq
生活不只是眼前的苟且,还有诗和远方。