Spring Boot Actuator使用

Spring Boot Actuator提供一系列HTTP端点来暴露项目信息,用来监控和管理项目。在Maven中,可以添加以下依赖:

<!-- Spring boot starter: actuator -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

[注] 在某些包中已经自动绑定了Spring Boot Actuator包,比如一些Cloud包spring-cloud-starter-security,spring-cloud-starter-netflix-eureka-server等,这时候不用再重复添加该依赖。

Actuator提供了以下端点,默认除了/shutdown都是Enabled。使用时需要加/actuator前缀,如http://localhost:8080/my-app/actuator/health。

ID Description Enabled
auditevents 显示当前应用程序的审计事件信息 Yes
beans 显示应用上下文中创建的所有Bean Yes
caches 获取缓存信息 Yes
conditions

显示配置类和自动配置类(configuration and auto-configuration classes)

的状态及它们被应用或未被应用的原因

Yes
configprops

该端点用来获取应用中配置的属性信息报告

所有@ConfigurationProperties的集合列表

Yes
env

获取应用所有可用的环境属性报告。包括:

环境变量、JVM属性、应用的配置配置、命令行中的参数

Yes
flyway 显示数据库迁移路径(如果有) Yes
health 显示应用的健康信息 Yes
httptrace

返回基本的HTTP跟踪信息。

(默认最多100 HTTP request-response exchanges).

Yes
info

返回一些应用自定义的信息,我们可以在application.properties

配置文件中通过info前缀来设置这些属性:info.app.name=spring-boot-hello

Yes
integrationgraph Shows the Spring Integration graph. Yes
loggers Shows and modifies the configuration of loggers in the application. Yes
liquibase Shows any Liquibase database migrations that have been applied. Yes
metrics 返回当前应用的各类重要度量指标,比如:内存信息、线程信息、垃圾回收信息等 Yes
mappings

返回所有Spring MVC的控制器映射关系报告

所有@RequestMapping路径的集合列表

Yes
scheduledtasks 显示应用程序中的计划任务 Yes
sessions

允许从Spring会话支持的会话存储中检索和删除(retrieval and deletion)

用户会话。使用Spring Session对反应性Web应用程序的支持时不可用  

Yes
shutdown 允许应用以优雅的方式关闭(默认情况下不启用) No
threaddump 执行一个线程dump

Yes

如果使用web应用(Spring MVC, Spring WebFlux, 或者 Jersey),还可以使用以下端点:

ID Description Enabled by default
heapdump 返回一个GZip压缩的hprof堆dump文件 Yes
jolokia 通过HTTP暴露JMX beans(当Jolokia在类路径上时,WebFlux不可用) Yes
logfile

返回日志文件内容(如果设置了logging.file或logging.path属性的话),

支持使用HTTP Range头接收日志文件内容的部分信息                         

Yes
prometheus       以可以被Prometheus服务器抓取的格式显示metrics信息 Yes

如果要启用/禁用某个端点,可以使用management.endpoint.<id>.enabled属性:

management:
  endpoint:
    shutdown:
      enabled: true

另外可以通过management.endpoints.enabled-by-default来修改全局端口默认配置,比如下面禁用所有端点只启用info端点:

management:
  endpoints:
    enabled-by-default: false
  endpoint:
    info:
      enabled: true

上面是启用/禁用(enable)某个端点,如果使某个端点暴露(exposure)出来,还需要再配置,默认情况下所有端点在JMX下是全部公开的,在Web下只公开/health和/info两个端点。下面是默认配置:

Property Default
management.endpoints.jmx.exposure.exclude          - 
management.endpoints.jmx.exposure.include  '*'
management.endpoints.web.exposure.exclude  -                  
management.endpoints.web.exposure.include    info, health                                                             

下面的例子是Web下公开所有端点:

management:
  endpoints:
    web:
      exposure:
        include: '*'

猜你喜欢

转载自www.cnblogs.com/storml/p/10913142.html