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

OpenShift中Prometheus抓取SpringBoot与MicroProfile指标的正确配置方法

问题原因

当前两个Prometheus抓取任务均基于Kubernetes Endpoints角色做全量目标发现,未对应用类型做筛选,导致Prometheus会使用MicroProfile的指标路径请求SpringBoot服务、使用SpringBoot的指标路径请求MicroProfile服务,最终在两类应用侧持续产生404无效请求告警。

配置方案

核心思路是给两类服务添加可区分的标识标签,再通过Prometheus的relabel_configs规则为每个抓取任务过滤出匹配类型的目标,从根源上避免错误路径的请求。

步骤1:给工作负载添加类型标签

分别为两类应用对应的Service资源添加区分标签(标签会自动关联到对应的Endpoints资源,可被Prometheus服务发现读取):

  • 所有Eclipse MicroProfile应用对应的Service添加标签:app-type: microprofile
  • 所有SpringBoot应用对应的Service添加标签:app-type: springboot

如果你的标签是直接打在Pod上而非Service上,后续配置中替换对应的元数据标签字段即可。

步骤2:修改Prometheus抓取配置

在两个原有抓取任务中添加重标记规则,仅保留匹配对应类型、端口为9443的抓取目标:

Eclipse MicroProfile 抓取配置

- job_name: 'microprofile-metric'
  scrape_interval: 1m
  metrics_path: /metrics
  scheme: https
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: true
  kubernetes_sd_configs:
  - role: endpoints
  relabel_configs:
    # 仅保留打了app-type=microprofile标签的服务目标
    - source_labels: [__meta_kubernetes_service_label_app_type]
      regex: microprofile
      action: keep
    # 仅抓取9443端口的端点,排除其他端口的干扰
    - source_labels: [__meta_kubernetes_endpoint_port_number]
      regex: 9443
      action: keep

SpringBoot 抓取配置

- job_name: 'springboot-metric'
  scrape_interval: 1m
  metrics_path: /actuator/prometheus
  scheme: https
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: true
  kubernetes_sd_configs:
  - role: endpoints
  relabel_configs:
    # 仅保留打了app-type=springboot标签的服务目标
    - source_labels: [__meta_kubernetes_service_label_app_type]
      regex: springboot
      action: keep
    # 仅抓取9443端口的端点,排除其他端口的干扰
    - source_labels: [__meta_kubernetes_endpoint_port_number]
      regex: 9443
      action: keep

补充说明

  • 如果你将类型标签打在Pod资源上,将上述配置中__meta_kubernetes_service_label_app_type替换为__meta_kubernetes_pod_label_app_type即可。
  • 配置生效后,Prometheus只会向对应类型的服务发送匹配路径的抓取请求,应用侧不会再出现无效404请求的告警日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:54:40