如何使用普罗米修斯抓取指标更改端口号

How to change the port number using which prometheus scrapes metrcs

我有一个复制因子为 3 的 pod。应用程序将指标放在端口 9001 上。我希望普罗米修斯运营商能够抓取指标。使用 stable/prometheus-operator helm chart 时,我的 values.yaml 中有以下内容。

prometheus:
  prometheusSpec:
    additionalScrapeConfigs:
    - job_name: 'akka-metrics'
      scrape_interval: 15s
      kubernetes_sd_configs:
      - role: pod
        namespaces:
          names:
          - default
      relabel_configs:
      - source_labels: [__meta_kubernetes_pod_container_name]
        action: keep   
        regex: 'my_pod_name.*'

使用上面的设置,我可以在 /target 中看到 pod,但它正在尝试从端口 25518558 获取指标。我想将这些端口中的一个更改为 9001(我的应用程序吐出指标的实际端口)。我想知道我该怎么做?

您应该可以使用 relabelling rule:

- job_name: 'akka-metrics'
      scrape_interval: 15s
      kubernetes_sd_configs:
      - role: pod
        namespaces:
          names:
          - default
      relabel_configs:
      - source_labels: [__meta_kubernetes_pod_container_name]
        action: keep   
        regex: 'my_pod_name.*'
      - source_labels: [__address__]
        action: replace
        regex: ([^:]+):.*
        replacement: :9001
        target_label: __address__

最后一条规则修改了目标的 __address__ 标签。它提取 IP 地址并将端口设置为 9001。这应该会导致 Prometheus 始终使用 <ip>:9001 作为目标。

官方也用了类似的东西example scrape config for Kubernetes