regex - 如何在 PromQL 正则表达式中编写条件?
问题描述
我有一个自定义 Grafana 变量$var
,我在 Prometheus 查询中使用它来检索一些数据。根据此变量的值,我正在使用的指标的标签值应相应更改。换句话说,我想在正则表达式中对这个变量使用条件。请参见下面的示例:
some_metric{my_label=~"(?($var=val1)label_val1|label_val2)"}
上述查询将导致my_label
等于label_val1
if $var
equals to val1
,以及label_val2
在所有其他情况下。但是, Prometheus 用于正则表达式的RE2语法似乎不支持这一点。有没有其他方法可以实现这种行为?
注意:该$var
变量控制我仪表板中的大多数其他变量,并且它已经有一个键/值映射,所以我不能采用这种解决方法。我正在考虑创建一个额外的自定义变量,该变量也取决于$var
,但 Grafana 似乎也不支持这一点。
解决方案
一种解决方法可能是自Grafana 版本 7.3以来可用的键/值自定义变量。
您将创建一个变量并具有键值对:
val1 : label_val1, val2 : label_val2
然后在您的 PromQL 中,您将照常引用该变量:
some_metric{my_label=~"$var"}
推荐阅读
- python - 使用 `sqlalchemy` `insert` 批量插入相关对象
- python - 用下面单元格中的数据替换熊猫单元格“无”
- javascript - 在渲染中间件之前如何在nuxt中渲染vuex模块
- mapquest - MapQuest Route 不适用于欧洲的某些地点
- c++ - 我正在开发一个服务器,并且作为参数传递的 ip 不起作用
- flutter - 使用 sqflite 颤振收藏或收藏元素
- javascript - 如何修改对象中的键值?
- java - 遇到 JSONreader ClassNotFoundException 尽管将它包含在类路径中
- python - 为什么python内存分配会这样?
- reactjs - 反应问题。如何动态更改 setInterval 中的间隔值