Spring Boot自带监控组件—Actuator介绍

2023-05-16

文章目录

    • Actuator介绍
    • 启用与暴露的区别
    • Spring Boot集成Actuator应用监控框架
    • Actuator监控端点
      • 启用端点
      • 端点的默认暴露规则
        • 案例
      • 自定义端点

Actuator介绍

Actuator是Spring Boot提供的应用系统监控的开源框架,它是Spring Boot体系中非常重要的组件。它可以轻松实现应用程序的监控治理,支持通过众多REST接口、远程Shell和JMX收集应用的运行情况。
Actuator的核心是端点(Endpoint),它用来监视、提供应用程序的信息,Spring Boot提供的spring-boot-actuator组件中已经内置了非常多的Endpoint(health、info、beans、metrics、httptrace、shutdown等),每个端点都可以启用和禁用。
Actuator也允许我们扩展自己的端点。通过JMX或HTTP的形式暴露自定义端点,Actuator会将自定义端点的ID默认映射到一个带/actuator前缀的URL。比如,health端点默认映射到/actuator/health。这样就可以通过HTTP的形式获取自定义端点的数据。

启用与暴露的区别

  • 启用端点:会创建对应的bean并进行数据采集(但是未必会暴露)。

  • 暴露:是在启用的前提下,暴露是指对外可以访问到这些数据。

Spring Boot集成Actuator应用监控框架

在pom.xml中新增依赖:

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

spring-boot-starter-actuator除了可以监控Web系统外,还可以监控后台服务等Spring Boot应用。

修改配置文件,配置Actuator端点,例如:

# 打开所有的监控点
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

最后,启动项目并在浏览器中输入http://localhost:8080/actuator,我们可以看到返回的是Actuator提供的各种数据接口信息。

Actuator监控端点

Actuator监控分成两类:原生端点和用户自定义端点。

原生端点是Actuator组件内置的,在应用程序中提供了众多Web接口。通过它们了解应用程序运行时的内部情况,原生端点可以分成3类:

  1. 应用配置类:可以查看应用在运行期的静态信息,比如自动配置信息、加载的Spring Bean信息、YML文件配置信息、环境信息、请求映射信息
  2. 度量指标类:主要是运行期的动态信息,如堆栈、请求连接、健康状态、系统性能等。
  3. 操作控制类:主要是指shutdown,用户可以发送一个请求将应用的监控功能关闭。
ID描述默认情况下是否启用
auditevents公开当前应用程序的审核事件信息。Yes
beans显示应用程序中所有Spring bean的完整列表。Yes
caches公开可用的缓存Yes
conditions显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。Yes
configprops显示所有@ConfigurationProperties的有序列表。Yes
env公开Spring的ConfigurableEnvironment中的属性Yes
flyway显示已应用的任何Flyway数据库迁移。Yes
health显示应用健康信息。Yes
httptrace显示HTTP跟踪信息(默认情况下,最后100个HTTP请求 – 响应交换)。Yes
info显示任意应用信息。Yes
integrationgraph显示Spring集成图。Yes
loggers显示和修改应用程序中日志记录器的配置。Yes
liquibase显示已应用的任何Liquibase数据库迁移。Yes
metrics显示当前应用程序的“指标”信息。Yes
mappings显示所有@RequestMapping路径的有序列表。Yes
scheduledtasks显示应用程序中的计划任务。Yes
sessions允许从Spring Session支持的会话存储中检索和删除用户会话。 使用Spring Session对响应式Web应用程序的支持时不可用。Yes
shutdown允许应用程序正常关闭。No
threaddump执行线程转储。Yes

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

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

默认情况下,大部分的端点是开启的,如果想要关闭,则可以通过:

management.endpoints.enabled-by-default=false

启用端点

要配置端点的启用,请使用management.endpoint.xxx.enabled属性。 以下示例启用关闭端点:

management.endpoint.shutdown.enabled=true

如果您希望端点启用是选择加入而不是选择退出,请将management.endpoints.enabled-by-default属性设置为false,并使用启用了各个端点的属性重新加入。以下示例启用info端点并禁用所有其他端点:

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

端点的默认暴露规则

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

IDJMXWeb
auditeventsYesNo
beansYesNo
cachesYesNo
conditionsYesNo
configpropsYesNo
envYesNo
flywayYesNo
healthYesYes
heapdumpN/ANo
httptraceYesNo
infoYesYes
integrationgraphYesNo
jolokiaN/ANo
logfileN/ANo
loggersYesNo
liquibaseYesNo
metricsYesNo
mappingsYesNo
prometheusN/ANo
scheduledtasksYesNo
sessionsYesNo
shutdownYesNo
threaddumpYesNo

要更改公开的端点,请使用以下特定于技术的包含和排除属性:

PropertyDefault
management.endpoints.jmx.exposure.exclude
management.endpoints.jmx.exposure.include*
management.endpoints.web.exposure.exclude
management.endpoints.web.exposure.includeinfo, health

include属性列出暴露端点的IDS,exclude属性列出不应该暴露端点的IDS;exclude属性的优先级高于include属性,include和exclude属性都可以使用端点列表来配置IDS.

案例

案例1:停止公开所有在JMX上公开的端点,只公开info和health两个端点,使用如下属性:

management.endpoints.jmx.exposure.include=health,info

案例2:* 可以用来表示所有的端点,例如,通过HTTP公开所有的端点,除了env和beans端点,使用如下的属性:

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

案例3:* 在YAML中有特殊的含义,所以如果想使用include或者exclude包含所有的端点时要加上双引号,如下示例:

management:
  endpoints:
    web:
      exposure:
        include: "*"

如果您希望在暴露端点时实施您自己的策略,您可以注册一个EndpointFilter bean。

自定义端点

Spring Boot支持自定义端点,只需要在我们定义的类中使用@Endpoint、@JmxEndpoint、@WebEndpoint等注解,实现对应的方法即可定义一个Actuator中的自定义端点。
从Spring Boot 2.x版本开始,Actuator支持CRUD(增删改查)模型,而不是旧的RW(读/写)模型。我们可以按照3种策略来自定义:

  • 使用@Endpoint注解,同时支持JMX和HTTP方式。
  • 使用@JmxEndpoint注解,只支持JMX技术。
  • 使用@WebEndpoint注解,只支持HTTP。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot自带监控组件—Actuator介绍 的相关文章

随机推荐

  • spring cloud 使用Eureka server :报错 java.net.ConnectException: Connection refused: connect

    记录一个深坑的问题 xff1a 小白在学习spring cloud 教程 xff0c 因为在教程中用的配置文件是yml格式 xff0c 而我的idea默认自动生成的配置文件是properties格式 xff0c 所以踩了两个坑 xff0c
  • spring RestTemplate

    原文地址 xff1a https blog csdn net u012702547 article details 77917939 https github com lenve SimpleSpringCloud tree master
  • win10 无法打开wlan 解决方案

    win10 xff0c 遇到了无法开启移动热点的情况 xff0c 开关呈灰色状态 xff0c 而且提示 xff1a 无法设置移动热点 请打开WLAN 解决办法 xff1a 1 设备管理器 网络适配器 确保无线网卡在启动状态 xff0c 能够
  • Jetson TK1学习(一) 刷机

    前言 最早接触TK1是在2015年7月份的DJI ROBOMASTER夏令营里 xff0c 当时DJI推出了用于无人机平台的skymind嵌入式计算机 xff0c 也就是后来的 妙算 34 当时我并没有关注这款计算机的架构 只是当时同组的算
  • Jetson TK1学习(二)安装无线网卡

    上一篇文章讲了Jetson TK1的刷机方法 由于TK1自身没有无线网卡 xff0c 单位里面也没有有线的路由器 xff0c 所以需要在TK1上安装个无线网卡 TK1上有PCIE的接口 xff0c 目前对Intel 7260AC这款无线网卡
  • 教你创建Custom Device自定义设备

    1 问题描述 在半物理仿真测试中需要调用仿真机上的硬件设备实现仿真设备间数据通信 模拟和数字信号的采集或驱动等功能 在Veristand实时测试配置环境中可以通过创建Custom Device自定义设备实现PXI机箱 xff08 仿真机 x
  • 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)

    参考博客 xff1a Unicode与UTF 8互转 C语言实现 xff1a http blog csdn net tge7618291 article details 7599902 汉字 Unicode 编码范围 xff1a http
  • Visual Stdio实现云+端跨平台开发优势,Windows Azure实现移动跨平台

    Visual Stdio实现云 43 端跨平台开发优势 xff08 csdn会议总结 xff09 现代企业的架构平台 xff0c 目前移动开发的平台有哪些 xff1a 如何实现跨平台 xff1a Windows Azure 云端服务在 上海
  • C++类库

    如果你有一定的C基础可能学起来比较容易些 但是学习C 43 43 的过程中又要尽量避免去使用一些C中的思想 平时还要多看一些高手写的代码 遇到问题多多思考 怎样才能把问题抽象化 以使自己头脑中有类的概念 最后别忘了经常上机自己调调程序 这是
  • Mac上安装node和npm

    通过安装包来安装 第 1 步 xff1a 下载适用于 macOS 的 NPM 包 去Node JS官网下载Mac操作系统的npm包 您可以单击此处打开下载页面并为您的系统选择合适的文件 第 2 步 xff1a 按照指南运行包管理器 打开下载
  • Java Maven项目问题整理

    文章目录 src main java文件夹src test java文件夹src main java和src test java文件夹区别读取maven项目中src test resources里的配置文件maven 项目导入本地jar包
  • Lombok使用总结

    文章目录 介绍Lombok原理常用注解 64 Data 64 Getter 64 Setter 64 ToString 64 EqualsAndHashCode 64 NoArgsConstructor 64 AllArgsConstruc
  • 解决:PDFBox报的java.io.IOException: Missing root object specification in trailer

    文章目录 问题描述原因分析解决方案 问题描述 使用pdfbox类库操作pdf文件时 xff0c 遇到下面的报错信息 xff1a java io IOException Missing root object specification in
  • KEIL每次都要编译全部文件并且每个文件编译三次

    SYD8801是一款低功耗高性能蓝牙低功耗SOC xff0c 集成了高性能2 4GHz射频收发机 32位ARM Cortex M0处理器 128kB Flash存储器 以及丰富的数字接口 SYD8801片上集成了Balun无需阻抗匹配网络
  • Mac上Golang语言环境搭建

    文章目录 官网其他参考安装golang源码安装安装包安装使用homebrew安装 配置GOROOTGOPATHGOPROXYGOPRIVATEGONOSUMDB 安装测试 官网 目前无法在家里的直接访问golang org网站 xff1a
  • [已解决] Mac上docker安装prometheus报错:Are you trying to mount a directory onto a file (or vice-versa)?

    文章目录 项目场景问题描述原因分析解决方案 项目场景 Mac上通过docker安装prometheus 问题描述 docker run时 xff0c 会出现下面的报错 xff0c 导致容器启动失败 xff1a docker Error re
  • Mac上安装Node Exporter

    文章目录 安装Node Exporter方法一 xff1a 手动安装方法二 xff1a docker安装 运行测试 node exporter 可以采集机器 xff08 物理机 虚拟机 云主机等 xff09 的监控指标数据 xff0c 能够
  • Docker安装Grafana

    文章目录 Grafana介绍拉取镜像准备相关挂载目录及文件启动容器访问测试添加 Prometheus 数据源常见问题 看板配置 Grafana介绍 上篇博客介绍了prometheus的安装 xff1a Docker部署Prometheus
  • Springboot应用接入Prometheus监控

    文章目录 接入介绍操作步骤修改应用的依赖及配置步骤1 xff1a 修改 pom 依赖步骤2 xff1a 修改配置 本地验证prometheus配置 接入介绍 在使用 Spring Boot 作为开发框架时 xff0c 需要监控应用的状态 x
  • Spring Boot自带监控组件—Actuator介绍

    文章目录 Actuator介绍启用与暴露的区别Spring Boot集成Actuator应用监控框架Actuator监控端点启用端点端点的默认暴露规则案例 自定义端点 Actuator介绍 Actuator是Spring Boot提供的应用