资讯详情

Zabbix 8.0 集成 Microsoft Teams Workflow Webhook 告警通知完整指南

📅 2026/10/6 12:22:05 | 华诺云谱 👁 阅读
Zabbix 8.0 集成 Microsoft Teams Workflow Webhook 告警通知完整指南
指标监控可观测性告警运维【免费下载链接】zabbixReal-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.项目地址https://gitcode.com/gh_mirrors/zabbix2/zabbix点击查看免费下载本指南基于 Zabbix 官方仓库中的 MS Teams Workflow 媒体类型模板系统讲解如何利用 Zabbix 的Webhook 媒体类型机制将告警事件推送到 Microsoft Teams 频道。文章覆盖 Teams 侧 Workflow 的完整创建流程、Zabbix 侧全局宏 / 媒体类型 / 用户 / 动作的配置步骤、14 个 webhook 参数的作用与取值并深入剖析 media_msteams_workflow.yaml 中 JavaScript 脚本的执行逻辑帮助读者快速落地一套可用的 Teams 告警通道。概述Zabbix 与 MS Teams Workflow 的集成原理Zabbix 的 Webhook 媒体类型本质上是一个内嵌的 JavaScript 执行引擎当告警动作被触发时Zabbix Server 的 escalator 模块取出媒体类型中配置的脚本与参数见 src/zabbix_server/escalator/escalator.c 中对ZBX_SCRIPT_TYPE_WEBHOOK的处理由 alerter 进程通过嵌入式脚本引擎执行该脚本见 src/libs/zbxalerter/alerter.c 中的alerter_process_webhook脚本内部再向目标 Webhook URL 发起 HTTP 请求。本集成正是基于这一机制让 Zabbix 通过 Teams 官方提供的Workflow工作流功能接收 Webhook 请求并在指定频道发布 Adaptive Card 卡片。其完整链路为Zabbix 事件 → 动作触发 → Webhook 脚本JS→ 构造 Adaptive Card JSON → HTTP POST → Teams Workflow → 频道发布卡片适用前提本集成仅在 Office 365 环境下的Teams中受支持Teams 免费版不支持 MS Teams Workflow 功能。Zabbix 版本要求为8.0 及以上。一、在 MS Teams 中创建 WorkflowService 侧配置1. 进入 Workflows 应用打开 Teams 客户端在左侧垂直热栏中找到...更多应用入口在弹出面板中搜索并点击Workflows应用2. 新建流程并选择模板点击右上角的 New flow按钮开始创建新流程此时主页通常为空状态。在创建页面顶部的搜索栏输入关键词channel从搜索结果中选择模板Post a channel when a webhook request is received收到 Webhook 请求时向频道发布消息。3. 命名流程并选择发布账户在Flow name输入框中填写流程名称官方示例为Zabbix webhook。在Sign in菜单中选择合适的用户——该用户将用于创建频道帖子即后续告警卡片的实际发布者。点击Next继续。4. 绑定目标团队与频道选择接收 Zabbix 事件的目标Microsoft Teams 团队team和频道channel点击Create Flow完成创建。5. 保存 Workflow 端点 URL创建成功后页面会提示Workflow added successfully。务必复制并保存弹出的 workflow endpoint URL——它将作为后续 Zabbix 媒体类型中teams_endpoint即{ALERT.SENDTO}的值是连接两端的核心凭证。6. 验证流程创建结果关闭当前窗口点击工作流菜单左上角的首页按钮即可在流程列表中看到名为Zabbix webhook的新流程点击该流程可查看详情信息归属者、状态、类型、关联 Teams 连接等提示移除卡片底部署名若希望去除卡片底部 USERNAME used a Workflow to send this card. Get template 的署名消息需要在完成上述第 9 步查看流程详情后点击Save as按钮将流程另存为副本并使用新副本的端点 URL而非第 7 步保存的原始 URL配置 Zabbix。二、Zabbix Webhook 参数详解导入媒体类型后可在 Zabbix 中通过 webhook 参数对其进行配置。参数分为可配置参数与内部参数两类。可配置参数可配置参数面向实际环境与个人偏好调整名称值说明tls_verify{$HTTP.TLS.VERIFY:MS Teams Workflow}HTTP 请求的 TLS 证书校验策略none— 禁用校验peer— 校验证书链与有效期full— 完全校验。任何其他值均视为 full完全校验。如需仅对本媒体类型覆盖该设置可定义上下文为MS Teams Workflow的全局宏例如{$HTTP.TLS.VERIFY:MS Teams Workflow}。zabbix_url{$ZABBIX.URL}当前 Zabbix 前端地址用于在告警卡片中生成指向事件详情页的链接。内部参数内部参数由预定义宏提供不应修改名称值说明event_source{EVENT.SOURCE}事件源数值0 — 触发器Trigger、1 — 发现Discovery、2 — 自动注册Autoregistration、3 — 内部事件Internal、4 — 服务Service。event_value{EVENT.VALUE}触发动作的事件数值1 为问题产生0 为恢复。event_update_status{EVENT.UPDATE.STATUS}问题更新状态数值0 — 因问题/恢复事件调用 webhook1 — 更新操作。event_nseverity{EVENT.NSEVERITY}事件严重级别数值0 — 未分类、1 — 信息、2 — 警告、3 — 平均、4 — 严重、5 — 灾难。event_severity{EVENT.SEVERITY}事件严重级别名称。event_update_nseverity{EVENT.UPDATE.NSEVERITY}事件更新严重级别数值取值同上。event_update_severity{EVENT.UPDATE.SEVERITY}事件更新严重级别名称。alert_message{ALERT.MESSAGE}动作配置中 Default message默认消息的值。alert_subject{ALERT.SUBJECT}动作配置中 Default subject默认主题的值。event_id{EVENT.ID}触发动作的事件数值 ID。trigger_id{TRIGGER.ID}该动作对应触发器的数值 ID。teams_endpoint{ALERT.SENDTO}MS Teams workflow webhook URL即用户媒体中 Send to 字段填写的地址。HTTP 代理支持每个 webhook 均支持 HTTP 代理。如需使用请在媒体类型中新增一个名为http_proxy的参数并将其值设为代理 URL。该参数在脚本中通过this.request.setProxy(this.httpProxy)生效。三、Zabbix 侧配置步骤1. 设置全局宏{$ZABBIX.URL}在 Zabbix Web 前端中进入Administration管理→Macros宏配置全局宏{$ZABBIX.URL}为 Zabbix 前端的访问地址。协议必填端口可选。正确示例http://zabbix.comhttps://zabbix.lan/http://server.zabbix.lan/http://localhosthttp://127.0.0.1:8080错误示例zabbix.com缺少协议http://zabbix/无法解析的主机名2. 导入媒体类型进入Alerts告警→Media types媒体类型导入仓库提供的 media_msteams_workflow.yaml 文件。导入后媒体类型默认处于DISABLED禁用状态需手动启用。3. 创建用户并添加媒体进入Users用户→Users用户点击右上角Create user创建用户在User用户选项卡中填写所有必填字段红色星号标记。在Media媒体选项卡中添加媒体类型并从下拉列表选择MS Teams Workflow在Send to字段中填入第 7 步创建的 incoming webhook URL。在Permissions权限选项卡中为用户选择合适角色确保该用户对需要发送 Teams 告警的所有主机具有访问权限否则无法收到对应主机的通知。4. 开始接收告警完成上述配置并启用媒体类型后即可开始接收告警。四、消息模板与 Markdown 支持MS Teams Workflow 的 webhook 支持Adaptive Cards 的 Markdown 语法。如需使用进入Alerts→Media types找到MS Teams Workflow媒体类型点击后在Message templates消息模板选项卡中选择目标消息模板并使用 Markdown 语法编辑。媒体类型自带的message_templates覆盖了触发器、发现、自动注册、内部事件、服务事件五类事件源。以触发器问题为例默认模板为Problem started at {EVENT.TIME} on {EVENT.DATE} Problem name: {EVENT.NAME} Host: {HOST.NAME} Severity: {EVENT.SEVERITY} Operational data: {EVENT.OPDATA} Original problem ID: {EVENT.ID} {TRIGGER.URL}五、源码级解析Webhook 脚本如何工作导入的 YAML 文件中内嵌了一段 JavaScript 脚本media_msteams_workflow.yaml 的script字段理解其执行流程有助于排查告警发送问题。1. TLS 校验逻辑CTlsConfig脚本将tls_verify参数归一化后映射为底层HttpRequest的 SSL 选项this.options { SSLVerifyPeer: (raw_value peer || raw_value full), SSLVerifyHost: (raw_value full) }; this.enabled (raw_value ! none);即none完全关闭校验peer校验证书链与有效期但不校验主机名full同时校验证书与主机名。此外checkURL会在启用校验时强制要求 URL 使用https://协议否则抛出异常——这也解释了为什么 Teams 的 webhook 端点必须使用 HTTPS。2. 参数校验CParamValidator脚本内置了完整的参数校验器onCheckParams阶段会对alert_subject、alert_message、zabbix_url、teams_endpoint进行字符串与 URL 格式校验并对触发器事件校验event_id、trigger_id为整数。参数异常时脚本会抛出Incorrect ... parameter之类的错误并记录到 Zabbix 日志。3. 事件路由handleEvent脚本依据event_source将事件路由到对应处理函数const types { 0: Trigger, 1: Discovery, 2: Autoreg, 3: Internal, 4: Service };事件源为 0/3/4 时根据event_update_status与event_value判定为Update/Problem/Resolve事件事件源为 1/2 时走无事件处理分支Discovery / Autoreg。4. 卡片构造与颜色语义onProblem / onResolve / onUpdate脚本构造的是application/vnd.microsoft.card.adaptive类型的 Adaptive Cardschema 版本 1.4卡片主体依次为加粗的alert_subject标题块、按行拆分的alert_message文本块以及一个指向 Zabbix 事件详情页的Action.OpenUrl按钮URL 由CWebhookHelper.createProblemURL基于zabbix_url与事件 ID 生成。不同事件类型使用不同的容器样式颜色形成直观的视觉语义事件处理函数卡片颜色问题产生onProblemattention强调色表示告警问题恢复onResolvegood绿色表示恢复问题更新onUpdateemphasis中性强调色发现 / 自动注册onDiscovery/onAutoregemphasis5. HTTP 发送与结果判定发送采用POST请求目标为teams_endpoint。脚本通过request.getStatus()检查 HTTP 状态码非 2xx 响应视为发送失败抛出包含状态码与响应正文的错误2xx 响应则返回OK。6. 告警调试在alerter_process_webhook的实现src/libs/zbxalerter/alerter.c中可以看到webhook 脚本由 Zabbix 内嵌脚本引擎执行且支持以 debug 模式返回脚本调试信息——当告警发送失败时可在告警详情中查看脚本输出与错误信息辅助定位参数错误或网络问题。六、常见问题排查思路告警发送失败日志出现Webhook processing failed多为参数校验未通过检查event_source、event_value、event_update_status等内部参数是否被误改以及zabbix_url、teams_endpoint是否符合 URL 格式要求。TLS 校验相关错误确认 Teams 端点使用https://协议如网络环境确实需要跳过校验可将tls_verify设为none生产环境不推荐。收到HTTP code: xxx错误检查 workflow 端点 URL 是否完整、是否已更换为Save as副本后的新 URL以及发送账户对目标频道是否有发布权限。未收到告警但媒体测试正常检查动作Action配置中是否启用了 MS Teams Workflow 媒体、用户媒体中的Send to是否填入了正确的端点 URL以及用户是否拥有目标主机的访问权限。需要走代理在媒体类型中新增名为http_proxy的参数并填入代理地址即可脚本会通过setProxy使所有请求经由代理发送。相关资源集成文档templates/media/msteams-workflow/README.md媒体类型定义templates/media/msteams-workflow/media_msteams_workflow.yamlWebhook 执行链路源码src/libs/zbxalerter/alerter.c、src/zabbix_server/escalator/escalator.c如在部署中遇到问题可在 Zabbix 官方支持渠道support.zabbix.com提交 issue或在 Zabbix 论坛的 Suggestions and Feedback 板块寻求帮助。赞分享指标监控可观测性告警运维【免费下载链接】zabbixReal-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.项目地址https://gitcode.com/gh_mirrors/zabbix2/zabbix点击查看免费下载相关推荐从新手到高手templatespider模板变量提取与CMS适配全攻略从新手到高手templatespider模板变量提取与CMS适配全攻略 templatespider是一款强大的网站模板提取工具让你能够轻松获取任何网站的模开发工具深入解析 Meshery Edge Network Relationship基于 Catalog 教学设计的组件网络关系建模指南深入解析 Meshery Edge Network Relationship基于 Catalog 教学设计的组件网络关系建模指南 本篇技术指南围绕 Meshe指标监控可观测性告警运维Anteon Microsoft Teams告警集成企业协作平台通知配置Anteon Microsoft Teams告警集成企业协作平台通知配置 你是否还在为监控告警分散在多个系统而烦恼运营团队错过关键告警导致业务中断本文将带性能测试可观测性云原生上一篇1分钟智能XAPK转APK一站式解决Android应用安装兼容性难题下一篇Docker-Android完整指南一条命令在容器里跑通Android模拟器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑