我尝试使用promql/prometheus创建一个警报,但在生成正确的时间序列时遇到了问题。在K8s中,我的目标是显示位于多个集群中的特定应用程序的任何代码/版本不匹配。通过使用count,任何值大于1的应用程序都会告诉我部署了> 1个版本。目前,我的查询将生成以下内容:
第一个月
| label_app | label_version | Value #A |
-------------------------------------------
| app_1 | 0.0.111 | 2 |
| app_1 | 0.0.222 | 1 |
| app_2 | 0.0.111 | 2 |
| app_2 | 0.0.222 | 1 |
| app_3 | 0.0.111 | 3 |
字符串
第4列的值表示部署在每个集群中的所述代码的#(label_version);例如,app_1和app_2在两个集群中部署了0.0.111版本,在一个集群中部署了0.0.222版本,但app_3在三个集群中部署的版本相同。
我的最终目标是只计算distinct label_version,并以这种方式填充时间序列:
| label_app | Value #A |
-------------------------
| app_1 | 2 |
| app_2 | 2 |
| app_3 | 1 |
型
执行(count(group by(label_version)kube_deployment_labels{label_app=~".*"}))
给我正确的 * 值 *,但我想列出所有的应用程序相关联的 * 值 * 以及。我尝试了各种各样的组合,但都没有成功。
任何帮助将不胜感激!先谢谢你。
1条答案
按热度按时间gxwragnw1#
您可以在之前的结果上再应用一个
count by
。字符串
将返回与每个
label_app
关联的label_version
的数量。在这个demo中可以看到类似的查询。