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很简单,直接在pom文件中引入如下依赖即可:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </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.<id>.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部分端点的实现原理。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值