【问题标题】:Replace pod IP address with Host IP address keeping path and port same将 pod IP 地址替换为主机 IP 地址,保持路径和端口相同
【发布时间】:2017-12-14 17:35:12
【问题描述】:

目前我正在使用 Prometheus 监控 Kubernetes Pod。我的基本配置是:

- job_name: 'kubernetes_pods'
  tls_config:
    insecure_skip_verify: true
  kubernetes_sd_configs:
  - api_server: http://k8s_master:8080
    role: pod
  relabel_configs:
    - source_labels: [__meta_kubernetes_pod_name]
      action: replace
      target_label: pod_name
    - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
      action: replace
      target_label: __metrics_path__
      regex: (.+)

这基本上会导致 Endpoints 列说明内部 Kubernetes IP 地址,而不是部署 pod 的主机 IP 地址。

我想将 pod IP 地址更改为实际的主机 IP 地址。

所以我添加了以下配置:

- source_labels: [__meta_kubernetes_pod_host_ip]
  target_label: __address__
  regex: (.*)
  replacement: $1

现在我看到的是 IP 肯定已经更改,但由于某种原因,: 之后的所有内容都完全相同,这是错误的。

正则表达式有问题吗?

【问题讨论】:

    标签: regex prometheus


    【解决方案1】:

    __address__ 包含端口号,因此您需要保留它或从另一个标签中获取它。例如:

    - source_labels: [__meta_kubernetes_pod_host_ip, __address__]
      target_label: __address__
      regex: (.*);.*:(\d+)
      replacement: $1:$2
    

    【讨论】:

    • 谢谢。但我认为这只有在我的指标路径相同的情况下才有效,即 /metrics ?我的不同 pod 有不同的指标路径,例如/pod-name/health.
    • 这是由__metrics_path__标签控制的,是独立的
    猜你喜欢
    • 2012-05-20
    • 2014-03-14
    • 1970-01-01
    • 2014-04-12
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2021-12-11
    相关资源
    最近更新 更多