Keep 的告警提取富集功能支持使用正则表达式从传入告警中动态提取数据。这个强大的工具允许用户定义基于模式的提取规则来识别和提取数据,从而直接从告警内容中富化告警并添加额外的结构化数据。
简介
处理各种告警格式和提取相关信息可能具有挑战性。Keep 的告警提取功能通过允许用户定义基于正则表达式的规则来自动从告警中提取关键信息,从而简化了此过程。这种能力对于标准化告警数据和增强告警上下文至关重要,有助于更有效的监控和响应策略。
工作原理
- 规则定义:用户创建提取规则,指定要应用于某些告警属性的正则表达式模式。
- 属性规范:每个规则定义正则表达式应检查的告警的哪个属性。
- 数据提取:当收到告警时,系统将正则表达式应用于指定属性。如果模式匹配,正则表达式中的命名组定义要提取并添加到告警的新属性。
- 首次匹配强制:提取过程设计为在首次成功匹配后停止。一旦规则成功应用并富化了告警,就不会处理更多规则。这确保了效率并防止重叠或冗余的数据提取。
- 告警富化:提取的值被添加到告警中,用额外的属性增强其数据以改进分析。
实际示例
假设您收到格式为"Error 404: Not Found - [UserID: 12345]"的消息属性的告警。您可以定义提取规则,使用正则表达式(如 Error (?P<error_code>\d+): (?P<error_message>.+) - \[UserID: (?P<user_id>\d+)\])来提取 error_code、error_message 和 user_id 作为告警中的单独属性。
核心概念
- 正则表达式:一种强大的模式匹配语法,用于识别文本中的特定模式。在提取规则的上下文中,正则表达式用于定义如何从告警属性中提取数据。正则表达式模式必须遵守 Python 的正则表达式语法,特别是关于使用命名组的组匹配。
- 属性:告警数据的一部分(例如消息、描述),正则表达式将应用于该部分。
- 命名组:正则表达式模式的一部分,指定用于提取到新告警属性的特定数据点的占位符。
创建提取规则
要创建告警提取规则:
- 选择属性:选择正则表达式应检查的告警的哪个属性。
- 定义正则表达式:编写带有命名组的正则表达式模式,指定要提取的信息。确保正则表达式根据 Python 的正则表达式标准有效,特别是对于组匹配。
- 配置条件:可选地,指定此规则应适用条件,使用 CEL(通用表达式语言)进行复杂逻辑。
最佳实践
- 测试正则表达式模式:在部署新的提取规则之前,彻底测试正则表达式模式以确保其根据 Python 的正则表达式标准正确匹配和提取数据。
- 监控提取性能:跟踪提取规则的表现情况以及它们是否按预期富集告警。根据传入的告警数据根据需要调整模式。
- 使用特定条件:在适用时,定义条件以限制提取规则何时适用,减少不必要的处理并专注于相关告警。