Mezmo 官方文档明确
autoresolve(自动恢复)“只适用于 PagerDuty”,Webhook 通道没有恢复事件。因此这条告警不会自动恢复,只能等超时自动关闭或手动关闭。请务必完成下方”开启超时自动关闭”这一步。在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 Mezmo,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Mezmo,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Mezmo 中配置
1
创建或编辑一个 View
在 Mezmo 里创建一个基于查询条件的 View(例如查询
level:error),或者打开一个已有的 View。如果打算给多个 View 复用同一份 Webhook 配置,也可以先创建一个 Preset Alert 模板 再关联到各个 View。2
添加 Webhook Alert
- 打开 View 的 Alert 弹窗,选择 Webhook
- 设置匹配行数和观察周期,例如”30 秒内匹配到 10 行”
- Method 选择 POST
- URL 粘贴 Flashduty 集成的完整推送地址,地址中需包含
integration_key - Headers 中添加一条:
Content-Type: application/json
3
替换默认 Body
Mezmo 会预先填好一份默认 Body,请清空后粘贴下面这份模板。字段全部来自 Mezmo 官方文档列出的 Body Tokens:保存前点击编辑框下方的 Validate JSON 按钮,确认模板渲染后仍是合法 JSON。
4
开启超时自动关闭
Mezmo 的 Webhook Alert 没有恢复事件(Update Alert API 中
autoresolve 字段的说明是”This property only applies to PagerDuty.”,即只对 PagerDuty 通道生效)。同一 View、同一查询条件的多次匹配会合并进同一条告警,但这条告警不会自己恢复。请在接收这些告警的协作空间中开启 超时自动关闭,建议超时时长 12 小时,计时起点选择 故障触发。告警关闭后,若问题仍未解决,View 在下一个观察周期再次匹配时会开出一条新告警。5
验证
点击 Alert 编辑面板顶部的 Test 链接,确认 Flashduty 收到一条 200 响应,并会在 Flashduty 中开出一条告警(Mezmo 用同一份模板渲染测试数据,Flashduty 无法把它和真实告警区分开,需要手动关闭或等待超时自动关闭)。再让 View 的查询条件真正匹配到日志,确认 Flashduty 收到对应的真实告警。
Alert Key
Mezmo 的 Webhook Alert 请求体里没有告警 ID、View ID 或去重键——Body Tokens 列表 里的 12 个 token(
name、matches、lines、level、url、query、app、host、tag、line、line_objects、first_line_object)都不是标识符。View 名称和它运行的查询条件是这个检查项在多次匹配之间不变的身份——官方文档把 query 定义为”the query of the View to which this alert is attached”(该告警所关联 View 的查询条件)——因此 Flashduty 用 MD5(view_name, query) 作为 Alert Key:同一个 View、同一条查询条件的多次匹配会合并进同一条告警(首行匹配日志、匹配行数、级别等字段变化不影响这个 Key);不同的 View,或者同一 View 但查询条件被改过,会各自开出自己的告警。
告警等级
Mezmo 官方文档对
{{ level }} 的说明是”Severity level (info, warn, error, etc)“(首行匹配日志的日志级别),并未给出完整枚举。Flashduty 按下表映射,未出现在表中的值(包括空值,即日志没有解析出级别)按 Warning 处理:
标签
告警标题为 View 名称;描述内容优先展示首行匹配日志的原文(
{{ line }}),并附上查询条件。
常见问题
同一个 View 反复匹配,会开出很多条告警吗?
同一个 View 反复匹配,会开出很多条告警吗?
不会。只要 View 名称和查询条件不变,Flashduty 用它们算出的 Alert Key 也不变,反复匹配会合并进同一条告警(更新匹配行数、级别等字段,不会另开一条)。但这条告警不会自动恢复,超时自动关闭之后,如果问题还在,下一次匹配会开出一条新告警——这也是本集成必须开启超时自动关闭的原因。
告警为什么不会自动恢复?
告警为什么不会自动恢复?
Mezmo 官方文档里
autoresolve 字段只适用于 PagerDuty 通道,Webhook 通道没有对应机制,也没有文档说明的恢复 token。请开启协作空间的超时自动关闭,或在 Flashduty 中手动关闭。Body 里为什么不用 {{ lines }}?
Body 里为什么不用 {{ lines }}?
{{ lines }} 是全部匹配行的原始文本,可能包含换行或双引号;Mezmo 官方文档没有说明它在插入 JSON 字符串时会做转义。如果直接把 "lines": "{{ lines }}" 写进模板,遇到包含引号或换行的日志就可能渲染出非法 JSON,导致 Flashduty 收到该次推送时报错、丢弃这次匹配。上面的模板只使用 {{ line }}(首行匹配日志的原文),信息量已经足够定位问题;如果确实需要完整的多行内容,请自行在 Mezmo 的编辑框里用 Validate JSON 反复测试确认转义正确后再加入。Mezmo 返回 Webhook 请求失败怎么办?
Mezmo 返回 Webhook 请求失败怎么办?
确认推送地址完整、包含
integration_key,且推送地址不是内网 IP(Mezmo 不允许 Webhook 指向 192.168.x.x、10.x.x.x、172.16.x.x–172.31.x.x 或跳转到这些地址)。