注意
如果提供者未声明指纹字段,则指纹默认为告警名称。
指纹在 Keep 的告警上下文中具有几个重要用途:
去重
告警指纹用于防止同一基础告警的富集/工作流重复触发。 当 Keep 收到告警时,它会根据提供者的配置字段计算指纹。 如果两个告警具有相同的指纹,Keep 将认为它们是重复的,只会呈现其中一个。 这有助于减少告警噪音并防止不必要的告警触发。
分组
Keep 使用告警指纹将相关告警分组在一起。 具有相同指纹的告警被认为是同一组的一部分,表明它们是由相同的基础条件或问题触发的。 对告警进行分组使运维人员更容易理解不同告警源之间的关系、问题的根本原因并更快地采取适当的行动。
静默
告警指纹在第三方工具中用于管理静默/静音。 静默允许运维人员临时抑制具有特定指纹的告警,提供一种方式来确认和处理已知问题,而不产生额外的通知/触发。
可视化
告警指纹也可用于可视化和分析目的。 它们有助于跟踪告警的历史和状态,并提供将告警与特定条件或监控系统的变化相关联的方法。
生成指纹的过程涉及对提供者中配置的字段及其与告警实例关联的值进行哈希运算。 这将生成一个固定长度的十六进制字符串,用于唯一标识该告警。 当 Keep 收到告警时,它会为每个告警计算指纹,以确定是否应触发工作流、进行分组或被静默。
总之,Keep 告警指纹对于在每个第三方系统中管理和组织告警至关重要。 它们有助于防止重复、分组相关告警、启用静默,并促进告警数据的分析和可视化,最终有助于监控系统的有效运行和维护。
示例
这是指纹字段的基提供者类实现:
python
class BaseProvider(metaclass=abc.ABCMeta):
OAUTH2_URL = None
PROVIDER_SCOPES: list[ProviderScope] = []
PROVIDER_METHODS: list[ProviderMethod] = []
FINGERPRINT_FIELDS: list[str] = []这是 Datadog 的提供者实现,用于指纹字段,其中我们根据事件组和监控 ID 计算指纹,作为示例:
python
class DatadogProvider(BaseProvider):
"""
Datadog provider class.
"""
PROVIDER_SCOPES = [
...
]
PROVIDER_METHODS = [
...
]
FINGERPRINT_FIELDS = ["groups", "monitor_id"]自定义
Keep 允许自定义与指纹相关的任何内容。如果您 想更改特定提供者计算告警指纹的方式, 您可以简单地配置所需的字段。