Prometheus:如何用正则表达式替换Consul服务器端口?

问题描述 投票:3回答:2

当Prometheus使用Consul的自动发现功能获取要监控的目标列表时,它也会自动获得Consul服务器。这很棒 - 我们希望用普罗米修斯来监控这些人。问题是Consul使用端口8300报告这些节点,这不是我们用来监视目标的端口。

如何将从Consul收到的端口替换为其他东西?我知道这可以通过Prometheus relabel_configs实现,但我还没有成功配置它。

consul prometheus
2个回答
8
投票

我终于搞清楚了。下面是一个工作实例。正如documentation指定的那样,address关键字可能不适用于所有设置 - 您可能想尝试“ : “相反。

   - source_labels: ['__address__']
     separator:     ':'
     regex:         '(.*):(8300)'
     target_label:  '__address__'
     replacement:   '${1}:9126'

0
投票

如果您想通过附加注释动态定义端口,即:

  selector:
    matchLabels:
      app: my-service
  template:
    metadata:
      labels:
        app: my-service
      annotations:
        prometheus: "true"
        prometheus/port: "8888"

您可以使用以下转换:

- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_port]
    action: replace
    regex: ([^:]+)(?::\d+)?;(\d+)
    replacement: ${1}:${2}
    target_label: __address__

普罗米修斯的来源标签与;相结合,在这种情况下,我们将有ie。 (如果你的服务器默认收听8080):http://10.52.9.79:8080;8888

在正则表达式中我们有:

  • 第一组 - 没有:的所有迹象,即://10.52.9.79
  • 具有原始端口的第二个非捕获组(如果存在)
  • 第三组带注释的端口

因此,您可以从注释中设置原始地址和端口。如果您有Spring Boot应用程序并且希望使用与默认应用程序端口不同的管理端口,则可能很有用。

© www.soinside.com 2019 - 2024. All rights reserved.