Zabbix5以来的新版本与以前的版本除UI界面变化较大外,在很多功能上也有许多亮点,我这里计划安排1个系列来和大家交流一些新功能的使用,这是第一篇:使用Webhook将告警主动推送至第三方系统。

       首先说一下什么是Webhook?它是一个api概念,微服务api的使用范式之一,简单来说Webhook就是一个接收HTTP POST(或GET,PUT,DELETE)的URL。一个实现了Webhook的API就是在当事件发生的时候会向这个配置好的URL发送一条信息,与请求-响应式不同,使用Webhook,可以实时接收到消息。以往Zabbix的告警主动推送主要有2种方法,一种是使用邮件或短信等方式,另一种是使用自定义Shell脚本的方式来实现,现在Zabbix与主流技术接轨,使用Webhook就可以推送到第三方系统,且已提供了与许多系统的示例,如Jira,Redmine,OTRS等。

         下面我们就来讲讲如定义一个Webhook来推送告警。

1.点击“管理”-“报警媒介类型"-"创建媒介类型"

ZABBIX新功能系列1-使用Webhook将告警主动推送至第三方系统-LMLPHP

2.在”报警媒介类型“页面选择”类型“为“Webhook”,然后输入相关参数,如果新建,建议可以从一个已有的如"Jira"。

ZABBIX新功能系列1-使用Webhook将告警主动推送至第三方系统-LMLPHP

3.输入脚本,示例代码:

try {    Zabbix.log(4, '[ Jira webhook ] Started with params: ' + value);    var result = {            'tags': {                'endpoint': 'jira'            }        },        params = JSON.parse(value),        req = new HttpRequest(),        fields = {},        resp;    if (params.HTTPProxy) {        req.setProxy(params.HTTPProxy);    }    req.addHeader('Content-Type: application/json');    req.addHeader('Authorization: Basic ' + params.authentication);    fields.summary = params.summary;    fields.description = params.description;    fields.project = {key: params.project_key};    fields.issuetype = {id: params.issue_id};    resp = req.post('https://tsupport.zabbix.lan/rest/api/2/issue/',        JSON.stringify({"fields": fields})    );    if (req.getStatus() != 201) {        throw 'Response code: ' + req.getStatus();    }    resp = JSON.parse(resp);    result.tags.issue_id = resp.id;    result.tags.issue_key = resp.key;    return JSON.stringify(result);}catch (error) {    Zabbix.log(4, '[ Jira webhook ] Issue creation failed json : ' + JSON.stringify({"fields": fields}));    Zabbix.log(3, '[ Jira webhook ] issue creation failed : ' + error);    throw 'Failed with error: ' + error;}

4.配置专用用户并配报警媒介     

    Webhook的最佳实践是配置对应的专用用户并联系对应的报警媒介。

ZABBIX新功能系列1-使用Webhook将告警主动推送至第三方系统-LMLPHP

ZABBIX新功能系列1-使用Webhook将告警主动推送至第三方系统-LMLPHP

5.配置触发器动作来执行Webhook

ZABBIX新功能系列1-使用Webhook将告警主动推送至第三方系统-LMLPHP

创建一个新的动作

ZABBIX新功能系列1-使用Webhook将告警主动推送至第三方系统-LMLPHP

ZABBIX新功能系列1-使用Webhook将告警主动推送至第三方系统-LMLPHP

如果上面一切配置正常,当发生对应的告警将会执行对应的WEBHOOK操作,而且在5.4的版本可以定义Webhook脚本,复制上面定义的脚本到“管理”-“脚本”中创建一个新的脚本,并配置脚本作用于“Manual event action"将可以手动测试脚本的执行,这个后面我会单独作为系列的一个题目介绍。

ZABBIX新功能系列1-使用Webhook将告警主动推送至第三方系统-LMLPHP

如果您喜欢这个系列,请扫描关注:ZABBIX新功能系列1-使用Webhook将告警主动推送至第三方系统-LMLPHP

05-06 22:56