将Pod IP地址替换为主机IP地址保持路径和端口相同

时间:2017-12-14 17:35:12

标签: regex prometheus

目前我正在使用普罗米修斯监控Kubernetes Pods。我的基本配置是:

- 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: (.+)

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

enter image description here

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

所以我添加了以下配置:

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

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

enter image description here

正则表达式有问题吗?

1 个答案:

答案 0 :(得分:0)

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

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