簡體   English   中英

PromQL 將 label 值(不是名稱)更改為所有 TSDB 中的特定指標

[英]PromQL change label value (not name) into a specific metric in all TSDB

我想使用來自 metric rundeck_system_stats_uptime_since的 PromQL 更改 Prometheus DB 中 label instance(不是 label 名稱)。

Grafana截圖

我在攝取之前設法做到了這一點:

        - source_labels: [__meta_kubernetes_pod_container_name,__meta_kubernetes_pod_container_port_number]
          action: replace
          separator: ":"
          target_label: instance

所以我涵蓋了未來的指標,但我想對現有值( instance label)執行此操作。

預期結果:

rundeck_system_stats_uptime_since{app="rdk-exporter", instance="rdk-exporter:9620", [...]}

因為它是 k8s 中的容器,所以我對該容器/主機/節點等的 IP 不感興趣,因為它總是在變化,我只對指標感興趣。

謝謝

您可以使用MetricsQL中的label_replace

你可以在 victoriametrics play中檢查它是如何工作的

所以例如我有三個指標


process_cpu_seconds_total{cluster_num="1"cluster_retention="1m"instance="play-1m-1-vmagent.us-east1-b.c.victoriametrics-test.internal:8429"job="vmagent"}
process_cpu_seconds_total{cluster_num="1"cluster_retention="accounting"instance="play-accounting-1-vmagent.us-east1-b.c.victoriametrics-test.internal:8429"job="vmagent"}
process_cpu_seconds_total{cluster_num="1"cluster_retention="admin"instance="play-admin-1-vmagent.us-east1-b.c.victoriametrics-test.internal:8429"job="vmagent"}

如果我將使用此查詢

label_replace(process_cpu_seconds_total{instance=~".*:8429"}, "instance", "some:$2", "instance", "(.*):(.*)")

我會得到下一個回應

process_cpu_seconds_total{cluster_num="1"cluster_retention="1m"instance="some:8429"job="vmagent"}
process_cpu_seconds_total{cluster_num="1"cluster_retention="accounting"instance="some:8429"job="vmagent"}
process_cpu_seconds_total{cluster_num="1"cluster_retention="admin"instance="some:8429"job="vmagent"}

其中實例將具有相同的主機。

希望此解決方案對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM