Spring Consul Connect 中 Prometheus 的引导执行器指标

Spring boot actuator metrics for Prometheus in Consul Connect

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

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 启动应用程序 运行 抓取指标的一般做法是什么?

终于找到了。 Nomad 可以选择在没有 mTLS 身份验证的情况下通过 sidecar 代理公开特定端点。此选项的用例专门用于健康检查或指标。

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"
              }
            }
          }
        }
      }