actuator模块通过endpoint暴露一些接口,可以是rest方式,也可以是jmx等其他方式.
如果使用rest方式,通常springmvc是使用@requestmapping,以及@controller标注一个控制器方法,如果不使用springmvc,即没引入springmvc的包,那么springboot就会出错.所以为了不走正常的springmvc机制,actuator用endpointhandlermapping重写了requestmappinginfohandlermapping,匹配的是实现了mvcendpoint接口的”控制器”

<code>endpoint和mvcendpoint两个的区别?</code>
mvcendpoint是对endpoint springmvc层的装饰,添加了@requestmapping,以及@responsebody.具体逻辑委托给endpoint处理,.endpoint的id即为url.
现在访问 health endpoint 是这样的:
healthindicatorautoconfiguration会在endpointautoconfiguration之前,自动配置所有的healthindicator
actuator已经自带了一些healthindicator,自动启用部分:
多个healchindicator会由compositehealthindicator调用healthaggregator做aggregate(聚合),目前只有orderedhealthaggregator,用于排序
这个endpoint展示metrics信息,具体的metrics是由实现了publicmetrics接口的类处理.
metricsendpoint维护着一份publicmetrics列表,actuator已经实现了如下:
所有被激活的publicmetrics,都可以通过访问<code>/metrics</code>查看:
通过这个publicmetrics可以获取到控制器访问情况:
分别为hi接口响应时间,访问次数.
整个过程:
metricrepositoryautoconfiguration -> counterbuffers,gaugebuffers用于保存计数数据
metricrepositoryautoconfiguration -> 初始化gaugeservice + counterservice(内含counterbuffers,gaugebuffers)
metricfilterautoconfiguration -> 初始化metricsfilter,该<code>过滤器</code>使用gaugeservice + counterservice统计访问次数以及响应时间
publicmetricsautoconfiguration -> 初始化metricreaderpublicmetrics,塞入compositemetricreader(counterbuffers,gaugebuffers).
metricreaderpublicmetrics读取counterbuffers,gaugebuffers保存的统计数据
我们重点来看下<code>metricsfilter</code>这个过滤器:
当然也可以使用aop做一个method level的统计.但是我希望做一个与业务无关,集成到框架里的metrics统计
<a href="http://kielczewski.eu/2015/01/application-metrics-with-spring-boot-actuator/">http://kielczewski.eu/2015/01/application-metrics-with-spring-boot-actuator/</a>