webhook媒介类型对于使用自定义的JavaScript代码进行HTTP调用非常有用,它可以直接与外部软件(如Helpdesk系统、聊天工具或信使)集成。 您可以选择导入Zabbix已提供的集成,也可以从头创建一个自定义集成。
以下集成允许使用预定义的webhook媒体类型来推送Zabbix通知:
除了这里列出的服务外,Zabbix还可以集成 Spiceworks (无需webhook)。要把Zabbix通知转换成Spiceworks对象,需先创建一个电子邮件媒体类型,在指定的Zabbix用户配置文件设置中输入Spiceworks helpdesk的邮件地址 (例如 [email protected])。
开始使用webhook集成:
templates/media
目录中,找到所需的.xml文件;或者从Zabbix的git仓库中下载从零开始创建一个自定义的webhook:
媒体类型 选项卡包含了针对这种媒体类型的各种属性:
红色星号标记的为必填字段。
webhook媒体类型的具体参数如下:
参数 描 | |
---|---|
参数 指 | webhook变量作为属性和值对。 对于预先配置的webhook,参数列表会随着服务的不同而变化。检查webhook的 Readme.md 参数说明文件。 对于新的webhooks,默认情况下包含了几个常见的变量 (URL:<empty>, HTTPProxy:<empty>, To:{ALERT.SENDTO}, 主题:{ALERT.SUBJECT}, 消息:{ALERT.MESSAGE}), 你可以保留或删除它们。 值是url自动编码的。宏中的值会被解析,然后自动进行url编码。 参数中支持问题通知中支持的所有宏。 如果指定了HTTP Proxy,该字段支持与监控项配置 HTTP proxy 字段相同的功能。 Proxy字符串可以加上前缀 [scheme]:// 来指定使用哪种代理 (例如 https, socks4, socks5; 请参见 documentation)。 |
脚本 在 | 击参数字段(或旁边的视图/编辑按钮)时出现的块中输入JavaScript代码。这段代码将执行webhook操作。 代码可以访问所有参数,它可以执行HTTP GET、POST、PUT和DELETE请求,并可控制HTTP头和请求正文。它可以返回OK状态,以及一个可选的标签列表和标签值(例如, Jira ID: PROD-1234, Responsible: John Smith, Processed:<no value>, 等等) 或一个错误的字符串。 另请参阅: Webhook脚本范例; 额外的JavaScript对象。 注意 脚本只有在创建警报之后才会执行。如果脚本被配置为返回和处理标签 (参见 Process tags 选项),这些标签将不会在初始问题消息和恢复消息中的 {EVENT.TAGS} 和 {EVENT.RECOVERY.TAGS} 宏中解析,因为脚本还没有时间运行。 |
超时 J | vaScript执行超时 (1-60s, 默认为30s)。 支持时间后缀, 例如 30s, 1m。 |
Process tags | 选中复选框标以将返回的JSON属性值作为标记处理。这些标记被添加到Zabbix中已经存在的(如果有的话)问题事件标记中。 |
Include event menu entry | 选中复选框以在 事件菜单 中包含一个链接到创建的外部目标的条目。 若选中此项,webhook就不应该被用来向不同的用户发送通知 (考虑创建一个 专用用户) 或者在几个告警动作中关联单个问题事件。 |
Menu entry name | 指定菜单入口名称。 支持 {EVENT.TAGS.<tag name>} 宏。 只有当 Include event menu entry 被选中时,该字段才为必填项。 |
Menu entry URL | 指定菜单入口的URL。 支持{EVENT.TAGS.<tag name>} 宏。 只有当 Include event menu entry 被选中时,该字段才为必填项。 |
关于如何配置默认消息和警报处理选项的详细信息,请参见通用媒介类型参数
即使webhook不使用默认消息,webhook使用的操作类型的消息模板也必须定义。
媒介类型配置完成后, 转到 管理 → 用户 部分,将webhook媒介分配给一个现有用户或创建一个新用户来表示webhook。媒介类型 页面中描述了为现有用户设置用户媒体的步骤,这对于所有媒体类型都是通用的。
如果webhook使用标签来存储 ticket\message ID, 避免将同一个webhook作为媒体分配给不同的用户,因为这样做可能会导致webhook错误 (适用于大多数使用了 Include event menu entry 选项)。 在这种情况下,最好的做法是创建一个专用的用户来表示webhook:
配置告警动作时,请在 发送到用户 字段中添加该用户 - 这将告诉Zabbix使用webhook来获取来自这个动作的通知。
告警动作决定了哪些通知应该通过webhook发送。webhook的配置动作 步骤与所有其他媒体类型相同,但有以下例外: