Spring Boot的Actuator Endpoint

456 阅读1分钟

Spring Boot的Actuator Endpoint

目的:监控(发现并了解程序的运行指标)
并管理(受保护的shut down功能/调整日志)程序
访问方式:Http、JMX(默认会把更多端口放在JMX中)
依赖:spring-boot-starter-actuator

一些常用的Endpoint

如何访问Actuator Endpoint?

HTTP访问:/actuator/<id>
端口与路径

  • management.server.address=
  • management.server.port= 分开应用8080和管理的端口
  • management.endpoints.web.base-path=/actuator
  • management.endpoints.web.path-mapping.<id>=路径

开启Endpoint

  • management.endpoint.<id>.enabled=true
  • management.endpoints.enabled-by-default=false

暴露Endpoint

  • management.endpoints.web.exposure.include=*
  • management.endpoints.web.exposure.include=info,health
  • management.endpoints.jmx.exposure.exclude=

定制自己的Health Indicator

增加自己的指标,判断数据加载是否正常,基础设施是否运行良好,尤其是对于公司内部私有的基础设施,健康检查只能自己来实现了
目的:检查应用程序的运行状态
状态:

  • Down-503
  • OUT_OF_SERVICE-503
  • UP-200
  • UNKNOWN-200

spring boot自带的Health Indicator

  • 机制:通过HealthIndicatorRegistry收集信息
  • HealthIndicator实现具体的检查逻辑

配置项

  • management.health.defaults.enabled=true|false
  • management.health.id.enabled=true
  • management.endpoint.health.show-details=always|when-authorized|never

自带的Health Indicator

DataSourceHealthIndicator extends AbstractHealthIndicator
doHealthCheck(Health.builder builder)
doDataSourceHealthCheck()

自定义Health Indicator

方法:

  • spring-boot-starter-actuator依赖
  • micrometer-registry-prometheus依赖
  • 实现HealthIndicator接口
  • 自定义检查逻辑,返回相应的health状态
  • health中应包含状态和详细描述信息details

实例
application.properties部分内容

也可添加info信息,加入两个属性app.author和app.encoding info.app.author=xxx
info.app.encoding=xxx

CoffeeIndicator.java

其中getCoffeeCount()就是简单的return coffeeRepository.count()
因此若data.sql若有insert语句,有coffee,则健康检查为up,否则若没有coffee,该coffeeIndicator,检查结果为down.