zabbix二次开发-flask-获取告警

上次通过zabbix api获取到监控的主机组,这次通过zabbix api获取一下告警的信息,把zabbix告警信息集成到自己的系统中,如下:

222802_zkZ2_1588616.png

222903_AfJ6_1588616.png

上面的图是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才能继续获取其它的值,文章链接:https://my.oschina.net/zhuangweihong/blog/789976 。使用zabbix api的trigger.get方法获取触发器的信息,selectHosts表示把主机的信息也获取出来,因为前端要进行展示。另外,only_true、monitored、active、filter参数主要是把有效的告警信息获取出来,具体可参考zabbix官网:https://www.zabbix.com/documentation/3.0/manual/api/reference/trigger/get

 

通过zabbix api获取完数据,就可以在前端进行展示,看下前端的代码:

    <div class="container">
        <div class="col-md-8">
            <table class="table">
                <thead>
                <tr>
                    <th>主机</th>
                    <th>告警描述</th>
                </tr>
                </thead>
                <tbody>
                {% for result in response['result'] %}
                    <tr>
                        {% for host in result['hosts'] %}
                            <td>{{ host['host'] }}</td>
                        {% endfor %}
                        <td>{{ result['description'] }}</td>
                    </tr>
                {% endfor %}
                </tbody>
            </table>
        </div>
    </div>

 

获取告警信息后,感觉zabbix api获取一些数据还是比较方便的,获取出告警出来代码量不多。可以再使用withUnacknowledgedEvents这个来把我们没确认过的告警筛选出来。

 

最后附上本人的网络课堂地址,如有兴趣请点击: 实践哥

转载于:https://my.oschina.net/zhuangweihong/blog/794543

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值