如何在ElastAlert中配置过滤器实现API请求占比阈值告警?
ElastAlert 告警配置实现方案
要实现你需求的比例告警,需使用ElastAlert的percentage_match规则类型,该类型专门用于统计符合特定条件的事件在总事件中的占比,当占比超出阈值时触发告警。以下是完整的配置示例:
# 规则名称 name: API 400状态占比过高告警 # 规则类型:比例匹配 type: percentage_match # 替换为你的ElasticSearch实际索引名称 index: your_api_log_index # 日志时间字段,根据实际字段调整,通常为@timestamp timestamp_field: "@timestamp" # 基础过滤:仅处理目标API的所有请求事件 filter: - term: api_url: "/v1/myapi.com" # 统计时间窗口:10分钟 timeframe: minutes: 10 # 比例判断逻辑:超过阈值时触发告警 match_condition: ">" # 告警触发阈值:5% percentage_threshold: 5 # 定义需要统计比例的目标事件:api_status为400的请求 match_filter: - term: api_status: 400 # 告警配置,根据实际需求调整 alert: - "email" email: - "your-alert-email@example.com" alert_subject: "API 400状态占比超过5%告警" alert_text: | 过去10分钟内,API /v1/myapi.com的请求中,400错误占比为{match_percentage}%,已超过5%阈值。 总请求数:{total_events} 400错误请求数:{match_events}
关键配置说明
percentage_match:核心规则类型,负责计算match_filter匹配事件在总过滤事件中的占比filter:先圈定统计范围,只处理api_url=/v1/myapi.com的事件timeframe:设置统计的时间窗口为10分钟percentage_threshold:设置触发告警的比例阈值为5match_filter:指定需要统计比例的目标事件(即api_status=400的请求)
只需将配置中的索引名、时间字段、告警方式等替换为你的实际环境参数即可使用。
内容的提问来源于stack exchange,提问作者Vaibhav
相关产品推荐
相关产品推荐

