spring boot Actuator 使用教程

本文基于spring boot 2.2.0 release版本。

SpringBoot提供了生产级的监控功能Actuator,可以对程序内部运行情况进行监控,比如线程信息,bean信息,配置,内存使用情况,健康状况等。Actuator的监控结果可以通过HTTP、远程shell和JMX获得,一般我们直接通过HTTP直接访问。在Actuator中,每个监控功能称为端点(endpoint)。
本文接下来介绍如何在SpringBoot中启用Actuator,以及如何配置Actuator。

文章目录

  • 一、使用HTTP访问Actuator
  • 二、Actuator提供了哪些监控功能
  • 三、如何配置Actuator

一、使用HTTP访问Actuator

启用Actuator很简单,直接在pom文件中引入如下依赖即可:

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>

然后启动程序,在浏览器中输入http://localhost:8079/actuator(我本地使用的web服务端口是8079),即可看到所有通过HTTP暴露的监控端点。
在这里插入图片描述
是不是很简单。

二、Actuator提供了哪些监控功能

为了了解应用程序运行时的内部状况,Actuator 提供了众多丰富的监控功能,随着版本的增加,可以监控的端点也在增加。

官网:https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready-endpoints 展示了所有的端点,并对每个端点的功能进行了说明,在Exposing Endpoints小节里面还介绍了JMX和WEB默认可以访问的端点有哪些。web默认可以访问health和info。

这些端点可以分为三大类:配置端点、度量端点和其它端点,完整的端点功能介绍如下表。

序号 端点 功能
1 /configprops 展示所有@ConfigurationProperties注解信息
2 /beans 展示spring容器中所有的bean
3 /threaddump 执行一个线程dump
4 /env 展示所有的环境变量
5 /flyway 获取已应用的所有Flyway数据库迁移信息,需要一个或多个 Flyway Bean
6 /health 展示应用的健康信息
7 /info 展示应用的基本信息
8 /mappings 展示所有@RequestMapping的路径
9 /metrics 展示应用的度量信息,比如内存用量和HTTP请求计数
10 /shutdown 优雅的关闭应用程序,默认不能通过web访问
11 /httptrace 显示HTTP足迹,默认展示最近100个HTTP request/repsponse
12 /auditevents 展示当前应用的审计事件信息,这个和AuditEventRepository有关
13 /caches 展示系统中的缓存数据
14 /startup 展示由ApplicationStartup收集的启动步骤数据,这个需要配置BufferingApplicationStartup
15 /scheduledtasks 展示系统中的缓存数据
16 /sessions 允许从Spring Session支持的会话存储中检索和删除用户会话,这个需要在基于Servlet的Web应用程序中使用
17 /integrationgraph 显示 Spring Integration 图。需要依赖 spring-integration-core
18 /loggers 显示和修改应用程序中日志的配置
19 /liquibase 获取已应用的所有Liquibase数据库迁移。需要一个或多个 Liquibase Bean
20 /heapdump 返回一个heap dump文件
21 /jolokia 通过HTTP暴露JMX bean(当Jolokia在类路径上时,不适用于WebFlux)。需要依赖 jolokia-core
22 /logfile 返回日志文件的内容(如果已设置logging.file.name或logging.file.path属性)
23 /prometheus 以Prometheus服务器可以抓取的格式暴露指标,需要依赖 micrometer-registry-prometheus

其中20-23只能在web环境下使用。

三、如何配置Actuator

默认Actuator提供的端点中只有shutdown是未开启的,换句话说通过任何渠道都无法访问shutdown,如果想访问该端点,需要增加如下配置:

management.endpoint.shutdown.enabled=true

由此可以推断如果想关闭某个端点可以通过设置management.endpoint..enabled=false,比如:

management.endpoint.beans.enabled=false

我们也可以使用如下配置关闭所有的端点,然后单独打开某个端点:

management.endpoints.enabled-by-default=false
management.endpoint.info.enabled=true

开启了端点之后,还可以设置该端点是否可以通过web和JMX访问,如下:

//设置禁止通过jmx暴露该端点
management.endpoints.jmx.exposure.exclude=beans,env  
//设置允许jmx暴露所有端点
management.endpoints.jmx.exposure.include=*
//设置禁止通过web暴露该端点
management.endpoints.web.exposure.exclude=beans,env  
//设置允许通过web暴露info和health
management.endpoints.web.exposure.include=info, health

exclude表示禁止暴露端点,include表示可以暴露该端点,它们后面都可以指定一个端点列表,中间使用“,”分隔,也可以使用通配符“*”,表示所有端点。一个端点如果在includeexclude都配置,exclude优先于include,即此端点点没有暴露。

默认通过web只能访问health和info。

Actuator还提供一个参数可以修改访问端点的URL路径,比如使用如下配置:

management.endpoints.web.base-path=/manage

可以将URL路径中的/actuator修改为/manage

后续连续几篇文章会介绍Actuator部分端点的实现原理。

你可能感兴趣的:(spring,boot,spring,boot,Actuator,监控)