我想构建一个 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)
本身就是一个有效的普罗米修斯查询。
答案 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 中进行查询那样灵活,但它按预期工作