You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Prometheus抓取Kubernetes LoadBalancer Ingress字段?

问题描述

在Kubernetes集群中使用Prometheus Helm Chart监控服务,但无法让Prometheus发现或抓取Kubernetes Service的LoadBalancer Ingress字段。

Service配置

Name:                     postgres-xyz-postgresql-primary
Namespace:                xyz
Labels:                   app.kubernetes.io/component=primary
                          app.kubernetes.io/instance=postgres-app
                          app.kubernetes.io/managed-by=Helm
                          app.kubernetes.io/name=postgresql
                          app.kubernetes.io/version=17.0.0
                          helm.sh/chart=postgresql-16.0.1
Annotations:              meta.helm.sh/release-name: postgres-app
                          meta.helm.sh/release-namespace: xyz
Selector:                 app.kubernetes.io/component=primary,app.kubernetes.io/instance=postgres-app,app.kubernetes.io/name=postgresql
Type:                     LoadBalancer
IP Family Policy:         SingleStack  
IP Families:              IPv4
IP:                       
IPs:                      
LoadBalancer Ingress:     aoo000nnbbgghhsdfg-182496858.us-east-1.elb.amazonaws.com
Port:                     tcp-postgresql  5432/TCP
TargetPort:               tcp-postgresql/TCP
NodePort:                 tcp-postgresql  32599/TCP
Endpoints:                10.0.91.92:5432
Session Affinity:         None
External Traffic Policy:  Cluster

当前Prometheus抓取配置

- job_name: 'kubernetes-services'
  honor_labels: true

  metrics_path: /probe
  params:
    module: [http_2xx]

  kubernetes_sd_configs:
    - role: service

  relabel_configs:
    - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_probe]
      action: keep
      regex: true
    - source_labels: [__address__]
      target_label: __param_target
    - target_label: __address__
      replacement: blackbox
    - source_labels: [__param_target]
      target_label: instance
    - action: labelmap
      regex: __meta_kubernetes_service_label_(.+)
    - source_labels: [__meta_kubernetes_namespace]
      target_label: namespace
    - source_labels: [__meta_kubernetes_service_name]
      target_label: service

尝试添加以下relabel规则但未成功捕获LoadBalancer Ingress值:

- source_labels: [__meta_kubernetes_service_annotation_external_dns_hostname]
  target_label: loadbalancer_ingress

疑问

  1. 如何修改Prometheus的relabel_configs以在抓取时包含LoadBalancer Ingress字段?
  2. kubernetes_sd_configs中是否有对应LoadBalancer Ingress字段的特定标签或字段?
  3. 是否需要单独配置来显式针对LoadBalancer类型的Service?

额外信息

  • Kubernetes版本:1.30
  • Prometheus Helm Chart版本:prometheus-26.0.0

解决方案

1. 修改relabel_configs捕获LoadBalancer Ingress字段

直接使用Prometheus Kubernetes服务发现提供的内置元标签,添加以下relabel规则到你的relabel_configs中:

- source_labels: [__meta_kubernetes_service_load_balancer_ingress_hostname]
  target_label: loadbalancer_ingress
  action: replace

如果你的LoadBalancer Ingress是IP而非主机名,替换为__meta_kubernetes_service_load_balancer_ingress_ip即可。

若需仅针对LoadBalancer类型的Service保留该标签,可在规则前添加过滤条件:

- source_labels: [__meta_kubernetes_service_type]
  action: keep
  regex: LoadBalancer

2. kubernetes_sd_configs中对应LoadBalancer Ingress的元标签

是的,Prometheus针对LoadBalancer类型的Service提供了两个专属元标签:

  • __meta_kubernetes_service_load_balancer_ingress_hostname:对应Service的LoadBalancer Ingress主机名(如你的AWS ELB域名)
  • __meta_kubernetes_service_load_balancer_ingress_ip:对应Service的LoadBalancer Ingress IP地址

这些标签仅在Service类型为LoadBalancer且Ingress字段已被云提供商分配后才会生成。

3. 是否需要单独配置针对LoadBalancer类型的Service?

根据需求决定:

  • 若抓取作业仅需处理LoadBalancer类型的Service,可在relabel_configs开头添加过滤规则,只保留目标类型的服务:
- source_labels: [__meta_kubernetes_service_type]
  action: keep
  regex: LoadBalancer
  • 若需同时处理多类型Service,但仅为LoadBalancer类型添加loadbalancer_ingress标签,可给relabel规则增加匹配条件:
- source_labels: [__meta_kubernetes_service_type, __meta_kubernetes_service_load_balancer_ingress_hostname]
  target_label: loadbalancer_ingress
  regex: LoadBalancer;(.*)
  replacement: $1

内容的提问来源于stack exchange,提问作者Atish Humbre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:58:18