Spring Actuator源码分析

  • 时间:
  • 浏览:0

通过这俩 PublicMetrics还里能获取到控制器访问请况:

Actuator模块通过Endpoint暴露这俩 接口,还里能是Rest土最好的方法,也还里能是JMX等这俩 土最好的方法.

由于使用Rest土最好的方法,通常SpringMVC是使用@RequestMapping,以及@Controller标注二个 控制器土最好的方法,由于不使用SpringMVC,即没引入SpringMVC的包,那末Springboot就会出错.却说我为了不走正常的SpringMVC机制,Actuator用EndpointHandlerMapping重写了RequestMappingInfoHandlerMapping,匹配的是实现了MvcEndpoint接口的”控制器”

HealthEndpoint是Actuator自带的Health Check,具体的检查操作总要 交由HealthIndicator外理,根据文档,实现 HealthIndicator即可自定义这俩 Health Check的逻辑,如下

http://kielczewski.eu/2015/01/application-metrics-with-spring-boot-actuator/

Endpoint和MvcEndpoint二个 的区别?

MvcEndpoint是对Endpoint SpringMVC层的装饰,去掉 了@RequestMapping,以及@ResponseBody.具体逻辑委托给Endpoint外理,.Endpoint的id即为url.

当然也还里能使用AOP做二个 method level的统计.因此假使 做二个 与业务无关,集成到框架里的Metrics统计

现在访问 health endpoint 是那末 的:

HealthIndicatorAutoConfiguration会在EndpointAutoConfiguration事先,自动配置所有的HealthIndicator

Actuator由于自带了这俩 HealthIndicator,自动启用每项:

多个HealchIndicator会由CompositeHealthIndicator调用HealthAggregator做aggregate(聚合),目前里还里能 OrderedHealthAggregator,用于排序

亲戚亲戚大伙儿儿重点来看下MetricsFilter这俩 过滤器:

整个过程:

MetricRepositoryAutoConfiguration -> CounterBuffers,GaugeBuffers用于保存计数数据

MetricRepositoryAutoConfiguration -> 初始化GaugeService + CounterService(内含CounterBuffers,GaugeBuffers)

MetricFilterAutoConfiguration -> 初始化MetricsFilter,该过滤器使用GaugeService + CounterService统计访问次数以及响应时间

PublicMetricsAutoConfiguration -> 初始化MetricReaderPublicMetrics,塞入CompositeMetricReader(CounterBuffers,GaugeBuffers).

MetricReaderPublicMetrics读取CounterBuffers,GaugeBuffers保存的统计数据

根据文档,还里能在业务代码中注入CounterService或GaugeService来统计信息:

这俩 Endpoint展示Metrics信息,具体的Metrics是由实现了PublicMetrics接口的类外理.

MetricsEndpoint维护着一份PublicMetrics列表,Actuator由于实现了如下:



所有被激活的PublicMetrics,都还里能通过访问/metrics查看:

文档中由于提到了自定义endpoint的土最好的方法,

分别为hi接口响应时间,访问次数.