如何在Elasticsearch Kibana中创建自定义告警?相关标准有哪些?
自定义Elasticsearch/Kibana告警方案及配置标准
一、定制化告警创建流程(基于Rules进阶配置)
1. 自定义查询驱动的告警规则
- 先在Discover中构造匹配业务需求的查询语句(比如特定业务接口的超时请求、特定错误日志关键词),验证查询结果符合预期后,复制查询DSL。
- 进入Stack Management → Rules → 创建新规则,选择
Custom query类型,将复制的DSL粘贴到查询框。 - 设置触发条件:例如"最近5分钟内匹配文档数大于10",根据业务实际调整时间窗口和阈值。
2. 指标聚合类告警配置
- 若需统计类告警(如某业务接口平均响应时间超标),选择
Metric threshold类型。 - 配置目标索引模式,选择聚合字段(如
response_time),设置聚合方式(avg、max等),再定义阈值条件(比如avg(response_time) > 500ms)。 - 添加分组维度(如按
service_name分组),实现分应用的精细化指标告警。
二、配置标准规范
1. 告警命名规范
- 统一格式:
[业务线]-[告警类型]-[监控对象]-[阈值描述],示例:电商交易-超时告警-支付接口-avg>500ms - 命名需直观,快速识别告警所属业务、类型及触发条件。
2. 阈值设定标准
- 基于历史基线:通过Kibana可视化查看指标过去7天的基线数据(如95分位响应时间),阈值设为基线的1.5-2倍,减少误告警。
- 对齐业务SLA:若业务要求接口超时率低于0.1%,则直接将告警阈值设为0.1%,确保触发后匹配业务风险等级。
3. 通知渠道配置
- 按优先级分层:核心业务告警同时推送至企业微信/钉钉群+邮件,非核心业务仅推送邮件。
- 通知内容必填:告警名称、触发时间、监控对象、当前值/阈值、Kibana查看链接(直接复制Discover/可视化的分享链接)。
4. 告警降噪规则
- 配置抑制规则:同一业务的相同告警10分钟内仅触发一次,避免重复通知。
- 过滤已知场景:添加条件排除测试环境请求、灰度发布时段的正常波动等非异常情况。
三、进阶脚本化定制方案(Watcher API)
当内置规则无法满足复杂逻辑时,可使用Elasticsearch Watcher API实现深度定制:
- 构造Watcher JSON配置,包含触发调度、查询逻辑、告警动作:
{ "trigger": { "schedule": { "interval": "5m" } }, "input": { "search": { "request": { "indices": ["app-logs-*"], "body": { "query": { "bool": { "must": [ {"match": {"service": "payment"}}, {"range": {"response_time": {"gt": 500}}} ] } }, "aggs": { "timeout_count": {"value_count": {"field": "request_id"}} } } } } }, "condition": { "compare": {"ctx.payload.aggregations.timeout_count.value": {"gt": 10}} }, "actions": { "send_team_alert": { "email": { "to": "dev-pay-team@example.com", "subject": "支付接口超时告警", "body": "最近5分钟超时请求数:{{ctx.payload.aggregations.timeout_count.value}},已超过阈值10" } } } }
- 在Dev Tools执行PUT请求创建Watcher:
PUT _watcher/watch/payment-timeout-alert
- 通过Watcher API可直接查询、更新或删除告警规则,实现更灵活的逻辑定制。
内容的提问来源于stack exchange,提问作者Navya Ch
相关产品推荐
相关产品推荐

