Spring Actuator源码分析

  • 时间:
  • 浏览:1

文档中机会提到了自定义endpoint的最好的办法 ,

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

根据文档,不都都都可以在业务代码中注入CounterService或GaugeService来统计信息:

HealthEndpoint是Actuator自带的Health Check,具体的检查操作就有交由HealthIndicator出理 ,根据文档,实现 HealthIndicator即可自定义一点Health Check的逻辑,如下

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

让我门 重点来看下MetricsFilter一点过滤器:

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

一点Endpoint展示Metrics信息,具体的Metrics是由实现了PublicMetrics接口的类出理 .

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



所有被激活的PublicMetrics,都不都都都可以通过访问/metrics查看:

现在访问 health endpoint 是原先的:

整个过程:

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

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

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

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

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

机会使用Rest最好的办法 ,通常SpringMVC是使用@RequestMapping,以及@Controller标注另有另一个 控制器最好的办法 ,机会不使用SpringMVC,即没引入SpringMVC的包,没办法 Springboot就会出错.可是为了不走正常的SpringMVC机制,Actuator用EndpointHandlerMapping重写了RequestMappingInfoHandlerMapping,匹配的是实现了MvcEndpoint接口的”控制器”

通过一点PublicMetrics不都都都可以获取到控制器访问情况报告:

Endpoint和MvcEndpoint另有另一个 的区别?

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

Actuator模块通过Endpoint暴露一点接口,不都都都可以是Rest最好的办法 ,可是都都都可以是JMX等一点最好的办法 .

当然可是都都都可以使用AOP做另有另一个 method level的统计.可是可是做另有另一个 与业务无关,集成到框架里的Metrics统计

HealthIndicatorAutoConfiguration会在EndpointAutoConfiguration就让,自动配置所有的HealthIndicator

Actuator机会自带了一点HealthIndicator,自动启用每段: