Skip to content

feat: 支持标签阈值覆盖配置#111

Open
myrat92 wants to merge 3 commits into
opsre:masterfrom
myrat92:feat/label-threshold-overrides-ui
Open

feat: 支持标签阈值覆盖配置#111
myrat92 wants to merge 3 commits into
opsre:masterfrom
myrat92:feat/label-threshold-overrides-ui

Conversation

@myrat92
Copy link
Copy Markdown

@myrat92 myrat92 commented Apr 27, 2026

变更说明

本 PR 为 Prometheus 告警规则页面增加标签阈值覆盖配置能力。

用户可以在规则配置页面开启“标签阈值覆盖”,然后基于当前 PromQL 返回的指标标签,为不同标签值配置不同的告警阈值、等级和持续时间。

主要改动

  • 增加“标签阈值覆盖”开关
  • 支持选择或手动输入标签名和标签值
  • 根据当前 PromQL 查询结果自动加载可用标签 key/value
  • 支持按标签配置独立的 severityexprforDuration
  • 关闭开关时保留已填写的覆盖记录,避免误操作丢失

使用方式

  1. 选择 Prometheus 数据源
  2. 填写 PromQL
  3. 开启“标签阈值覆盖”
  4. 页面会自动从当前 PromQL 查询结果中加载标签
  5. 添加标签阈值覆盖项
  6. 选择标签名、标签值,并配置独立阈值

关联 Issue

Refs opsre/WatchAlert#248

后端 PR

依赖后端 PR:opsre/WatchAlert#249

@Cairry
Copy link
Copy Markdown
Collaborator

Cairry commented Apr 27, 2026

@myrat92 大佬,修改后的页面布局贴一下哈

@myrat92
Copy link
Copy Markdown
Author

myrat92 commented Apr 27, 2026

@Cairry 在告警条件下面会有一个标签阈值覆盖开关, 打开后可以选择标签以及标签的值
image
image

@Cairry
Copy link
Copy Markdown
Collaborator

Cairry commented Apr 27, 2026

@myrat92 我觉得你这个设计还不错,有两个优化建议。1. 既然用了标签匹配,那么做单标签匹配可能还不够,通常可能有多个标签匹配的场景;2. 我觉得这个开关按钮还是可以复用上面的告警条件,类似这样的效果,大佬看是否有空可以优化
image

@myrat92
Copy link
Copy Markdown
Author

myrat92 commented Apr 27, 2026

@Cairry 感谢建议。我理解这两个优化点:

  1. 标签匹配需要支持多个标签组合,例如 key=="value" && key2=="value2"
  2. UI 上可以复用现有“告警条件”,避免单独增加一块“标签阈值覆盖”配置区域。

我准备调整为告警条件中增加一个可选的label expr字段,默认为空。为空时表示该条件为全局默认条件;非空时表示该条件只对匹配标签的时序生效。
第一版 label expr 计划只支持 AND 条件,校验规则如下:

  1. labelExpr 可为空
  2. 非空时只支持 key=="value"
  3. 多个条件只支持 && 连接,例如 key=="value" && key2=="value2"
  4. key 只允许 [a-zA-Z_][a-zA-Z0-9_]*
  5. value 必须用双引号包裹,且不能为空
  6. 不允许重复 key
  7. 暂不支持 OR、括号、正则和其他比较符

另外想确认一下 label expr 的输入方式:

  • 方案一:先只支持用户手动填写 label expr,实现更简单;
  • 方案二:在手动填写的基础上,增加一个标签选择弹窗,根据当前 PromQL 查询结果自动加载 label key/value,用户选择多个标签后自动拼接成 key=="value" && key2=="value2"

@Cairry
Copy link
Copy Markdown
Collaborator

Cairry commented Apr 27, 2026

  1. 当用户启用标签匹配按钮时,才允许输入和处理label expr,默认情况下不用配置label expr,2. 操作符可以参考静默规则,有==, !=, =~, !~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants