【spring系列】Actuator服务监控与管理

Spring Boot Actuator 服务监控与管理

参考地址:https://docs.spring.io/spring-boot/docs/2.2.0.M6/reference/html/production-ready-features.html#production-ready-enabling

https://docs.spring.io/spring-boot/docs/current/actuator-api/html/

Spring Boot版本:2.2.0.M6

Actuator作用

SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、环境变量、日志信息、线程信息等。

添加actuator模块

基于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")
}

引用成功之后,即可启动spring boot工程,启动成功如下:

在这里插入图片描述
可看到有health,info 等映射信息。

端点

端点说明详解:

ID 描述 默认启用
auditevents 公开当前应用程序的审核事件信息。
beans 显示应用程序中所有Spring Bean的完整列表。
caches 公开可用的缓存。
conditions 显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。
configprops 显示所有的整理列表@ConfigurationProperties
env 公开Spring的属性ConfigurableEnvironment
flyway 显示已应用的所有Flyway数据库迁移。
health 显示应用程序运行状况信息。
httptrace 显示HTTP跟踪信息(默认情况下,最近100个HTTP请求-响应交换)。
info 显示任意应用程序信息。
integrationgraph 显示Spring Integration图。
loggers 显示和修改应用程序中记录器的配置。
liquibase 显示已应用的所有Liquibase数据库迁移。
metrics 显示当前应用程序的“指标”信息。
mappings 显示所有@RequestMapping路径的整理列表。
scheduledtasks 显示应用程序中的计划任务。
sessions 允许从Spring Session支持的会话存储中检索和删除用户会话。使用Spring Session对反应式Web应用程序的支持时不可用。
shutdown 使应用程序正常关闭。 没有
threaddump 执行线程转储。

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

ID 描述 默认启用
heapdump 返回hprof堆转储文件。
jolokia 通过HTTP公开JMX bean(当Jolokia在类路径上时,不适用于WebFlux)。
logfile 返回日志文件的内容(如果已设置logging.file.namelogging.file.path属性)。支持使用HTTP Range标头来检索部分日志文件的内容。
prometheus 以Prometheus服务器可以抓取的格式公开指标。

启动端点

默认情况下,除了shutdown 之外都是开启状态。如果想配置端点状态,可以根management.endpoint.<id>.enabled进行配置端点状态,例如:

#启动shudtown端点
management.endpoint.shutdown.enabled=true

当然也可以默认吧所有端点关闭,然后开启自己想开启的端点。

#修改所有端点开启状态
management.endpoints.enabled-by-default=false
#打开info端点
management.endpoint.info.enabled=true

注意:即使在这里启动了端点,也无法通过web进行访问,需要端点暴露

暴露端点

由于端点可能包含敏感信息,因此应谨慎考虑何时公开它们。下表显示了内置端点的默认暴露:

ID JMX Web
auditevents 没有
beans 没有
caches 没有
conditions 没有
configprops 没有
env 没有
flyway 没有
health
heapdump N / A 没有
httptrace 没有
info
integrationgraph 没有
jolokia N / A 没有
logfile N / A 没有
loggers 没有
liquibase 没有
metrics 没有
mappings 没有
prometheus N / A 没有
scheduledtasks 没有
sessions 没有
shutdown 没有
threaddump 没有

要更改端点暴露,使用下面的特定技术includeexclude特性:

属性 默认
management.endpoints.jmx.exposure.exclude
management.endpoints.jmx.exposure.include *
management.endpoints.web.exposure.exclude
management.endpoints.web.exposure.include info, health

include属性列出了公开的端点的ID。该exclude属性列出了不应公开的端点的ID。

exclude属性优先于该include属性

例如,要通过HTTP公开除envbeans端点之外的所有内容

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

Auto-configured HealthIndicators

我们可以根据以下进行自定义配置

名称 描述
CassandraHealthIndicator 检查Cassandra数据库是否已启动。
CouchbaseHealthIndicator 检查Couchbase群集是否已启动。
DiskSpaceHealthIndicator 检查磁盘空间不足。
ElasticSearchRestHealthContributorAutoConfiguration 检查Elasticsearch集群是否已启动。
HazelcastHealthIndicator 检查Hazelcast服务器是否已启动。
InfluxDbHealthIndicator 检查InfluxDB服务器是否已启动。
InfluxDbHealthIndicator 检查InfluxDB服务器是否已启动。
JmsHealthIndicator 检查JMS代理是否启动。
MailHealthIndicator 检查邮件服务器是否已启动。
MongoHealthIndicator 检查Mongo数据库是否已启动。
PingHealthIndicator 一律以回应UP
RabbitHealthIndicator 检查Rabbit服务器是否已启动。
RabbitHealthIndicator 检查Rabbit服务器是否已启动。
RedisHealthIndicator 检查Redis服务器是否启动。
SolrHealthIndicator 检查Solr服务器是否已启动。

通过设置management.health.defaults.enabled属性来全部禁用它们

猜你喜欢

转载自blog.csdn.net/qq_30285985/article/details/101172534