有了这个代码就可以参考具体怎样实现metrics信息的推送了
但是还有一个问题就是metrics信息虽然暴露了url接口但是应用内我怎么获取那???
这里又引发了我们一探究竟的兴趣!。。。。。。继续看源码!!!!!!!!!!!
从spring boot启动展示的日志中我们可以发现线索,具体/metrics路径具体执行的是哪里
Mapped "{[/metrics || /metrics.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()从org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()这里我们发现了端倪
好的 我们就去这个包去找相关线索

好的我们找到了这个包往下看

终于找到他了这里我们就可以用定时器进行轮训调用了。基础准备已经ok,好了不多说了直接上写好的代码
View Code
View Code
View Code
View Codepackage com.zjs.mic.metrics.stream; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Import; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Import(MetricsStreamAutoConfiguration.class) @EnableConfigurationProperties({MetricsStreamProperties.class}) public @interface EnableMetricsStream { }
已经将上面的代码包装成注解打好包 在入口类加@EnableMetricsStream 注解就能生效
剩下的就是我们去mq接收信息传递到响应数据库中进行处理就行了
好实践部分就到这里
总结思考
监控信息hystrix和metrics到底是拉取好还是主动推送好!一下简单分析:
拉取,对于被监控的应用来说值引用少量的包节省了推送信息的线程,基本没有什么开发量,对于一些严格权限控制的springboot应用,就需要额外开接口或者拉取进行权限验证很不方便
推送,应用主动推送应用相关的包和注解占用对应的线程资源,应用可以进行严格的权限控制不用对接口做例外不需要扫描程序开发。
我的结论是两者并存,不知道大家有没有什么其他想法可以说来听听!

