当前位置: 首页 > article >正文

Spring Boot教程之八:Spring Boot执行器(Actuator)

 Spring Boot 执行器

开发和管理应用程序是应用程序生命周期中最重要的两个方面。了解应用程序底层发生的事情非常重要。此外,当我们将应用程序投入生产时,管理它逐渐变得至关重要。因此,始终建议在开发阶段和生产阶段都监控应用程序。 

对于相同的用例,Spring Boot 提供了一个执行器依赖项,可用于监控和管理您的 Spring Boot 应用程序,通过 /actuator 和 /actuator/health 端点您可以达到监控的目的。

  • 借助Spring Boot,我们可以实现上述目标。
  • Spring Boot 的“Actuator”依赖项用于监控和管理 Spring Web 应用程序。
  • 我们可以借助 HTTP 端点或 JMX 来使用它来监控和管理应用程序。

弹簧执行器的工作原理

弹簧执行器的工作原理

执行器应用优势

  1. 它提高了客户满意度。
  2. 它减少了停机时间。
  3. 它提高了生产力。
  4. 它改善了网络安全管理。
  5. 它提高了转化率。

1. 执行器配置

为了使用 Hibernate 验证器,您的 Spring Boot 项目中必须进行这些配置。

1.1 执行器的依赖关系

要使用“Actuator”,请在应用程序的项目设置文件中添加以下依赖项。

Maven 和 Gradle 构建系统的依赖配置。

Maven -> pom.xml

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

Gradle

-> build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
}

1.2 Actuator 的应用程序属性配置

Actuator 还有更多可用的配置,下面列出其中一些:

  • 您还可以通过在 application.properties 文件中添加以下内容来更改默认端点。
management.endpoints.web.base-path=/details
  • 包括 ID/端点

默认情况下,除“health”外,所有 ID 均设置为 false。要包含 ID,请在 application.properties 文件中使用以下属性。

management.endpoint.<id>.enabled

Example -> management.endpoint.metrics.enabled=true
  • 列出您想要包含的所有 ID,并以逗号分隔。
management.endpoints.web.exposure.include=metrics,info
  • 仅包括指标和信息 ID,并排除所有其他信息(也包括‘Health’)。

要添加/包含有关应用程序的所有 ID 信息,您可以在 application.properties 文件中添加以下内容 -

management.endpoints.web.exposure.include=*
  • 排除 ID/端点

要排除 ID 或端点,请使用以下属性并在 application.properties 文件中列出用逗号分隔的相应 ID。

management.endpoints.web.exposure.exclude

Example -> management.endpoints.web.exposure.exclude=info

项目的文件夹结构

下图展示了你的项目应该是什么样子

项目结构 - Maven

项目结构——Maven

2. 项目实施

2.1 实体

UserEntity.java(代表模型数据的实体类)解释如下:

  • 此类充当简单的 Java bean,其属性由 REST API 的 get() 方法以 JSON 响应形式返回。
  • 'Lombok' 库用于在运行时使用 ' @Data ' 注释自动生成 GETTER/SETTER 方法。
  • @RequiredArgsConstructor ' 注释用于生成零参数构造函数,如果存在 final 或 ' @NonNull'字段,则创建相应的参数构造函数。
  • 要在您的应用程序中添加“ Lombok ”库,请在应用程序的项目构建中添加以下依赖项。
  • 使用' @Component '注释以便该bean自动在Spring的应用程序上下文中注册。
  • Java

 package gfg;

import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
 
@Component
@Data
@RequiredArgsConstructor
public class UserEntity {
    String id = "1";
    String name = "Darshan.G.Pawar";
    String userName = "@drash";
    String email = "drash@geek";
    String pincode = "422-009";
}

2.2 控制器

RESTfulController.java(REST API 控制器),用于定义 API 和测试程序。

该控制器的 get() 方法使用 UserEntity bean 返回 JSON 响应。UserEntiy bean 通过在 Spring 的应用程序上下文中注册的“ @Autowired ”注释进行外包。

  • Java
package gfg;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/get")
public class RESTfulController {
 
    @Autowired
    UserEntity entity;
   
    @GetMapping("/data")
      public UserEntity getEntity(){
        return entity;
    }
}

3.测试执行器 API

3.1 控制器 API

这里使用 JSON Formatter Chrome 扩展程序自动解析 JSON 主体。此外,它还需要与“Actuator”配合使用。

REST API 返回的 JSON 响应

REST API 返回的 JSON 响应

3.2 使用 Spring Boot Actuator API

要访问“执行器”服务,您必须使用 HTTP 端点,因为它变得可靠。

3.2.1 /actuator

很简单,只需点击默认端点“/actuator”,确保您的应用程序正在运行。

例子:

您还可以通过在 application.properties 文件中添加以下内容来更改默认端点。

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

3.2.2 /actuator/health

您可以点击上述链接查看相关信息。此外,您还可以激活其他 Actuator ID,并在“/actuator”后使用它们来查看更多信息。例如,“health”ID 默认已激活。因此,您可以点击图像中的链接或直接使用“http://localhost:8080/actuator/health”。

应用程序的健康状况

应用程序的健康状况

“UP” 表示应用程序的健康状况良好。一共有 25 个 ID,其中最常用的列在这里 –

ID

描述         

beans显示应用程序中所有 Spring bean 的完整列表。
caches 公开可用的缓存。
conditions显示对配置和自动配置类进行评估的条件以及它们匹配或不匹配的原因。
health显示应用程序健康信息。
httptrace显示 HTTP 跟踪信息(默认情况下,显示最后 100 个 HTTP 请求-响应交换)。需要 HttpTraceRepository bean。
loggers显示和修改应用程序中记录器的配置。
mappings显示所有@RequestMapping路径的整理列表。
sessions允许从 Spring Session 支持的会话存储中检索和删除用户会话。需要使用 Spring Session 的基于 servlet 的 Web 应用程序。
threaddump执行线程转储。
3.2.3 /actuator/beans

访问上述项目的“beans”ID

访问上述项目的“beans”ID

3.2.4 /actuator/mappings

访问上述项目的“映射”ID

访问上述项目的“映射”ID

包括 ID/端点

默认情况下,除“health”外,所有 ID 均设置为 false。要包含 ID,请在 application.properties 文件中使用以下属性。

management.endpoint.<id>.enabled

Example -> management.endpoint.metrics.enabled=true

或者,您可以列出所有想要包含的 ID,并以逗号分隔。

management.endpoints.web.exposure.include=metrics,info

这将仅包括指标和信息 ID,并将排除所有其他信息(“健康”也是如此)。要添加/包含有关应用程序的所有 ID 信息,您可以在 application.properties 文件中添加以下内容 -

management.endpoints.web.exposure.include=*

输出:

所有 ID 或端点现已启用

所有 ID 或端点现已启用

排除 ID/端点

要排除 ID 或端点,请使用以下属性并在 application.properties 文件中列出用逗号分隔的相应 ID。

management.endpoints.web.exposure.exclude

Example -> management.endpoints.web.exposure.exclude=info

使用“*”代替属性中的 ID 以排除所有 ID 或端点。

笔记: 

  1. 在设置 management.endpoints.web.exposure.include 之前,请确保暴露的执行器不包含敏感信息。
  2. 应将它们置于防火墙后面以确保安全,或通过 Spring Security 之类的工具确保安全。  


http://www.kler.cn/a/408796.html

相关文章:

  • mybatis学习(三)
  • 测试实项中的偶必现难测bug之模糊匹配逻辑
  • 【Github】如何使用Git将本地项目上传到Github
  • 【layui】table的switch、edit修改
  • 深入理解索引(一)
  • 2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略 完整参考论文(1)
  • NoteExpress导入知网论文无法智能更新题录的处理方法
  • 修改docker0默认IP地址
  • 字节青训营开课啦
  • 华为昇腾 acl_pytorch
  • js+jqeury纯前端实现像素鸟小游戏
  • 基于卡尔曼滤波器的 PID 控制
  • matlab蜗轮蜗杆设计优化问题
  • Docker 容器的初始化设置
  • 抓包工具Wireshark
  • PL/I语言的起源?Objective C语言起源哪里?JavaScript的起源?Java的起源?B语言的起源?C++语言的起源?C#的起源?
  • 麦肯锡报告 | 科技落地的真谛:超越技术本身的价值创造
  • ue5第三人称闯关游戏学习(一)
  • Axios案例练习
  • 智能锁项目
  • 【阵列信号处理】相干信号和非相干信号生成
  • 单片机系统的性能指标有哪些?
  • 前端三剑客(二):CSS
  • 【GPT】睡觉时,大脑在做什么
  • SCAU软件体系结构实验四 组合模式
  • (四)Spring Boot学习——整合修改使用druid连接池