actuator health 报500
一、什么是SpringBootActuator
SpringBootActuator模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP跟踪等,帮助我们监控和管理SpringBoot应用。这个模块是一个采集应用内部信息暴露给外部的模块,上述的功能都可以通过HTTP和JMX访问。
spring framework因为暴露内部信息的特性,Actuator也可以和一些外部的应用监控系统整合(Prometheus,Graphite,DataDog,Influx,Wavefront,NewRelic等)。这些监控系统提供了出的仪表板,图形,分析和警报,可帮助你通过一个统一友好的界面,监视和管理你的应用程序。
Actuator使用Micrometer与这些外部应用程序监视系统集成。这样一来,只需很少的配置即可轻松集成外部的监控系统。
Micrometer为Java平台上的性能数据收集提供了一个通用的API,应用程序只需要使用Micrometer的通用API来收集性能指标即可。Micrometer会负责完成与不同监控系统的适配工
作。这就使得切换监控系统变得很容易。
对比Slf4j之于JavaLogger中的定位。
二、快速开始,创建一个SpringBootActuatorDemo
我们先创建一个demo应用。
你可以通过SpringBootCLI创建:
springinit-d=web,actuator-n=actuator-demoactuator-demo
或者通过SpringInitializr创建:
对应的maven依赖:
<dependencies>
...
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
...
</dependencies>
对应的Gradle依赖:
dependencies{
    compile("org.springframework.boot:spring-boot-starter-actuator")
}
三、Endpoints介绍
SpringBoot提供了所谓的endpoints(下文翻译为端点)给外部来与应用程序进行访问和交互。
打比方来说,/health端点提供了关于应用健康情况的一些基础信息。metrics端点提供了一些有用的应用程序指标(JVM内存使用、系统CPU使用等)。
这些Actuator模块本来就有的端点我们称之为原生端点。根据端点的作用的话,我们大概可以分为三大类:
应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与SpringBoot应用密切相关的配置类信息。
度量指标类:获取应用程序运行过程中用于监控的度量指标,比如:内存信息、线程池信息、HTTP请求统计等。
操作控制类:提供了对应用的关闭等操作类功能。
详细的原生端点介绍,请以为准,这里就不赘述徒增篇幅。
需要注意的就是:
每一个端点都可以通过配置来单独禁用或者启动
不同于Actuator1.x,Actuator2.x的大多数端点默认被禁掉。Actuator2.x中的默认端点增加了/actuator前缀。默认暴露的两个端点为/actuator/health和/actuator/info
四、端点暴露配置
我们可以通过以下配置,来配置通过JMX和HTTP暴露的端点。
posure.posure.includeinfo,healt
可以打开所有的监控点
posure.include=*
也可以选择打开部分,"*"代表暴露所有的端点,如果指定多个端点,用","分开
lude=beans,trace
Actuator默认所有的监控点路径都在/actuator/*,当然如果有需要这个路径也支持定制。
dpoints.web.base-path=/minitor
设置完重启后,再次访问地址就会变成/minitor/*。
现在我们按照如下配置:
#"*"代表暴露所有的端点如果指定多个端点,用","分开
posure.include=*
#赋值规则同上
lude=
启动DEMO程序,访问localhost:8080/actuator,查看暴露出来的端点:
下面,我会着重介绍几个比较重要的端点。
五、重要端点解析
5.1/health端点
/health端点会聚合你程序的健康指标,来检查程序的健康情况。端点公开的应用健康信息取决于:
dpoint.health.show-details=always
该属性可以使用以下值之一进行配置:
NameDescriptionnever不展示详细信息,up或者down的状态,默认配置when-authorized详细信息将会展示给通过认证的用户。授权的角可以通过les配置always对所有用户暴露详细信息
按照上述配置,配置成always之后,我们启动项目,访问localhost:8080/actuator/health端口,可以看到这样的信息:
是不是感觉好像健康信息有点少?先别急,那是因为我们创建的是一个最基础的Demo项目,没有依赖很多的组件。
/
health端点有很多自动配置的健康指示器:如redis、rabbitmq、db等组件。当你的项目有依赖对应组件的时候,这些健康指示器就会被自动装配,继而采集对应的信息。如上面的diskSpace节点信息就是DiskSpaceHealthIndicator在起作用。
上述截图取自官方文档
这是我另一个项目的/health端点信息。
当如上的组件有一个状态异常,应用服务的整体状态即为down。我们也可以通过配置禁用某个组件的健康监测。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。