什么是故障
故障代表一个正在发生的问题或者一个需要处理的事项。故障一般由告警触发,常常关联了一些列相似的告警。
故障、告警和事件
当Flashduty接收到告警事件(比如Zabbix的一条告警通知),系统会自动触发一条告警,而这条告警将会触发一条故障。多条相似的活跃告警,可能会被聚合到同一条故障中,一起分派、通知和处理。
我们可以简单的理解为:故障,是相似告警的组合,在没有降噪的情况下,故障等同于告警。反过来,降噪的场景下,故障等同于其关联的多条告警。关于告警的降噪模型,请阅读 了解降噪过程 了解更多。
故障严重程度、状态和进度
严重程度
- Info:轻微,服务本身仍然正常运行,仅做服务状态提醒,无需立即处理。
- Warning:警告,服务可能出错或者即将发生问题,应尽早介入避免问题升级。
- Critical:严重,服务大面积出错甚至中断,用户受到影响,必须理解介入处理。
故障、告警和事件,均使用以上三种严重程度。严重程度首字母大写,您在使用 api 时需要特别注意。三者的严重程度生成规则如下:
- 事件的严重程度:不同集成来源(如Zabbix和夜莺)的告警事件有不同的严重程度枚举值,Flashduty会按照一定规则映射为以上三种标准严重程度。具体映射关系,请您参阅具体集成的接入文档。
- 告警的严重程度:等于所关联的事件中最高级别的严重程度。
- 故障的严重程度:等于所关联的告警中最高级别的严重程度。
处理进度
- 待处理:故障触发后,处理进度默认为”待处理“,系统会发起自动分派,设置处理人员并进行通知。
- 处理中:任意人员点击 认领故障,处理进度将立即变为”处理中“。在此情况下,故障的处理人员可能处于 已认领 或 未认领 的状态,但至少有一个人处于”已认领“状态。当所有处理人都取消认领,故障处理进度将回退到“待处理”。
- 已关闭:任意人员点击 关闭故障 或 故障自动恢复,处理进度将立即变为“已关闭”。
故障状态
告警的状态代表的是故障在原始监控系统中的状态,即“已恢复”或“未恢复”。故障的状态完全由其关联的告警来决定。
- 已恢复:故障关联的告警均已恢复,故障将自动恢复。
- 未恢复:故障关联的告警至少有一条未恢复,故障将处于未恢复状态。
:::highlight orange 💡
故障自动恢复将导致(处理进度)自动关闭;但手动关闭故障,对故障的状态没有任何影响。
:::
故障标签
标签(Labels)是 Flashduty 中很重要的一个基础概念,不同的标签描述了告警、故障在不同维度的信息,并被大量应用于过滤、检索、聚合等场景。
标签是如何生成的?
告警的标签提取自原始告警系统上报过来的事件消息体。不同来源有不同的提取方式,大致上,我们采取 应取尽取 的原则。比如对于 Prometheus 来源的告警事件,Flashduty 会提取 Payload 中的 Labels 和 Annotations 信息。
标签只能通过事件上报得到,不能手动修改或添加。一个自动触发的故障,其标签永远等于其关联的第一条告警的标签。一个手动触发的故障,其标签永远为空。
Flashduty 提供了标签增强方案,用于自动化生成标签,前往 了解更多。
故障生命周期
1. 触发新故障
自动触发:Flashduty 接收到集成上报的告警事件(如 Zabbix 通知),事件自动触发一条告警,告警自动触发一条故障。
手动触发:手动在 Flashduty 控制台,点击 创建故障 按钮,填写标题、描述、严重程度等信息,触发一条新故障。
2. 分派与通知
新故障触发以后,Flashduty 将依次匹配所属协作空间下的分派策略。匹配到分派策略之后,系统会将故障分派给个人、团队成员或者值班人员并进行通知。如果没有匹配到分派策略,故障将不会分派给任何人,也不会有任何通知。
您可以针对不同时间段,或者不同类型的故障设置不同的分派策略,以达到灵活分派的效果。系统允许您在一个分派策略下,设置多个分派环节。如果当前环节的分派人员,在指定时间内,没有完成故障的确认和处理,系统将自动升级到下一环节。升级等同于将故障重新分派给其他人员。
您可以在分派策略中,灵活安排通知方式,Flashduty支持非常多的群聊和单聊通知通道。单聊是一对一的推送渠道(如语音、短信和邮件),群聊是将消息推送到消息群中(如飞书、钉钉和 Slack),并对分派人员进行额外提醒。
:::highlight orange 💡
注意,一个故障只有被分派后,才会进行通知。没有分派,就没有任何通知。
:::
如果您将故障分派给了一个没有人On-Call的值班表(轮空),系统将不会给任何个人发起通知,但如果您配置了群聊通道,仍然会给该群聊推送消息。
3. 认领和解决
On-Call 人员收到通知后,可以立即进行认领。您可以在 语音电话、即时消息中认领故障。认领后,故障处理进度将变为 处理中。
:::highlight orange 💡
Flashduty 目前没有限制故障仅能被“已分派的处理人员”认领。任何看到的故障的人员,均可以点击认领。
:::
关闭故障 将导致处理进度变为 已关闭。如果故障关联的告警自动恢复,故障也将自动关闭。相反,如果您手动关闭了故障,将导致故障关联的所有告警自动关闭。这意味着,这些告警将不会再合入任何新的事件。
故障时间线
任一故障都有一个时间线,用于回溯故障历史不同时刻发生的变化和操作。比如故障在什么时间点,以什么通道通知到了谁,以及通知的结果。
触发故障
通过 集成 触发故障
Flashduty 已经支持大部分常见监控系统,包括 Prometheus、Zabbix、夜莺 以及云监控等,前往 夜莺 Flashcat 集成指引 查看具体操作步骤。
:::highlight orange 💡
Flashduty 支持专属集成和共享集成模式。将告警投递到协作空间下的专属集成,故障将在此协作空间下触发。
或者将告警投递到集成中心的共享集成,然后配置路由,将告警按规则投递到不同的协作空间。
:::
通过 API 触发故障
Flashduty 提供了一个自定义事件标准,允许您通过标准协议上报告警,适用于任何未适配的监控系统。详细文档请阅读 自定义事件集成指引 。
:::highlight orange 💡
为了保证整个系统的稳定,Flashduty 目前对于 API 上报有 200qps 的频率限制,超出限制之后将会拒绝上报。
:::
:::highlight orange 💡
请确保您会主动关闭告警,或者在协作空间下,设置了故障超时自动关闭。故障数量太多时,会导致控制台检索性能急剧下降。届时,系统可能会对历史故障进行关闭,而不进行任何通知。
:::
通过 邮件 触发故障
Flashduty 提供了一个邮件集成,允许您通过发送邮件来上报告警,适用于所有支持邮件提醒的监控系统。详细文档请阅读 自定义事件集成指引 。
:::highlight orange 💡
您可以为每一个集成设置特定的邮件前缀。您也可以联系我们,为主体账号设置一个方便记忆的专属域名。比如,order-service@tesla.flashcat.cloud。
:::
通过 控制台 触发故障
控制台点击 创建 按钮,发起故障创建。
字段 | 是否必须 | 描述 |
---|---|---|
故障标题 | 是 | 一句话指明发生了什么 |
故障描述 | 否 | 故障的细节描述,支持 Markdown 语法 |
严重程度 | 是 | 选择 Critical、Warning、Info 三个枚举值之一 |
协作空间 | 否 | 故障归属,如果不选择,代表全局故障。此情况下,故障必须直接分派到人才能通知 |
分派人员 | 否 | 故障处理人员,如果不选择,按照归属协作空间进行匹配和分派,否则直接按照个人偏好设置进行通知 |