优秀的编程知识分享平台

网站首页 > 技术文章 正文

SpringBoot - Actuator应用监控(一)

nanyue 2024-09-05 18:06:34 技术文章 5 ℃

当一个SpringBoot项目在运行的时候,我们可能需要对这个项目进行实时监控,从而得知项目的运行情况。

SpringBoot提供了actuator获取程序实时运行数据,开发者可以使用HTTP或JMX管理和监控应用程序。其中包括应用程序的健康状态、应用信息和内存使用状况。

开启端点

1、在工程中引用依赖 spring-boot-starter-actuato

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

2、默认端点介绍

我们可以使用执行器(actuator)中的端点(EndPints)对应用进行监控或者应用进行交互,SpringBoot默认包含以下端点:

端点

端点详细描述

是否默认开启

auditevents

显示当前应用程序的审计事件信息

YES

beans

显示应用Spring Beans的完整列表,即获取应用上下文中创建的所有的Bean

YES

caches

显示可用缓存信息

YES

conditions

显示自动配置类的状态及应用信息

YES

configprops

显示所有@ConfigurationProperties列表,即获取应用中配置的所有属性的信息报告

YES

env

显示ConfigurableEnvironment中的属性,它用来获取应用所有可用的环境属性报告。包括环境变量、JVM属性、应用的配置属性、命令行中 参数。

YES

flyway

显示flyway数据库迁移信息

YES

health

显示应用的健康信息(未认证是现实status,认证显示全部信息详情)

YES

loggers

展示并修改应用的日志配置

YES

info

显示任意的应用信息(在资源文件写info.xxx文件即可)

YES

liquibase

展示Liquibase数据库迁移

YES

metrics

展示当前应用的metrics信息,返回当前应用端点各类重要的度量指标,比如内存信息、线程信息、垃圾回收信息等

YES

mappings

显示所有@RequestMapping路径集列表,即返回所有Spring MVC控制器映射关系报告

YES

scheduledtasks

显示应用中的计划任务

YES

sessions

允许Spring会话支持的会话存储中检索和删除用户会话

YES

shutdown

允许以优雅的方式关闭(默认情况下不开启)

NO

threaddump

执行一个线程dump

YES

httptrace

显示HTTP跟踪信息(默认显示最后100个HTTP

请求-相应交换)


3、如果是WEB应用,还有以下端点:

端点

端点描述

是否默认开启

heapdump

返回一个GZIP压缩的hprof堆转储文件

YES

jolokia

展示通过HTTP暴露的JMX beans

YES

logfile

返回日志文件

YES

prometheus

展示一个可以被Prometheus服务抓取的metrics数据

YES




开启、关闭端点

1、其中shutdown端点默认未开启,如果要开启,在工程下application.properties中配置开启

management:
  endpoint:
    shutdown:
      enabled: true

2、如果不想暴露那么多端点,可以关闭默认的配置,然后手动指定需要开启哪些端点。如下关闭所有端点,只开启info端点:

management:
  endpoints:
    enabled-by-default: false # 关闭所有端点
  endpoint:
    info:
      enabled: true # 开启info端点

暴露端点

1、端点暴露情况(默认)

有些端点包含敏感信息,所以开启和暴露是两回事,下面是默认暴露情况:

端点

JMX

WEB

auditevents

YES

NO

beans

YES

NO

caches

YES

NO

conditions

YES

NO

configprops

YES

NO

env

YES

NO

flyway

YES

NO

health

YES

YES

heapdump

N/A

NO

httptrace

YES

NO

info

YES

YES

integrationgraph

YES

NO

jolokia

N/A

NO

logfile

N/A

NO

loggers

YES

NO

liquibase

YES

NO

metrics

YES

NO

mappings

YES

NO

prometheus

N/A

NO

scheduledtasks

YES

NO

sessions

YES

NO

shutdown

YES

NO

threaddump

YES

NO

在WEB应用中,默认只有health和info两个端点暴露,在项目中,只有该两个端点可以访问。

自定义暴露端点

1、我们可以在application.yml中自定义暴露哪些端点,例如暴露mapping和metrics端点,添加以下配置:

management:
  endpoints:
    web:
      exposure:
        include: mappings,metrics

结果如下:


2、暴露所有端点如下配置

management:
  endpoints:
    web:
      exposure:
        include: '*'
最近发表
标签列表