如果吊舱没有声明集装箱端口,则无法重新标记普罗米修斯吊舱刮擦标签__地址__ [英] Unable to relabel Prometheus pod scrape label __address__ if pod doesn't declare containerport

查看:10
本文介绍了如果吊舱没有声明集装箱端口,则无法重新标记普罗米修斯吊舱刮擦标签__地址__的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

根据Prometheus documentation

如果容器没有指定的端口,则每个 创建容器是为了通过重新标记手动添加端口。&Quot;

然而,在我的设置中,带有集装箱端口的Pod的地址标签按预期进行了转换,而没有集装箱端口的Pod则保留为无端口标签。这是常见的/可接受的行为吗?或者,为了将__meta_kubernetes_pod_annotation_prometheus_io_port作为地址端口应用,是否需要进行一些更改?谢谢!

    additionalScrapeConfigs:
    - job_name: 'perpod-metricsscrape'
      scrape_interval: 5s
      metrics_path: /metrics
      kubernetes_sd_configs:
        - role: pod
      relabel_configs:
      - source_labels: [ __meta_kubernetes_pod_annotation_prometheus_io_scrape ]
        action: keep
        regex: true
      - source_labels: [ __meta_kubernetes_pod_annotation_prometheus_io_path ]
        action: replace
        target_label: __metrics_path__
        regex: (.+)
      - source_labels: [ __address__, __meta_kubernetes_pod_annotation_prometheus_io_port ]
        action: replace
        regex: (.+)(?::d+);(d+)
        replacement: ${1}:${2}
        target_label: __address__
      - action: labelmap
        regex: __meta_kubernetes_pod_label_(.+)

顺便说一句,我在大多数示例中略微更改了正则表达式,认为它们不匹配没有端口的地址(就像前面提到的无容器端口Pod的情况一样)-在重新标记之前:__Address__=&Quot;1.2.3.4&Quot;

推荐答案

在正则表达式中发现问题,并替换... 我现在匹配无端口__地址__,捕获可选端口,并替换为__meta_kubernetes_pod_annotation_prometheus_io_port:

   regex: ([^:]+)(:d+)?;(d+)
   replacement: ${1}:${3}

这篇关于如果吊舱没有声明集装箱端口,则无法重新标记普罗米修斯吊舱刮擦标签__地址__的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆