如何在Grafana中将一个变量的值映射到另一个变量?

时间:2019-10-11 19:42:50

标签: grafana prometheus

在我的Grafana仪表板(以Prometheus作为数据源)中,我有一个自定义$tier变量,该变量允许用户从下拉菜单中选择层。定义为:

Values separated by comma: production, stage, development

我需要通过标签来过滤Prometheus指标,该标签包含层名称的缩短版本:

  • “ foo-dev”
  • “ foo-stage”
  • “ foo-prod”

我当时想创建一个隐藏变量$shortened_tier,以便可以在查询过滤器中使用它,如下所示:

my_label=~"foo-$shortened_tier"

我想根据$tier的值进行定义:

  • “开发”->“开发”
  • “舞台”->“舞台”
  • “生产”->“产品”

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我想出了一个解决方法,但这是suuuuper hacky:

Name: shortened_tier
Type: Query
Data Source: Prometheus
Query: label_values(up{env="$tier"}, env)
Regex: (dev|stage|prod).*

我只想做Query: $tier,但是由于Grafana不允许我这样做,所以我不得不使用完全不同的指标(up),我可以在其中传递{{1 },并返回与字符串相同的精确值。然后,我使用正则表达式仅在字符串的开头查找$tier,捕获该部分,然后丢弃其余部分。

这是我要寻找的结果,dev|stage|prod的值根据所选并分配给$shortened_tier的值而动态变化。但是, man 我希望Grafana可以做到这一点。