Flashduty Docs
中文
EnglishRoadmapAPI官网控制台
中文
EnglishRoadmapAPI官网控制台
  1. 告警规则配置
  • 简介
  • On-call
    • 快速开始
      • 快速开始
      • 常见问题
      • 产品对比
    • 故障管理
      • 什么是故障
      • 检索与查看故障
      • 处理与更新故障
      • 升级与分派故障
      • 自定义字段
      • 自定义操作
      • 了解降噪过程
      • 了解历史故障
      • 了解新奇故障
      • 状态页
    • 配置On-call
      • 协作空间管理
      • 多种方式接入告警
      • 配置路由规则
      • 配置标签增强
      • 配置告警降噪
      • 配置分派策略
      • 故障静默与抑制
      • 配置值班规则
      • 配置通知模板
      • 配置服务日历
      • 配置个人信息
      • 配置过滤条件
      • 通知配置
      • 告警处理 pipeline
    • 高级功能
      • 引用变量
      • 动态分派
      • 分析数据
      • 作战室
    • 集成引导
      • 告警集成
        • 邮件 Email 集成指引
        • 夜莺 Flashcat 集成指引
        • Prometheus 集成指引
        • 标准告警事件集成指引
        • Grafana 集成指引
        • Zabbix 集成指引
        • Uptime Kuma 集成指引
        • 阿里云 ARMS 集成指引
        • 阿里云监控 CM 事件集成指引
        • 阿里云监控 CM 指标集成指引
        • 阿里云 SLS 集成指引
        • AWS CloudWatch 集成指引
        • Azure Monitor 集成指引
        • 百度云监控 BCM 集成指引
        • 华为云监控 CES 集成指引
        • 腾讯云 CLS 集成指引
        • 腾讯云监控 CM 集成指引
        • 腾讯云 Event Bridge 集成指引
        • Influxdata 集成指引
        • Open Falcon 集成指引
        • Pagerduty 集成指引
        • 蓝鲸智云集成指引
        • OceanBase 集成指引
        • Graylog 集成指引
        • Skywalking 集成指引
        • Sentry 集成指引
        • 监控宝告警集成指引
        • AWS EventBridge 集成指引
        • Dynatrace 集成指引
        • 华为云 LTS 集成指引
        • GoogleCloud 集成指引
        • Splunk 集成指引
        • AppDynamics 集成指引
        • SolarWinds 集成指引
        • 火山引擎CM 指标集成指引
        • 火山引擎CM 事件集成指引
        • 火山引擎日志服务 TLS 集成指引
        • Opmanager 告警事件
        • Meraki 告警事件
        • 天翼云告警集成
        • 观测云告警事件
        • zilliz 告警事件
        • 华为云 APM 告警事件
        • zstack 告警事件
        • Keep 告警集成指引
        • ElastAlert2 告警集成
        • Monit 告警集成指引
        • RUM 告警集成指引
      • 即时消息
        • 飞书 Lark 集成指引
        • 钉钉 Dingtalk 集成指引
        • 企业微信 Wecom 集成指引
        • Slack 集成指引
        • Microsoft Teams 集成指引
      • 单点登录
        • Authing 集成指引
        • Keycloak 集成指引
        • OpenLDAP 集成指引
      • Webhooks
        • 告警 webhook
        • 故障 webhook
        • 自定义操作
        • Jira 同步
        • ServiceNow 同步
        • ServiceDesk Plus 同步
      • 变更集成
        • 标准变更事件集成指引
      • 其他集成
        • Link 集成
    • 最佳实践
      • 基于标签增强实现动态分派
  • RUM
    • 快速开始
      • 入门介绍
      • 快速开始
      • 常见问题
    • 应用管理
      • 应用管理
      • SDK接入
      • 高级配置
      • 分析看板
    • 性能监控
      • 概览
      • 指标上报
      • 性能分析
      • 诊断优化
    • 查看器
      • 概览
      • 数据查询
    • 异常追踪
      • 概览
      • 异常上报
      • 异常聚合
      • Issue状态
      • 异常查看
      • 源码映射
      • Issue告警
    • 会话重放
      • 概览
      • SDK配置
      • 查看 RUM 会话重放记录
      • 隐私保护说明
    • 最佳实践
      • 分布式追踪
    • 其他
      • 术语说明
      • 数据收集
      • 数据安全
  • Moniors
    • 快速开始
      • 产品介绍
      • 快速开始
    • 常见问题
      • 常见问题
    • 告警规则配置
      • Prometheus
      • ElasticSearch
      • Loki
      • ClickHouse
      • MySQL
      • Oracle
      • PostgreSQL
      • Aliyun SLS
  • 平台功能
    • 团队和成员
    • 了解权限设计
    • 配置单点登录
  • 服务协议
    • 服务条款
    • 用户协议/隐私政策
    • SLA承诺
    • 数据安全
中文
EnglishRoadmapAPI官网控制台
中文
EnglishRoadmapAPI官网控制台
  1. 告警规则配置

ElasticSearch

本文档详细介绍如何在 Monitors 告警引擎中配置 ElasticSearch 数据源的告警规则。Monitors 通过 ElasticSearch SQL 功能实现对日志和指标数据的监控,支持灵活的聚合查询与告警判定。

核心概念#

版本要求:由于依赖 SQL 特性,仅支持 ElasticSearch 6.3 及以上版本。
查询语言:目前仅支持 SQL 语法。
字段处理:告警引擎会自动将查询结果的所有字段名转换为 小写。在配置"值字段"和"标签字段"时,请务必使用小写字母。

1. 阈值判定模式 (Threshold)#

此模式适用于需要对聚合后的数值进行阈值比对的场景,例如监控"最近 5 分钟错误日志数量"。

配置方式#

1.
查询语句:编写 SQL 聚合查询,返回数值列和(可选的)分组列。
示例:统计最近 5 分钟内,各服务的错误日志数量。
2.
字段映射:
标签字段:用于区分不同告警对象的字段。上例中为 service_name。可以不填,Monitors 会自动把除了值字段外的所有字段都作为标签字段。
值字段:用于阈值判定的数值字段。上例中为 error_cnt。
3.
阈值条件:
使用 $A.字段名 引用数值。
示例:Critical: $A.error_cnt > 50,Warning: $A.error_cnt > 10。
简写:如果只配置了一个值字段,可以直接使用 $A,如 $A > 50。

工作原理#

引擎执行 SQL 查询,获取二维表格数据。根据"标签字段"将数据分组,然后提取"值字段"的数值与阈值表达式进行比对。
注意:标签字段组合在一起唯一标识一个告警对象,查询结果中不能有多行数据具有相同的标签字段值组合,请确保每个告警对象唯一对应一行数据。就上例而言,service_name 字段的值必须唯一,如果有两行数据的 service_name 相同,则会导致告警引擎无法正确区分告警对象。

恢复逻辑#

与 Prometheus 数据源类似,ElasticSearch 的 Threshold 模式也支持灵活的恢复策略:
自动恢复:当最新的 SQL 查询结果中,某组数据的数值不再满足任何告警阈值(Critical/Warning)时,自动生成恢复事件。
特定恢复条件:配置额外的恢复表达式(如 $A.error_cnt < 5)。只有当数值回落到该阈值以下时才判定恢复,防止告警抖动。
恢复查询:
场景:有时告警查询和恢复查询的逻辑不同。例如,告警是查"错误日志数 > 10",恢复可能是查"成功日志数 > 100"或者查另一个状态索引。
配置:编写一条独立的 SQL 语句用于恢复判定。
变量支持:支持在恢复 SQL 中使用 ${label_name} 引用告警事件的标签值。
示例:告警 SQL 查出了 network_host="a", interface="b" 的网卡挂了。恢复 SQL 可以写:
引擎会将 ${network_host} 和 ${interface} 替换为实际值后执行查询,如果查到数据,则判定恢复。

2. 数据存在模式 (Data Exists)#

此模式适用于将过滤逻辑直接写在 SQL 中的场景,或者只需要关注"是否有数据返回"的情况。

配置方式#

1.
查询语句:在 SQL 中使用 HAVING 子句直接过滤出异常数据。
示例:直接查询错误数超过 50 的服务。
2.
字段映射:
在此模式下,标签字段和值字段为 非必填项。如果都留空,引擎会将查询结果中的所有字段都作为标签字段,可以在规则备注中引用。

恢复逻辑#

数据消失即恢复:当 SQL 查询结果为空(即不再满足 HAVING 条件)时,引擎判定故障恢复。这是最常用的恢复方式。
恢复查询:
场景:有时"查不到数据"并不代表恢复(可能是日志采集挂了),或者需要更严格的恢复条件(如连续 N 分钟无错误)。
配置:编写一条独立的 SQL 语句用于恢复判定。只要该查询能查到数据,就认为故障已恢复。
变量支持:支持在恢复 SQL 中使用 ${label_name} 引用告警事件的标签值,实现精准恢复检测。

优缺点分析#

优点:利用 ES 集群的计算能力进行过滤,减少网络传输,性能更好。
缺点:无法区分多级告警(如 Info/Warning),因为 SQL 只能返回满足特定条件的数据。

3. 数据缺失模式 (No Data)#

此模式用于监控"预期应该有数据,但实际没有数据"的场景,常用于监控日志采集链路中断或周期性任务未执行。

配置方式#

1.
查询语句:编写一个预期应该持续返回数据的 SQL 查询。
示例:查询所有主机的日志上报心跳。
2.
判定规则:
引擎会周期性执行该 SQL。
如果某个 host_name 在之前的周期中出现过,但在当前周期(以及连续的 N 个周期)中不再出现在查询结果中,则触发"数据缺失"告警。
注意:这与 Data Exists 模式相反。Data Exists 是"查到数据就告警",No Data 是"查不到数据就告警"。

恢复逻辑#

数据出现即恢复:一旦该 host_name 重新出现在查询结果中,告警自动恢复。
自动恢复时间:可配置一个"自动恢复时间"(如 24 小时)。如果超过该时间仍未恢复,引擎会自动关闭该告警(通常用于处理机器下线等不再需要监控的情况)。

4. 案例说明#

日志告警经常遇到如下需求:统计最近 5 分钟的 ERROR 日志数量,如果超过阈值则告警,同时在告警消息中展示最近一条 ERROR 日志作为样例。配置方案如下:
主告警条件:使用 Threshold 模式,SQL 语句统计最近 5 分钟的 ERROR 日志数量,配置阈值条件。
关联查询:配置一个关联查询,SQL 语句查询最近一条 ERROR 日志,使用 ${service_name} 等变量限定具体服务。
规则备注描述:在告警规则的备注描述中引用关联查询结果,使用 $relates 变量,把日志原文渲染出来。

添加官方技术支持微信

在这里,获得使用上的任何帮助,快速上手FlashDuty

微信扫码交流
修改于 2025-12-31 06:06:50
上一页
Prometheus
下一页
Loki
Built with