Consul Connect 中 Prometheus 的 Spring Boot 执行器指标

Posted

技术标签:

【中文标题】Consul Connect 中 Prometheus 的 Spring Boot 执行器指标【英文标题】:Spring boot actuator metrics for Prometheus in Consul Connect 【发布时间】:2021-11-12 01:40:47 【问题描述】:

我有一个 Spring Boot 应用程序在启用 Consul Connect 的 Nomad 集群中运行。

network 
  mode = "bridge"


service 
  name = "api"
  port = "9966"

  connect 
    sidecar_service 
  

没有定义端口映射,API 只能在 consul 服务网格内通过代理访问。现在我让 prometheus 在同一个集群中运行。 prometheus 如何发现单个 API 实例并从中提取指标。我使用了以下配置。但是如果没有主机级别的映射端口,它就无法访问单个 API 实例。

- job_name: 'actuator'
    metrics_path: /api/actuator/prometheus
    consul_sd_configs:
    - server: ' env "NOMAD_IP_prometheus_ui" :8500'
      services: ['api']

如何解决这个问题?从在没有主机端口映射的服务网格中运行的 Spring Boot 应用程序中抓取指标的一般做法是什么?

【问题讨论】:

【参考方案1】:

终于找到了。 Nomad 可以选择通过另一个 sidecar 代理公开特定端点,而无需 mTLS 身份验证。此选项的用例专门用于运行状况检查或指标。

https://www.nomadproject.io/docs/job-specification/expose#expose-examples

connect 中的 expose 节有助于实现这一点。

connect 
        sidecar_service 
          proxy 
            expose 
              path 
                path             =  "/actuator/prometheus"
                protocol         =  "http"
                local_path_port  =  9966
                listener_port    =  "metrics"
              
            
          
        
      

【讨论】:

公开路径参数在 consul.io/docs/connect/registration/…> 也有更详细的说明。我应该注意,这些端口是使用为应用程序的服务流量部署的同一个 sidecar 代理公开的。 Consul 不需要单独的代理进程来公开这些端口。

以上是关于Consul Connect 中 Prometheus 的 Spring Boot 执行器指标的主要内容,如果未能解决你的问题,请参考以下文章

Consul Connect 中 Prometheus 的 Spring Boot 执行器指标

喜大普奔:HashiCorp Consul 1.3:Envoy发布!

consul什么是consul

Consul 介绍

Springcloud整合Consul

带有 Consul 的 Spring Boot 执行器