上次通过zabbix api获取到监控的主机组,这次通过zabbix api获取一下告警的信息,把zabbix告警信息集成到自己的系统中,如下:
上面的图是zabbix网页自带的告警展示,下面图是自己通过调取zabbix api获取到告警信息并展示到自己的网页上。后端使用的是flask,前端页面使用的是jinjia2模板。
实现过程如下,先看后端调用zabbix api并把结果进行封装传递给trigger.html,并进行渲染,后端代码如下:
# 获取zabbix trigge@app.route('/zabbix/trigger', methods=['GET', 'POST'])def zabbix_trigger(): json_result = modules_zabbix.zabbix_auth() if json_result: response = json.loads(json_result) data = { "jsonrpc": "2.0", "method": "trigger.get", "params": { "output": "extend", "selectHosts": "extend", "sortfield": "priority", "sortorder": "DESC", "only_true": "1", "monitored" : "1", "active":"1", "filter": { "value": 1 }, }, "id": response['id'], "auth": response['result'] } response = modules_zabbix.zabbix_request(data) if response: app.logger.debug(response) response = json.loads(response) return render_template('zabbix/trigger.html', response=response)
zabbix_auth和zabbix_request方法请参考我前面一篇文章,要使用zabbix api需要先进行认证,获取token才能继续获取其它的值,文章链接: 。使用zabbix api的trigger.get方法获取触发器的信息,selectHosts表示把主机的信息也获取出来,因为前端要进行展示。另外,only_true、monitored、active、filter参数主要是把有效的告警信息获取出来,具体可参考zabbix官网:。
通过zabbix api获取完数据,就可以在前端进行展示,看下前端的代码:
{% for result in response['result'] %} 主机 告警描述 {% for host in result['hosts'] %} {% endfor %}{ { host['host'] }} {% endfor %}{ { result['description'] }}
获取告警信息后,感觉zabbix api获取一些数据还是比较方便的,获取出告警出来代码量不多。可以再使用withUnacknowledgedEvents这个来把我们没确认过的告警筛选出来。
最后附上本人的网络课堂地址,如有兴趣请点击: