我使用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.?"})
我可以在没有正则表达式的情况下使用它。有没有办法做到这一点?
答案 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/