13.Spring boot中使用Actuator 监控

13.Spring boot中使用Actuator 监控

Spring Boot Actuator 是 Spring Boot 提供的一个强大的监控和管理工具,它通过暴露各种端点(Endpoints)来提供应用程序的运行时信息。这些端点可以帮助开发者和管理员监控应用程序的健康状况、性能指标、环境信息等。

在生产环境中,建议仅启用必要的端点,并启用安全限制以防止未经授权的访问。
敏感端点:某些端点(如 /actuator/env、/actuator/loggers)可能包含敏感信息,应谨慎处理。
建议结合 Spring Security 对 Actuator 端点进行访问控制。

  1. 快速集成 Spring Boot Actuator。
  2. 自定义健康检查和端点。

一、项目初始化

1. 项目结构
spring-boot-actuator-demo/
├── src/
│   ├── main/
│   │   ├── java/com/example/demo/
│   │   │   ├── DemoApplication.java          # 固定名称:主启动类
│   │   │   ├── actuator/                     # 自定义端点目录(非固定,可选)
│   │   │   │   └── CustomEndpoint.java       # 自定义端点类(非固定)
│   │   │   ├── health/                       # 自定义健康检查目录(非固定,可选)
│   │   │   │   └── CustomHealthIndicator.java # 自定义健康检查类(非固定)
│   │   │   └── config/                       # 配置类目录(非固定,可选)
│   │   │       └── SecurityConfig.java       # Spring Security 配置类(非固定)
│   │   └── resources/
│   │       ├── application.yml               # 固定名称:主配置文件
│   │       └── application-prod.yml          # 非固定名称:生产环境配置(可选)
└── pom.xml                                   # 固定名称:Maven 依赖管理

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>spring-boot-actuator-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties><!-- Spring Boot 父级依赖(固定名称,必须) --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.5</version> <!-- 使用最新稳定版本 --><relativePath/> <!-- 从仓库查找,不继承本地路径 --></parent><dependencies><!-- Spring Boot Web 依赖(非固定名称,按需添加) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Boot Actuator 依赖(非固定名称,按需添加) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies><!-- 构建配置(固定名称,通常无需修改) --><build><plugins><!-- Spring Boot Maven 插件(固定名称,必须) --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

创建主启动类 DemoApplication.java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、分步实现

第一步:基础 Actuator 集成(无需代码)

目标:仅通过配置文件启用 Actuator,并验证默认端点。

  1. 修改 pom.xml(固定名称)
    确保已添加 spring-boot-starter-actuator 依赖:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. 配置 application.yml(固定名称)
    启用默认端点(如 healthinfo):

    server:port: 8080management:endpoints:web:exposure:include: "health,info"  # 仅暴露 health 和 info 端点
    
  3. 验证

    • 启动应用,访问:
      • http://localhost:8080/actuator/health(返回 {"status":"UP"}
      • http://localhost:8080/actuator/info(默认返回空对象 {}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
暴露所有端点
在这里插入图片描述
在这里插入图片描述

第二步:自定义健康检查(需代码)

目标:添加一个自定义健康检查逻辑(例如检查外部服务状态)。

  1. 更新 application.yml(固定名称)
    配置健康检查显示详细信息:

    management:endpoint:health:show-details: always  # 显示健康检查的详细信息
    

    在这里插入图片描述
    在这里插入图片描述

  2. 创建 CustomHealthIndicator.java(非固定名称,但需遵循包路径)
    com.example.demo.health 包下创建类(包路径可自定义,但需与代码逻辑一致):

    import org.springframework.boot.actuate.health.Health;
    import org.springframework.boot.actuate.health.HealthIndicator;
    import org.springframework.stereotype.Component;@Component
    public class CustomHealthIndicator implements HealthIndicator {@Overridepublic Health health() {boolean isHealthy = checkExternalService(); // 模拟检查逻辑if (isHealthy) {return Health.up().withDetail("status", "External service is healthy,健康的").build();} else {return Health.down().withDetail("error", "External service is unavailable").build();}}private boolean checkExternalService() {// 实际场景中替换为真实检查逻辑(如 HTTP 请求、数据库连接等)return true; // 示例中始终返回 true}
    }
    

在这里插入图片描述

  1. 验证
    • 访问 http://localhost:8080/actuator/health,返回结果将包含自定义健康检查的详细信息。

在这里插入图片描述

第三步:自定义端点(需代码)

目标:添加一个自定义 Actuator 端点,支持 GET、POST 和 DELETE 操作。

  1. 创建 CustomEndpoint.java(非固定名称,但需遵循包路径)
    com.example.demo.actuator 包下创建类(包路径可自定义):

    import org.springframework.boot.actuate.endpoint.annotation.*;
    import org.springframework.stereotype.Component;
    import java.util.Collections;
    import java.util.Map;@Component
    @Endpoint(id = "custom")  // 端点 ID,访问路径为 /actuator/custom
    public class CustomEndpoint {// 只读端点(GET 请求)@ReadOperationpublic Map<String, String> customData() {return Collections.singletonMap("message", "Hello from Custom Actuator Endpoint!");}
    }
    

    在这里插入图片描述
    在这里插入图片描述

  2. 更新 application.yml(固定名称)
    暴露自定义端点:

    management:endpoints:web:exposure:include: "health,info,custom"  # 添加 custom 端点
    

在这里插入图片描述

  1. 验证
    • GET 请求:http://localhost:8080/actuator/custom
      返回 {"message":"Hello from Custom Actuator Endpoint!"}

在这里插入图片描述

三、核心配置文件说明

文件路径名称是否固定作用说明
pom.xml固定Maven 依赖管理文件,定义项目依赖。
application.yml固定主配置文件,定义 Actuator 端点暴露、安全配置等。
application-prod.yml非固定生产环境配置(可选),通过 spring.profiles.active=prod 激活。
CustomHealthIndicator.java非固定自定义健康检查逻辑,覆盖默认健康检查行为。
CustomEndpoint.java非固定自定义 Actuator 端点,支持 RESTful 操作(GET/POST/DELETE)。

四、生产环境建议

  1. 限制端点暴露
    仅暴露必要端点(如 health, info, metrics):
    management:endpoints:web:exposure:include: "health,info,metrics"
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81999.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python+Scrapy跨境电商爬虫实战:从亚马逊/沃尔玛数据采集到反爬攻克(附Pangolin API高效方案)

从零实战到反爬攻克&#xff0c;揭秘跨境数据抓取全流程与Pangolin Scrape API终极方案 在当今数据驱动的跨境电商时代&#xff0c;谁掌握了优质的市场数据&#xff0c;谁就掌握了成功的关键。随着全球电商市场规模持续扩大&#xff08;据Statista最新报告显示&#xff0c;2025…

0基础学习鸿蒙开发-HarmonyOS4

一、初识 1. 开发工具 官网 开发-HarmonyOS NEXT鸿蒙应用开发平台-华为开发者联盟 2. ArkTS 二、TypeScript 基本语法 1.变量声明 2. 条件控制 注意 在TypeScrips中 空字符串数字0、null、undefined 都坡认为是false 其它值则为true if (num) {// num 非空执行 } 3. 循环迭…

深度学习中常用的符号表达式

在论文写作过程中&#xff0c;常常涉及到一些关键的符号的表达&#xff0c;为了更加规范常用的一些符号表达&#xff0c;现将其总结如下&#xff08;该文件会持续性更新&#xff09;&#xff1a; 数字 x x x : 标量 x \mathbf{x} x : 向量 X \mathbf{X} X : 矩阵 X \mathsf{X}…

react naive 网络框架源码解析

本文取 react native 两个区别很大的版本做分析&#xff08;0.76.5、0.53.3&#xff09; 一、0.76.5 版fetch 全流程排查 1、JS 端的实现 随手写一个fetch&#xff0c;点开。 我们这里常用的还是手机端&#xff0c;因此选择 react-native&#xff0c;react-native-windows …

OpenCV 图形API(81)图像与通道拼接函数-----透视变换函数warpPerspective()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 对图像应用透视变换。 函数 warpPerspective 使用指定的矩阵对源图像进行变换&#xff1a; dst ( x , y ) src ( M 11 x M 12 y M 13 M 31 x…

深度学习在油气地震资料反卷积中的应用

深度学习在油气地震资料反卷积中的应用 基本原理 在油气地震勘探中&#xff0c;反卷积(Deconvolution)是一种重要的信号处理技术&#xff0c;用于提高地震资料的分辨率。传统方法(如维纳滤波、预测反卷积等)存在对噪声敏感、假设条件严格等局限。深度学习方法通过数据驱动的方…

Java开发者面试实录:微服务架构与Spring Cloud的应用

面试场景 面试官: 请介绍一下你的基本情况。 程序员: 大家好&#xff0c;我叫张小明&#xff0c;今年27岁&#xff0c;硕士学历&#xff0c;拥有5年的Java后端开发经验。主要负责基于Spring Boot开发企业级应用&#xff0c;以及微服务架构的设计和实现。 面试官: 好的&#…

​Spring + Shiro 整合的核心要点及详细实现说明

在 Spring 项目中集成 Apache Shiro 可以实现轻量级的安全控制&#xff08;认证、授权、会话管理等&#xff09;。以下是 ​Spring Shiro 整合的核心要点及详细实现说明&#xff1a; 一、Spring 与 Shiro 整合的核心组件 ​组件​​作用​ShiroFilterFactoryBean创建 Shiro 过…

网络编程核心技术解析:从Socket基础到实战开发

网络编程核心技术解析&#xff1a;从Socket基础到实战开发 一、Socket编程核心基础 1. 主机字节序与网络字节序&#xff1a;数据传输的统一语言 在计算机系统中&#xff0c;不同架构对多字节数据的存储顺序存在差异&#xff0c;而网络通信需要统一的字节序标准&#xff0c;这…

SQLark可以支持PostgreSQL了,有哪些新功能?

SQLark&#xff08;百灵连接&#xff09;是一款国产的数据库开发和管理工具&#xff0c;用于快速查询、创建和管理不同类型的数据库系统&#xff0c;支持达梦、Oracle 和 MySQL 数据库。 最新发布的 SQLark V3.4 版本新增了对 PostgreSQL 数据库的支持。我试用了一下&#xff…

【全面解析】Poco C++ Libraries 模块详解与使用指南

Poco&#xff08;The Portable Components&#xff09; 是一套现代 C 的跨平台开发库&#xff0c;广泛应用于嵌入式系统、服务端程序、工业控制和 AI 后端服务等领域。其设计理念类似于 Java 的标准库&#xff0c;为 C 提供“标准的非标准功能”。 本篇文章将带你全面了解 Poco…

Vue+tdesign t-input-number 设置长度和显示X号

一、需求 Vuetdesign t-input-number 想要设置input的maxlen和显示X号 二、实现 t-input&#xff0c;可以直接使用maxlength和clearable属性 <t-input v-model"value" clearable maxlength10 placeholder"请输入" clear"onClear" blur&q…

(Go Gin)Gin学习笔记(二):路由配置、基本路由、表单参数、上传单个文件、上传多个文件、浅扒路由原理

1. 路由 gin 框架中采用的路优酷是基于httprouter做的 HttpRouter 是一个高性能的 HTTP 请求路由器&#xff0c;适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用&#xff0c;特别适合需要高性能和简单路由的应用场景。 主要特点 显式匹配&#xff1a;与其他路由…

Linux下的好玩的命令

在 CentOS 下&#xff0c;有许多有趣且实用的 Linux 命令&#xff0c;可以帮助你更好地了解系统、提升效率或进行娱乐。以下是一些好玩的 Linux 命令及其说明&#xff1a; 1. cowsay 和 cowthink 功能&#xff1a;让一只牛&#xff08;或其他动物&#xff09;说出你想说的话。…

OpenharmonyOS+RK3568,【编译烧录】

文章目录 1. 摘要 ✨2. 代码下载 &#x1f4e9;3. 编译 &#x1f5a5;️4. 修改&适配 ✂️4.1 编译框架基本概念4.2 vendor & device 目录4.3 内核编译4.3.1 如何修改、适配自己的开发板&#xff1f; 4.4 修改外设驱动 5. 烧录&验证 &#x1f4cb;参考 1. 摘要 ✨ …

深度学习模型优化:如何让数据科学更智能?

深度学习模型优化:如何让数据科学更智能? 一、引言:为什么优化深度学习模型如此重要? 深度学习的应用已经渗透到数据科学的各个领域,从图像识别到自然语言处理,从推荐系统到金融风控,每一个智能模型都依赖于数据驱动的训练。然而,一个模型的性能不仅仅取决于其架构,…

学习Python的第二天之网络爬虫

30岁程序员学习Python的第二天之网络爬虫的信息提取 BeautifulSoup库 地址&#xff1a;https://beautifulsoup.readthedocs.io/zh-cn/v4.4.0/ 1、BeautifulSoup4安装 在windows系统下通过管理员权限运行cmd窗口 运行pip install beautifulsoup4 测试实例 import requests…

n8n 键盘快捷键和控制键

n8n 键盘快捷键和控制键 工作流控制键画布操作移动画布画布缩放画布上的节点操作选中一个或多个节点时的快捷键 节点面板操作节点面板分类操作 节点内部操作 n8n 为部分操作提供了键盘快捷键。 工作流控制键 Ctrl Alt n&#xff1a;创建新工作流Ctrl o&#xff1a;打开工作…

keil+vscode+腾讯ai助手

嵌入式软件开发 这个是之前一直想写的开发方式&#xff0c;不过上份工作一直在忙&#xff0c;没有抽出时间花在上面&#xff0c;现在空下来好好写一写吧&#xff01;标题软件安装 关于VSCode以及Keil的安装可以在以下链接中点击浏览 VSCode安装 Keil5安装 CubeMx安装 插件下…

Unity教程(二十三)技能系统 投剑技能(上)基础实现

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…