跳转到主要内容
要体验 Monitors 功能,核心包含三个步骤:
1

安装 monitedge

部署告警引擎到私有网络
2

创建数据源

配置要监控的数据来源
3

创建告警规则

定义告警条件和通知方式

安装 monitedge

monitedge 需要部署在用户私有网络内,负责从 SaaS 同步告警规则,周期性查询数据源并进行阈值判定,产生告警事件并推送给 SaaS 端。 菜单入口:告警引擎 → 引擎安装/升级 支持 Linux、Docker、Kubernetes 三种安装方式。
引擎集群名字非常重要:相同名字的 monitedge 会组成一个集群,共同分片处理告警规则,避免单点故障。
  • 单套集群:保持默认的 default 即可
  • 多套集群(如美东机房、华南机房各一套):请为每套集群指定不同的名字
告警引擎安装

告警引擎状态

monitedge 安装完成后,会自动连接 SaaS 端并周期性同步告警规则。您可以在告警引擎状态页面查看当前状态信息。 长期没有心跳的引擎实例会展示删除按钮,可点击移除以避免引擎失联告警。

引擎失联告警

monitedge 挂掉影响很大,因此提供引擎失联告警。
多个实例组成的引擎集群,只要集群中有一个实例存活,就不会触发引擎失联告警。

创建数据源

菜单入口:数据源 → 新建 创建数据源

创建告警规则

菜单入口:告警规则 告警规则可能会很多,Monitors 提供树形分组结构进行分类管理。每个告警规则都要属于某个分组,您可以先创建分组,再在分组下创建告警规则。 创建 / 编辑告警规则的页面是一个单页表单,自上而下分为六个区块:基础配置、数据源与查询、告警判定、检测频率 & 生效时间、事件配置、调查入口。

基础配置

基础配置

附加标签的写法

附加标签的值有三种写法,按值的内容区分: Go 模板可以使用以下变量:
  • 模板只支持 if / else 和 index、len、printf、print、replace、urlquery 以及比较、逻辑函数,不支持 range、with、define。
  • 读取不存在的 key 时,$labels 和 $annotations 得到空字符串,$values 得到 0。渲染结果为空的标签不会推送。
  • 同一个值不能同时使用 ${...} 和 {{...}}。
  • 渲染失败的标签不会推送,告警事件照常推送,错误原因写入 __alert_rule_label_template_error 标签,可在告警详情中查看。
  • 标签名首尾的空白会在保存时去掉,去掉后不能重复;标签名不能以 __alert_rule_ 开头。全部附加标签按 JSON 计合计不超过 1024 个字符,job 和 instance 的值不超过 255 个字符。
  • 告警引擎渲染备注描述、自定义字段和标题时,$appendLabels 中的模板标签仍是模板原文。需要在这些位置使用查询结果时,请直接引用 $annotations。

数据源与查询

区块 2 由两段组成:数据源 决定规则生效到哪些数据源,查询语句 决定从数据源里查什么、怎么查。

数据源

数据源选择 先选择 数据源类型。这里只列出已配置过数据源的类型;如果还没有任何数据源,点击 前往数据源管理页面(在新标签页打开,不会丢失当前表单)先创建。 然后选择规则生效到哪些数据源,一个规则可以生效到多个数据源:
  • 名称通配:按名称匹配,新建规则时默认为 *(该类型下的所有数据源)。* 匹配任意字符串(如 db-*),? 匹配单个字符,[0-9]、[a-z] 匹配字符范围,[!0-9] 匹配不在范围内的字符。数据源改名会影响匹配。
  • 精确匹配:从下拉列表选择具体数据源,不受改名影响。
两种方式至少填一种,可以同时使用,规则生效到两者匹配结果的并集。腾讯云 CLS 例外:只能精确绑定一个数据源。
需要不受数据源改名影响的稳定绑定时,建议使用精确匹配。详情参见数据源管理。
保存规则时,您需要对规则引用的每个数据源都有查询权限,包括名称通配在保存时匹配到的数据源(主体账号与 Admin 除外)。因此一条通配规则可能因为匹配到您无权查询的数据源而无法保存。只停用规则不受此限制。数据源授权见数据源管理。

查询语句

查询语句 配置查询类型与查询语句。点击 使用说明 可以查看写法说明。表格型查询的值字段、标签字段与附加信息如何映射,详见查询结果字段映射。

AI 查询助手

选择数据源类型后,点击查询输入框右上角的 AI 帮我写,查询助手会结合当前规则的数据源、查询类型、阈值和其他查询,帮您生成或改写查询语句。
  • 生成的语句和相关参数(如 SLS 的项目 / 日志库、腾讯云 CLS 的地域 / 日志主题)会自动填入表单,也可以点击结果卡片上的 回填 重新填入。
  • 主查询、恢复查询、关联查询、查询预览,以及实体树中的 PromQL 都可以使用查询助手。
  • 回填不会自动保存规则,保存前请确认语句与阈值匹配。

告警判定

告警判定提供三种检测方式,每种是一个页签,在页签内的卡片标题右侧启用。已启用的页签标题后会显示对勾。 |------|----------| | 阈值判定 | 按级别填写阈值表达式,满足条件并达到触发次数后,产生对应级别的告警。高级别触发后不再判断低级别;Critical、Warning、Info 至少填写一项 | | 数据缺失 | “之前查到过数据,现在查不到了”或“所有查询均无返回数据”时告警,两个条件可以分别启用 | | 数据存在 | 查询到数据即视为满足条件,达到触发次数后按设定级别产生告警 | 每个页签分为“告警触发”和“告警恢复”两张卡片(数据缺失页签合并为一张“触发与恢复条件”)。主要字段:

触发方式:连续命中与累计命中

  • 累计命中下,命中次数不能大于检测次数,两者都不能超过 10000
累计命中需要告警引擎 v0.69.0 及以上。 更早版本的引擎会按连续命中执行,告警可能延迟或漏报。

告警恢复

恢复方式的可选项由检测方式决定:

检测频率与生效时间

检测频率 & 生效时间
时区填写规则:
  • 规则时区只接受 IANA 标准时区名。Local、UTC+8、CST、GMT+8 等简写或偏移量写法会被拒绝
  • cron 表达式不能以 CRON_TZ= 或 TZ= 开头。如果您从开源 cron 系统迁移过来并习惯把时区内嵌在 cron 字符串里(例如 CRON_TZ=Asia/Shanghai 0 0 * * *),请去掉前缀,把时区填到规则时区字段中
cron 表达式格式规则:
  • cron 表达式必须是 6 段秒级表达式,顺序为秒、分、时、日、月、周。5 段写法(例如 */5 * * * *)会被拒绝,需要补充秒字段(例如 0 */5 * * * *)
  • 支持 @every 快捷写法,例如 @every 30s,表示每 30 秒检测一次。时长必须是不小于 1 秒的整数秒,支持 @every 1m30s 这类组合时长;@every 0s、@every 1500ms 等亚秒或不满足整秒的写法会被拒绝
  • 编辑旧规则时,不符合上述格式的检测频率需要先修正才能保存
重复通知的最大次数和重复间隔,以及各检测方式的命中次数和恢复次数都必须不小于 1,否则规则不会执行。

事件配置

事件配置包括自定义字段与关联查询(默认折叠)、备注描述和重复发送配置。
最大通知次数并不代表终端用户收到的消息提醒次数。因为 Monitors 产生的告警事件会投递到 On-call,可能会被聚合降噪,最终发送次数取决于 On-call 配置。

调查入口

区块 6 用于配置调查入口:把每条告警直接接到一个仪表盘视图或一份查好的初始查询上,值班人员从告警一跳就能看到该看的图、该查的数据。 最多 20 个入口,可以拖动调整顺序(顺序只影响展示);点击入口右侧的眼睛图标可以按该规则的一条真实告警预览跳转。入口随规则保存生效,渲染成快照后随告警事件下发,因此改规则不会影响已经产生的告警。
保存调查入口需要 monit-edge v0.75.3 或以上版本:保存时会检查该规则匹配到的数据源所在集群内所有活跃实例,只要有实例低于该版本,保存即被拒绝。
字段含义、模板变量、校验限制与快照语义详见调查入口。

查看效果

完成配置后,如果告警条件触发,告警规则前的状态会变成 Triggered。 告警规则列表页面
告警规则列表的搜索框支持按规则名称、规则 ID 或标签进行搜索过滤,方便快速定位规则。也可以通过 URL 参数 ?rule_id=<ID> 直接跳转到指定规则。
规则状态由 Flashmonit 当前活跃告警决定:Triggered 表示该规则至少有一个活跃告警,Healthy 表示当前没有活跃告警。 点击状态徽章(Triggered 或 Healthy),页面会切换到“活跃告警”标签页,并按该规则自动过滤(URL 参数 active_alert_rule_id),方便直接查看该规则当前产生的活跃告警。历史告警事件可到 On-call 中查看。详见活跃告警。

规则运行详情

告警规则列表的每一行都提供运行时自省能力。点击行操作菜单(行尾 ⋮)中的运行详情,打开规则运行详情抽屉,帮助您判断规则的执行健康度并快速排障。 抽屉顶部可以选择要查看的数据源(规则可能绑定多个数据源);这个选择器按查看者对各数据源的查询(readonly)权限过滤,没有查询权限的数据源会被静默丢弃,受限查看者看到的数据源可能少于规则实际绑定的数量。下方分为两个标签页:

当前状态

  • 状态徽章:运行正常(normal)、执行异常(abnormal)、等待首次执行(waiting)、状态已过期(stale)。当中心配置已保存但 Edge 尚未上报新版本时,额外显示 配置待生效 标识;规则被禁用时显示 规则已停用 标识
  • 最近执行:执行时间、执行耗时、执行结果、查询结果数、最近成功、连续失败、运行阶段、状态更新时间
  • 告警实例:活跃实例总数,并按检测模式拆分为 Threshold(阈值判定)、AnyData(数据存在)、NoData(数据缺失),以及最近产生的事件类型(告警触发、重复通知、告警恢复、告警关闭)
  • Edge 与配置:负责该规则的 Edge 集群、Edge 实例、版本、在线状态和最近心跳
当状态为 等待首次执行 或 状态已过期 时页面会给出原因提示;负责该规则的 Edge 不在线,或执行出现错误时,会以醒目横幅展示错误类型和错误摘要。

执行历史

按时间范围查询该规则的历史执行记录(支持最近 15 分钟、1 小时、4 小时、1 天,最长 24 小时)。每条记录带执行摘要徽章:执行失败、产生事件、告警恢复、定期采样;展开后可查看日志入库时间、Edge 实例与集群、运行阶段、连续失败次数、各检测模式活跃实例数、产生的事件以及错误摘要。
执行历史只记录关键执行摘要(异常、事件、恢复和定期采样),不保证每轮评估都生成记录;匹配记录超过 200 条时仅展示最近 200 条,请缩小时间范围。

批量操作

告警规则列表支持多选后进行批量操作,提升规则管理效率。

批量启用/禁用/删除

在列表中勾选多条规则后,可以一键批量启用、批量禁用或批量删除。

批量编辑字段

勾选多条规则后点击批量更新,可以统一修改以下 10 个字段: 操作方式:在批量更新面板中先选择要修改的字段,然后设置新值,点击确定即可批量应用到所有选中规则。 批量更新附加标签和自定义字段时,使用专用的元数据编辑器,支持两种更新方式:
修改附加标签可能影响告警路由、聚合或降噪,请谨慎操作。
部分规则更新失败时,会提示失败条数和第一个失败原因,其余规则照常更新。

批量移动

勾选多条规则后,可以将它们批量移动到其他文件夹中。

导入告警规则

菜单入口:告警规则 → 导入 导入采用文件上传方式,一次上传一个规则文件(.yaml、.yml 或 .json,不超过 1 MB)。系统会自动识别文件格式,并在导入前展示预检结果,支持以下四种来源:

导入配置

文件上传后可以配置:
  • 同名规则处理方式:跳过同名规则(默认,目标分组中已有同名规则时不导入)或 创建副本(为同名规则创建副本)
  • 导入后启用规则:仅对 Flashduty Rules YAML 来源显示。关闭时,导入的 Flashduty 规则保持停用
  • 协作空间:指定告警事件投递的协作空间

预检结果

系统解析文件后展示预检结果表格,逐条列出规则的导入名称、状态(可导入 / 跳过 / 无效)和说明。勾选要导入的规则(默认选中所有可导入的规则)后提交。
Nightingale 规则导入后统一保持停用,需检查数据源匹配和转换警告后再手动启用。常见的转换说明包括:Doris 数据源映射为 MySQL、仅保留最高级别告警条件、级别抑制/查询关联/通知目标等配置未保留、恢复语义按 Flashduty 规则能力近似转换、Local 时区转换为 Asia/Shanghai、全天生效时间转换为 00:00-23:59、缺少评估间隔时持续时间按 15 秒间隔换算等。

导入结果

提交后系统展示导入结果:成功、跳过和无效的条数。如果一条都没有导入成功,可以在弹窗中查看原因后重新选择。

导出告警规则

在列表中勾选需要导出的规则,点击导出按钮。系统以 YAML 格式(Flashduty Rules YAML bundle)展示所选规则的完整配置,您可以:
  • 下载:将 YAML 保存为 alert-rules.yaml 文件
  • 复制:将 YAML 内容复制到剪贴板
导出的 YAML 可用于备份,也可以通过文件上传方式导入到其他环境,详见导入告警规则。

规则变更记录

每条告警规则都有完整的变更审计记录。您可以在规则详情中查看变更记录,了解规则的历史修改情况。

查看变更记录

变更记录列表展示每次操作的以下信息:

版本对比

在变更记录列表中勾选两条记录,点击对比按钮,系统会以 JSON diff 的方式展示两个版本之间的差异,帮助您快速了解具体修改了哪些配置项。