( 十五 )、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描述

auditevents

公开当前应用程序的审计事件信息。需要一个AuditEventRepository bean

beans

显示应用程序中所有 Spring bean 的完整列表。

caches

公开可用的缓存。

conditions

显示对配置和自动配置类评估的条件以及它们匹配或不匹配的原因。

configprops

显示所有 的整理列表@ConfigurationProperties

env

从 Spring 的ConfigurableEnvironment.

flyway

显示已应用的任何 Flyway 数据库迁移。需要一颗或多Flyway颗bean。

health

显示应用程序运行状况信息。

httptrace

显示 HTTP 跟踪信息(默认情况下,最后 100 个 HTTP 请求-响应交换)。需要一个HttpTraceRepository bean

info

显示任意应用程序信息。

integrationgraph

显示 Spring 集成图。需要依赖于spring-integration-core.

loggers

显示和修改应用程序中记录器的配置。

liquibase

显示已应用的任何 Liquibase 数据库迁移。需要一颗或多Liquibase颗bean。

metrics

显示当前应用程序的“指标”信息。

mappings

显示所有@RequestMapping路径的整理列表。

quartz

显示有关 Quartz Scheduler 作业的信息。

scheduledtasks

显示应用程序中的计划任务。

sessions

允许从 Spring Session 支持的会话存储中检索和删除用户会话。需要使用 Spring Session 的基于 servlet 的 Web 应用程序。

shutdown

让应用程序正常关闭。默认禁用。

startup

显示由收集的启动步骤数据ApplicationStartup。需要SpringApplication配置一个BufferingApplicationStartup.

threaddump

执行线程转储。

如果您的应用程序是 Web 应用程序(Spring MVC、Spring WebFlux 或 Jersey),您可以使用以下附加端点:

ID描述

heapdump

返回堆转储文件。在 HotSpot JVM 上,HPROF会返回一个-format 文件。在 OpenJ9 JVM 上,PHD返回一个-format 文件。

jolokia

当 Jolokia 在类路径上时,通过 HTTP 公开 JMX bean(不适用于 WebFlux)。需要依赖于jolokia-core.

logfile

返回日志文件的内容(如果已设置logging.file.namelogging.file.path属性)。支持使用 HTTPRange头来检索日志文件的部分内容。

prometheus

以 Prometheus 服务器可以抓取的格式公开指标。需要依赖于micrometer-registry-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

禁用的端点从应用程序上下文中完全删除。如果您只想更改端点公开的技术,请改用includeexclude属性

5、暴露端点

由于端点可能包含敏感信息,您应该仔细考虑何时公开它们。下表显示了内置端点的默认暴露

IDJMX网络

auditevents

是的

beans

是的

caches

是的

conditions

是的

configprops

是的

env

是的

flyway

是的

health

是的

是的

heapdump

不适用

httptrace

是的

info

是的

integrationgraph

是的

jolokia

不适用

logfile

不适用

loggers

是的

liquibase

是的

metrics

是的

mappings

是的

prometheus

不适用

quartz

是的

scheduledtasks

是的

sessions

是的

shutdown

是的

startup

是的

threaddump

是的

到端点暴露的变化,使用下面的特定技术includeexclude特性:

jmx、web端点暴露示例默认

management.endpoints.jmx.exposure.exclude

 

management.endpoints.jmx.exposure.include

*

management.endpoints.web.exposure.exclude

 

management.endpoints.web.exposure.include

health

*可用于选择所有端点。例如,要通过 HTTP 公开除envbeans端点之外的所有内容,请使用以下属性:

management.endpoints.web.exposure.include= *
management.endpoints.web.exposure.exclude=env,beans

* 在 YAML 中具有特殊含义,因此如果要包含(或排除)所有端点,请务必添加引号。

6、自动配置的健康指标

在适当的时候,Spring Boot 会自动配置 HealthIndicators下表中列出的内容。您还可以通过配置启用或禁用选定的指标 management.health.key.enabledkey如下表所列:

keyName描述

cassandra

CassandraDriverHealthIndicator

检查 Cassandra 数据库是否已启动。

couchbase

CouchbaseHealthIndicator

检查 Couchbase 集群是否已启动。

db

DataSourceHealthIndicator

检查是否可以获得连接DataSource

diskspace

DiskSpaceHealthIndicator

检查磁盘空间不足。

elasticsearch

ElasticsearchRestHealthIndicator

检查 Elasticsearch 集群是否已启动。

hazelcast

HazelcastHealthIndicator

检查 Hazelcast 服务器是否已启动。

influxdb

InfluxDbHealthIndicator

检查 InfluxDB 服务器是否已启动。

jms

JmsHealthIndicator

检查 JMS 代理是否已启动。

ldap

LdapHealthIndicator

检查 LDAP 服务器是否已启动。

mail

MailHealthIndicator

检查邮件服务器是否已启动。

mongo

MongoHealthIndicator

检查 Mongo 数据库是否已启动。

neo4j

Neo4jHealthIndicator

检查 Neo4j 数据库是否已启动。

ping

PingHealthIndicator

始终以 响应UP

rabbit

RabbitHealthIndicator

检查 Rabbit 服务器是否已启动。

redis

RedisHealthIndicator

检查 Redis 服务器是否已启动。

solr

SolrHealthIndicator

检查 Solr 服务器是否已启动。

您可以通过设置 management.health.defaults.enabled 属性来禁用它们

 

posted @ 2021-11-25 22:09  邓维-java  阅读(229)  评论(0编辑  收藏  举报