1.概念及作用:Actuator是Spring Boot的一个模块,它提供了一些生产级别的功能,如健康检查、审计、指标收集、HTTP跟踪等,监控和管理Spring Boot应用。这些功能可以通过HTTP和JMX访问。
2.应用:Actuator也可以和一些外部的应用监控系统整合(例如:Prometheus,Graphite,DataDog,Influx,Wavefront,New Relic等)这些监控系统提供了出色的的仪表板,图形,分析和警报,通过一个统一友好的界面,监视和管理应用程序。
3.使用:
要使用Spring Boot Actuator提供的监控功能,需要在pom.xml中添加依赖
<!-- Actuator监控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
加上这个maven依赖,Spring Boot在运行时就会自动开启/actuator/health和/actuator/info这两个endpoint。可以通过这两个endpoint查看当前Spring Boot 运行的情况。
如果Eureka客户端访问不了:则在application.yml中加入以下配置:
eureka:
client:
healthcheck:
enabled: true
# 改用健康检查方式,使用Actuator的/health端点来检查客户端健康状态
【默认是通过心跳机制来检查,默认开启,不用做任何设置】
拓展:
一、心跳机制和Actuator:
心跳机制和Actuator是两种不同的健康检查方式,他们都用于监控和管理应用程序的健康状态。
但是工作原理和使用场景有所不同。
-
心跳机制:通常用于检查网络连接的状态。在这种机制中,客户端会定期向服务器发送心跳消息,表明自己还在运行。如果服务器在一定时间内没有收到某个客户端的心跳,那么服务器会认为这个客户端已经下线。心跳机制是一种轻量级的健康检查方式,它只能检查网络连接是否正常,不能检查应用程序的内部状态。
-
Spring Boot Actuator 则提供了更为详细和全面的健康检查功能。Actuator可以收集和暴露应用程序的各种信息,如内存使用情况、线程信息、HTTP请求和统计等。这些信息可以通过HTTP或JMX访问。Actuator还可以和一些外部的应用监控系统整合,如Prometheus,Graphite,DataDog,Influx,Wavefront,New Relic等。
-【其他几种健康检查方式】:
- TCP_HALF_OPEN:通过发送SYN包建立TCP连接,如果能收到SYN_ACK,就认为服务是健康的。
- TCP ECV:通过发送定制的TCP报文,然后在返回值中匹配指定内容,判断应用状态。
- HTTP GET:通过HTTP GET的方式,获取指定页面,通过判断页面中是否有指定的字符串,判断HTTP应用的健康状态。
二、endpoint是什么
在Spring Boot中,endpoint是一种可以暴露应用程序内部信息的机制。endpoint可以提供应用程序的健康状况、内存使用情况、线程信息、日志等信息。通过访问endpoint,可以更加方便的了解应用程序的运行情况,进行问题排查和监控。
Spring Boot 提供了一些内置的endpoint,比如/health、/metrics等,同时也支持自定义endpoint。这些endpoint主要用来监控应用服务的运行状况,并集成在MVC中提供查看接口。
例如:/health 会提供应用程序的健康状态信息,如数据库连接是否正常,磁盘空间是否足够等。/metrics 会提供一些应用程序指标,如JVM内存使用、系统CPU使用等。
常见的endpoint:
- /actuator:查看有哪些 Actuator Endpoint 是开放的。
- /actuator/auditevent:查看 audit 的事件,例如认证进入、订单失败,需要搭配 Spring security 使用。
- /actuator/beans:查看运行当下里面全部的 bean,以及他们的关系。
- /actuator/conditions:查看自动配置的结果,记录哪些自动配置条件通过了,哪些没通过。
- /actuator/configprops:查看注入带有 @ConfigurationProperties 类的 properties 值(包含默认值)。
- /actuator/env:查看全部环境属性,可以看到 SpringBoot 载入了哪些 properties,以及这些 properties 的值。
- /actuator/flyway:查看 flyway DB 的 migration 信息。
- /actuator/health:查看当前 SpringBoot 运行的健康指标。
- /actuator/info:查看 properties 中 info 开头的属性的值。
- /actuator/mappings:查看全部的 endpoint(包含 Actuator ),以及他们和 Controller 的关系。
- /actuator/metrics:查看有哪些指标可以看(ex: jvm.memory.max、system.cpu.usage),使用 /actuator/metrics/{metric.name} 分别查看各指标的详细信息。
- /actuator/scheduledtasks:查看定时任务的信息。
- /actuator/shutdown:唯一 一个需要 POST 请求的 endpoint,优雅的关闭 SpringBoot 程序。默认是关闭的。
【开启设置】:
#暴露所有接口,也可以指定特定接口
management.endpoints.web.exposure.include=*
#启用shutdown
management.endpoint.shutdown.enabled=true