Spring Boot Actuator到底是什么?健康监控?

9f5a1825f6789619679d0c3a0385db76.png

点击上方“蓝字”关注我们

938dc493f4cb4a1f644682a07992654d.png

一、Spring Boot Actuator是什么?

(1)Spring Boot Actuator 模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP 跟踪等,帮助我们监控和管理Spring Boot 应用。这个模块是一个采集应用内部信息暴露给外部的模块,上述的功能都可以通过HTTP 和 JMX 访问。

(2)因为暴露内部信息的特性,Actuator 也可以和一些外部的应用监控系统整合(Prometheus, Graphite, DataDog, Influx, Wavefront, New Relic等)。这些监控系统提供了出色的仪表板,图形,分析和警报,可帮助你通过一个统一友好的界面,监视和管理你的应用程序。

(3)Actuator使用Micrometer与这些外部应用程序监视系统集成。这样一来,只需很少的配置即可轻松集成外部的监控系统。

2d10a81a41e8d5376ee9d6a94268d197.png

二、什么是Endpoints?

Spring Boot 提供了所谓的 endpoints (下文翻译为端点)给外部来与应用程序进行访问和交互。

打比方来说,/health 端点 提供了关于应用健康情况的一些基础信息。metrics 端点提供了一些有用的应用程序指标(JVM 内存使用、系统CPU使用等)。

这些 Actuator 模块本来就有的端点我们称之为原生端点。根据端点的作用的话,我们大概可以分为三大类:

(1)应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与Spring Boot应用密切相关的配置类信息。

(2)度量指标类:获取应用程序运行过程中用于监控的度量指标,比如:内存信息、线程池信息、HTTP请求统计等。

(3)操作控制类:提供了对应用的关闭等操作类功能。

fa16ff8116e6754f6ec7892045c88cf4.png

三、重要的Endpoints解析之/health端点

/health端点:

(1)/health端点会聚合你程序的健康指标,来检查程序的健康情况。

(2)/health端点有很多自动配置的健康指示器:如redis、rabbitmq、db等组件。当你的项目有依赖对应组件的时候,这些健康指示器就会被自动装配,继而采集对应的信息。

(3)访问地址:http://localhost:端口号/actuator/health

#never:不展示详细信息,up或者down的状态,默认配置。
#when-authorized:详细信息将会展示给通过认证的用户。#always:对所有用户暴露详细信息。management.endpoint.health.show-details=always

49b3390c9be23930c917c010f8f5c7a6.png

当如上的组件有一个状态异常,应用服务的整体状态即为down。如上redis的状态极为down。

#我们也可以通过配置禁用某个组件的健康监测。
management.health.mongo.enabled: false
#禁用所有自动配置的健康指示器:
management.health.defaults.enabled: false

当然你也可以自定义一个Health Indicator,只需要实现HealthIndicator 接口或者继承AbstractHealthIndicator类。

具体可以参考官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints.health.writing-custom-health-indicators

34a57eb66fb02539df2c781fcd73afdf.png

四、重要的Endpoints解析之/metrics端点

(1)/metrics端点用来返回当前应用的各类重要度量指标,比如:内存信息、线程信息、垃圾回收信息、tomcat、数据库连接池等。

(2)Actuator在这个界面看不到具体的指标信息,只是展示了一个指标列表。为了获取到某个指标的详细信息,我们可以请求具体的指标信息。 

    请求的路径:http://localhost:端口号/actuator/metrics/{name}

    比如请求JVM最大内存:.../actuator/metrics/jvm.memory.max

{
    "names": [
        "tomcat.threads.busy",
        "jvm.threads.states",
        "jdbc.connections.active",
        "jvm.gc.memory.promoted",
        "http.server.requests",
        "hikaricp.connections.max",
        "hikaricp.connections.min",
        "jvm.memory.used",
        "jvm.gc.max.data.size",
        "jdbc.connections.max",
         ....
    ]
}

4c0575ec0216e81795c59c4b00435ef2.png

7e82a7e0df10bc8d4b1508baab509cbc.png

五、其他的Endpoints端点

(1)/loggers 端点暴露了我们程序内部配置的所有logger的信息。访问地址:http://localhost:端口号/actuator/loggers可以看到。

(2)/info端点可以用来展示程序的基础信息。并且你可以按照自己的需求在配置文件application.properties中个性化配置,默认情况下,该端点只会返回一个空的json内容。访问地址:http://localhost:端口号/actuator/info。

(3)/beans端点会返回Spring 容器中所有bean的别名、类型、是否单例、依赖等信息。访问地址:http://localhost:端口号/actuator/beans。

(4)/heapdump端点会自动生成一个 Jvm 的堆文件 heapdump。我们可以使用 JDK 自带的 Jvm 监控工具 VisualVM 打开此文件查看内存快照。访问地址:http://localhost:8080/actuator/heapdump。

(5)/threaddump端点可查看线程的情况。主要展示了线程名、线程ID、线程的状态、是否等待锁资源、线程堆栈等信息。访问地址:http://localhost:8080/actuator/threaddump。

(6)/shutdown端点属于操作控制类端点,可以优雅关闭 Spring Boot 应用。要使用这个功能首先需要在配置文件中开启:management.endpoint.shutdown.enabled=true

我们需要对其加入一定的保护机制,比如:定制Actuator的端点路径、整合Spring Security进行安全校验等。(不是特别必要的话,这个端点不用开)

(7)

b2bad2c0c8e4490916a165d6531db2c8.png

六、文档参考地址

官方文档参考地址:

https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints

博客参考地址:

https://juejin.cn/post/6844904050056495111#heading-9

62f38d6b8b1428769cc83c68af4ad125.png

bb16caf48e9602db97c8b018f61a9a0c.png

扫码二维码

获取更多精彩

IT学习小镇

f940115e9b9050bb948e5022980c8b82.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值