查询过去具有特定值的标签值

时间:2021-02-18 15:45:28

标签: prometheus grafana

我想构建一个 Grafana 仪表板来分析 Flagger 中失败的金丝雀版本。 Flager 提供了一个指标 use futures::FutureExt; assert!(read_3.next().now_or_never().is_none()); 来显示 Canary 的状态。状态编码如下:

<头>
价值 含义
0 Canary 目前正在运行
1 金丝雀成功
2 金丝雀失败

所以我想在 Grafana 变量中选择当前显示范围内金丝雀失败的应用程序的名称。

使用查询 flagger_canary_status 它返回指标的所有标签值(所以我有所有金丝雀应用程序的列表,不仅仅是失败的应用程序),但是当我这样查询时:label_values(flagger_canary_status, name)它失败并显示错误“错误更新选项:1:23:解析错误:意外”,尽管 label_values(flagger_canary_status == 2 , name) 本身就是一个有效的普罗米修斯查询。

screenshot

1 个答案:

答案 0 :(得分:0)

我现在使用 a 记录规则仅在金丝雀状态值为 2 时记录指标。使用了 avg_over_time,因此在金丝雀修复后 1 小时,指标保持在该值上(意味着该值回到 1 )

  groups:
    - name: "flagger-recording-rules"
      rules:
        - record: flagger_canary_with_problems_last_hour
          expr: avg_over_time( (flagger_canary_status == 2) [1h:10m])

解决方案不像我刚刚在 Grafana 中进行查询那样灵活,但它按预期工作