0x00 前言
我从部署zabbix到二开zabbix转变。
做了一些跟 zabbix 相关的东西。
对我来说,Zabbix 的触发器是非常重要的功能,绝大多数二次开发都是围绕着触发器来做的。
如果你不喜欢,你可以把里面的 Zabbix_Start 类单独取出来放到你自己的代码里。
0x01 基本
ykzabbix 的基本原理是初始化 Zabbix_Start 类时,会从 Zabbix 服务器上获取一个tokenimport pyzabbix
zabbix_api_obj = pyzabbix.Zabbix_Start('192.168.0.111','Admin','zabbix')
#成功的情况下,会输出从 zabbix 服务器获取的token
print(zabbix_api_obj.token)
0x02 获取事件
初始化ykzabbix的事件类,调用事件类的 Get_All_LastTime() 获取最近的触发器事件event_obj = pyzabbix.ZabbixAPI_Event(zabbix_api_obj)
allevent = event_obj.Get_All_LastTime("3600")
for eventdata in allevent["result"]:
print(eventdata)
pass
0x03 番外
ZabbixAPI_Event.Get_All_LastTime() 方法的原理:它只是构建了一个 Json 对象,仅此而已!
def Get_All_LastTime(self,sec = 60):
"""
获取一定时间内所有触发器的数据。
如果有大量的问题时,使用该方法获取数据,Zabbix服务器可能会报错。
如果报错,则返回空值
Example:
zapi = Zabbix_Start('172.17.26.233','Admin','zabbix')
d = ZabbixAPI_Event(zapi)
s = d.Get_All()
"""
import time
data = {
"jsonrpc":"2.0",
"method":"event.get",
"params": {
"output": "extend",
"time_from": time.time() - sec,
"time_till": time.time(),
"selectTags": "extend",
"sortfield": ["clock"],
"sortorder": "DESC"
},
"auth": "",
"id": 1
}
d = self.zabbixstart.result(data,True)
return d