spring-boot(1.2.1)版本配置通过@EnablePrometheusEndpoint 普罗米修斯(0.0.24)后,当访问/prometheus 是会报ambiguous handler,这个意思是同一个地址(requestMapping)映射了2个方法。看启动日志发现
/prometheus 映射了 PrometheusMVCEndpoint.values() 和父类 EndpointMvcAdapter.invoke(),而1.2.1的EndpointMvcAdapter.invoke() 的注解是
@RequestMapping( method = {RequestMethod.GET} )
PrometheusMVCEndpoint.values()的注解是
@RequestMapping( method = {RequestMethod.GET}, produces = { "*/*" } )
当请求GET /prometheus 时,会spring-boot会找到两个方法,无法判断去哪一个所以报ambiguous handler (不确定的处理类)
由此断定出现错误可能是普罗米修斯和springboot版本不匹配导致的,于是我查看普罗米修斯其他低版本支持的spring-boot最低版本是什么,发现最低支持的是springboot1.3.3,所以我们把springboot升级到1.3.3,普罗米修斯降级到0.0.22。
0.0.22普罗米修斯
public class PrometheusMVCEndpoint extends AbstractEndpo