( 十五 )、SpringBoot 健康和指标 Spring-boot-actuator
( 十五 )、SpringBoot 健康和指标 Spring-boot-actuator
SpringBoot官网:https://docs.spring.io/spring-boot/docs/2.6.0/reference/htmlsingle/#actuator
1、简介
Spring Boot 包含许多附加功能,可帮助您在将应用程序推送到生产环境时监控和管理应用程序。您可以选择使用 HTTP 端点或 JMX 来管理和监控您的应用程序。审计、健康和指标收集也可以自动应用于您的应用程序。
2、Maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
3、端点
Actuator 端点可让您监控应用程序并与之交互。Spring Boot 包含许多内置端点,并允许您添加自己的端点。例如,health
端点提供基本的应用程序健康信息。
您可以启用或禁用每个单独的端点并通过 HTTP 或 JMX 公开它们(使它们可以远程访问)。当端点被启用和公开时,它被认为是可用的。内置端点仅在可用时自动配置。大多数应用程序选择通过 HTTP 公开,其中端点的 ID 和前缀 /actuator
映射到 URL。例如,默认情况下,health
端点映射到 /actuator/health
ID | 描述 |
| 公开当前应用程序的审计事件信息。需要一个 |
| 显示应用程序中所有 Spring bean 的完整列表。 |
| 公开可用的缓存。 |
| 显示对配置和自动配置类评估的条件以及它们匹配或不匹配的原因。 |
| 显示所有 的整理列表 |
| 从 Spring 的 |
| 显示已应用的任何 Flyway 数据库迁移。需要一颗或多 |
| 显示应用程序运行状况信息。 |
| 显示 HTTP 跟踪信息(默认情况下,最后 100 个 HTTP 请求-响应交换)。需要一个 |
| 显示任意应用程序信息。 |
| 显示 Spring 集成图。需要依赖于 |
| 显示和修改应用程序中记录器的配置。 |
| 显示已应用的任何 Liquibase 数据库迁移。需要一颗或多 |
| 显示当前应用程序的“指标”信息。 |
| 显示所有 |
| 显示有关 Quartz Scheduler 作业的信息。 |
| 显示应用程序中的计划任务。 |
| 允许从 Spring Session 支持的会话存储中检索和删除用户会话。需要使用 Spring Session 的基于 servlet 的 Web 应用程序。 |
| 让应用程序正常关闭。默认禁用。 |
| 显示由收集的启动步骤数据 |
| 执行线程转储。 |
如果您的应用程序是 Web 应用程序(Spring MVC、Spring WebFlux 或 Jersey),您可以使用以下附加端点:
ID | 描述 |
| 返回堆转储文件。在 HotSpot JVM 上, |
| 当 Jolokia 在类路径上时,通过 HTTP 公开 JMX bean(不适用于 WebFlux)。需要依赖于 |
| 返回日志文件的内容(如果已设置 |
| 以 Prometheus 服务器可以抓取的格式公开指标。需要依赖于 |
4、启用端点
默认情况下,shutdown
启用除 之外的所有端点。要配置端点的启用,请使用其 management.endpoint.<id>.enabled
属性。以下示例启用shutdown
端点:
management.endpoint.shutdown.enabled=true
如果您希望端点启用是选择加入而不是选择退出,请将management.endpoints.enabled-by-default
属性设置为false
并使用单个端点enabled
属性重新选择加入。以下示例启用info
端点并禁用所有其他端点:
management.endpoints.enabled-by-default=false
management.endpoint.info.enabled=true
禁用的端点从应用程序上下文中完全删除。如果您只想更改端点公开的技术,请改用include和exclude属性
5、暴露端点
由于端点可能包含敏感信息,您应该仔细考虑何时公开它们。下表显示了内置端点的默认暴露:
ID | JMX | 网络 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 是的 |
| 不适用 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 不适用 | 不 |
| 不适用 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 不适用 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
| 是的 | 不 |
到端点暴露的变化,使用下面的特定技术include
和exclude
特性:
jmx、web端点暴露示例 | 默认 |
| |
|
|
| |
|
|
*
可用于选择所有端点。例如,要通过 HTTP 公开除env
和beans
端点之外的所有内容,请使用以下属性:
management.endpoints.web.exposure.include= *
management.endpoints.web.exposure.exclude=env,beans
*
在 YAML 中具有特殊含义,因此如果要包含(或排除)所有端点,请务必添加引号。
6、自动配置的健康指标
在适当的时候,Spring Boot 会自动配置 HealthIndicators
下表中列出的内容。您还可以通过配置启用或禁用选定的指标 management.health.key.enabled
,key
如下表所列:
key | Name | 描述 |
| 检查 Cassandra 数据库是否已启动。 | |
| 检查 Couchbase 集群是否已启动。 | |
| 检查是否可以获得连接 | |
| 检查磁盘空间不足。 | |
| 检查 Elasticsearch 集群是否已启动。 | |
| 检查 Hazelcast 服务器是否已启动。 | |
| 检查 InfluxDB 服务器是否已启动。 | |
| 检查 JMS 代理是否已启动。 | |
| 检查 LDAP 服务器是否已启动。 | |
| 检查邮件服务器是否已启动。 | |
| 检查 Mongo 数据库是否已启动。 | |
| 检查 Neo4j 数据库是否已启动。 | |
| 始终以 响应 | |
| 检查 Rabbit 服务器是否已启动。 | |
| 检查 Redis 服务器是否已启动。 | |
| 检查 Solr 服务器是否已启动。 |
您可以通过设置 management.health.defaults.enabled
属性来禁用它们