Prometheus /从__meta_gce_tags

时间:2017-10-30 09:47:50

标签: regex prometheus

我使用relabeling通过在Prometheus yml中使用以下代码将gce标记带到Prometheus标签:

 relabel_configs:
  - source_labels: [__meta_gce_tags]
    target_label: tags

标签看起来像这样:

tags=",node_a,node_prod,node_centos,"

问题是它提供了一个字符串列表,而我希望有一个标签列表,以便我可以查询它。例如,而不是使用:

sum(elasticsearch_node_stats_up{tags=~".*?noda_a.*node_prod.?"})

我可以在没有正则表达式的情况下使用它。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式在重新标记期间从标签值中提取值。所以尝试这个,这不是完全干,但有效:

relabel_configs:
  - source_labels: [__meta_gce_tags]
    regex: ",node_([a-z]+),node_[a-z]+,node_[a-z]+"
    target_label: node
    replacement: '${1}'
  - source_labels: [__meta_gce_tags]
    regex: ",node_[a-z]+,node_([a-z]+),node_[a-z]+"
    target_label: env
    replacement: '${1}'
  - source_labels: [__meta_gce_tags]
    regex: "",node_[a-z]+,node_[a-z]+,node_([a-z]+)""
    target_label: os
    replacement: '${1}'

请注意,可能要使用更优雅的正则表达式。

如果您可以控制标签值,则这是一种更耐用的技术:https://www.robustperception.io/extracting-full-labels-from-consul-tags/