环境如下

项目使用的是spring cloud架构,注册中心使用的是eureka

由于prometheus没有提供eureka的服务发现机制,但是可以在eureka中使用eureka-consul-adapter.jar让prometheus通过consul的配置进行服务发现

目前使用的版本分别是

prometheus  2.2.0
eureka-consul-adapter 1.0.0

在prometheus升级到目前最新版 2.18.0 后,无法进行服务发现,查看日志发现报错如下

level=error ts=2020-05-07T06:56:53.455Z caller=consul.go:487 component="discovery manager scrape" discovery=consul msg="Error refreshing service" service=demo tags= err="Unexpected response code: 404 ({\"timestamp\":1588834613455,\"status\":404,\"error\":\"Not Found\",\"message\":\"No message available\",\"path\":\"/v1/health/service/demo\"})"

以为是版本变更后,配置变化造成的问题,在看了官方文档后,发现配置文件并没有特别需要变动的地方

再次回退prometheus到老版本,启动成功。

后来发现 eureka-consul-adapter 是没有提供 Consul 的 health 类端口的,所以会出现404

目前在不升级eureka-consul-adapter的情况下,prometheus支持的最高版本是 v2.16.0

eureka-consul-adapter 升级到1.4.0 版本以后,这个问题也可以解决。

所以可以选择同时升级eureka-consul-adapter和prometheus到最新版本

因此,如果大家遇到这个问题,很可能是 Prometheus 和 eureka-consul-adapter 版本不匹配导致的。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐