Prometheus 为每个 pod 的多个指标端点抓取配置

2024-03-21

我们有一个 Kubernetes Pod,它提供多个指标端点(:3093/metrics and :9113/metrics),但它还有一个不提供任何指标的端口(:80).

TL;DR:是否可以只刮掉端口3093 and 9113?


我们正在使用示例配置 https://github.com/prometheus/prometheus/blob/70f3d1e/documentation/examples/prometheus-kubernetes.yml对于抓取配置:

- job_name: 'kubernetes-pods'
  tls_config:
    insecure_skip_verify: true
  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_(.+)
  - source_labels: [__meta_kubernetes_namespace]
    action: replace
    target_label: kubernetes_namespace
  - source_labels: [__meta_kubernetes_pod_name]
    action: replace
    target_label: kubernetes_pod_name

当使用此注释启用抓取时,这些端点会被正确抓取:

  annotations:
    prometheus.io/scrape: "true"

但这有一个问题,它也会刮擦端口:80,这是不应该的。


该建议概述here https://github.com/prometheus/prometheus/issues/3756#issuecomment-767147462允许抓取每个 Pod 的多个端点。这个想法是为容器端口提供自定义名称,这些名称必须被删除,以便稍后在发现的目标的重新标记阶段使用这些名称。例如,以下配置添加prom-metrics端口 3093 和 9113 的名称,必须由 Prometheus 抓取。注意80端口没有prom-metrics名称,这样就不会被刮掉。

containers:
- name: custom-app
  image: github.com/user/app:latest
  ports:
  - containerPort: 80
  - containerPort: 3093
    name: prom-metrics
  - containerPort: 9113
    name: prom-metrics

稍后,以下抓取配置可用于抓取容器端口:prom-metrics name:

  - job_name: 'pods-with-prom-metrics'
    kubernetes_sd_configs:
    - role: pod
    relabel_configs:
    - source_labels: [__meta_kubernetes_pod_container_port_name]
      regex: prom-metrics
      action: keep
    - source_labels: [__address__, __meta_kubernetes_pod_container_port_number]
      regex: ([^:]+)(?::\d+)?;(\d+)
      replacement: $1:$2
      target_label: __address__
    - action: labelmap
      regex: __meta_kubernetes_pod_label_(.+)
    - source_labels: [__meta_kubernetes_pod_container_name]
      target_label: container
    - source_labels: [__meta_kubernetes_pod_name]
      target_label: pod
    - source_labels: [__meta_kubernetes_namespace]
      target_label: namespace
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Prometheus 为每个 pod 的多个指标端点抓取配置 的相关文章

随机推荐