SpringBoot 如何使用 Actuator 进行应用程序监控

news2025/1/13 16:48:04

SpringBoot 如何使用 Actuator 进行应用程序监控

在现代的应用程序开发中,应用程序监控是非常重要的,因为它可以帮助我们快速发现和解决问题。Spring Boot Actuator 是 Spring Boot 提供的一个强大的监控和管理工具,它可以帮助我们监控和管理我们的 Spring Boot 应用程序。在本文中,我们将介绍如何使用 Spring Boot Actuator 进行应用程序监控。

在这里插入图片描述

1. 添加 Actuator 依赖

首先,我们需要将 Spring Boot Actuator 添加到我们的项目中。可以通过 Maven 或 Gradle 管理工具将 Actuator 添加到项目中。下面是一个使用 Maven 添加 Actuator 依赖的示例:

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

2. 配置 Actuator

Spring Boot Actuator 默认情况下会在应用程序的 /actuator 路径下提供一些监控和管理端点。我们可以通过配置文件来启用或禁用这些端点。下面是一个启用所有端点的示例配置:

management.endpoints.web.exposure.include=*

3. 监控端点

一旦我们将 Actuator 添加到应用程序中并配置好端点,我们就可以开始监控我们的应用程序了。Actuator 提供了许多有用的端点,例如:

  • /actuator/health:显示应用程序的健康状况。
  • /actuator/info:显示应用程序的信息。
  • /actuator/metrics:显示应用程序的指标信息。
  • /actuator/loggers:显示应用程序的日志信息。
  • /actuator/threaddump:显示应用程序的线程信息。

我们可以通过浏览器、curl 或其他 HTTP 客户端访问这些端点。例如,我们可以使用 curl 访问 /actuator/health 端点:

$ curl http://localhost:8080/actuator/health
{"status":"UP"}

4. 自定义端点

除了默认提供的端点之外,我们还可以创建自定义端点来监控我们应用程序的特定信息。我们可以通过实现 org.springframework.boot.actuate.endpoint.annotation.Endpoint 接口来创建自定义端点。下面是一个自定义端点的示例:

@Component
@Endpoint(id = "custom")
public class CustomEndpoint {

    @ReadOperation
    public Map<String, Object> custom() {
        Map<String, Object> map = new LinkedHashMap<>();
        map.put("custom", "Hello, World!");
        return map;
    }
}

在上面的代码中,我们创建了一个 ID 为 “custom” 的自定义端点,并在 /actuator/custom 路径下暴露它。我们可以使用 @ReadOperation 注解来指定端点的方法,该方法返回一个 Map,其中包含我们要监控的信息。

5. 安全性

默认情况下,Actuator 端点是没有安全保障的。这意味着任何人都可以访问这些端点,并查看我们应用程序的敏感信息。为了保护我们的应用程序,我们可以通过配置文件或代码配置 Actuator 端点的安全性。下面是一个启用端点安全性的示例配置:

management.endpoints.web.exposure.include=health,info
management.endpoint.health.show-details=when-authorized
management.endpoint.info.show-details=when-authorized
management.endpoints.jmx.exposure.exclude=*
management.endpoints.web.exposure.exclude=*
management.security.enabled=true
management.security.roles=ACTUATOR_ADMIN

在上面的配置中,我们启用了端点安全性,并配置了 ACTUATOR_ADMIN 角色来访问端点。我们还禁用了 JMX 和 Web 端点,并启用了 /actuator/health/actuator/info 端点的详细信息只有在授权的情况下才会显示。

6. 扩展 Actuator

除了自定义端点之外,我们还可以扩展 Actuator 来添加自定义功能。Actuator 提供了许多扩展点,例如:

  • HealthIndicator:用于检查应用程序的健康状况。
  • InfoContributor:用于向 /actuator/info 端点添加自定义信息。
  • MetricWriter:用于将应用程序指标写入指标存储中。

我们可以通过实现这些扩展点来添加我们自己的功能。下面是一个实现 HealthIndicator 的示例:

@Component
public class CustomHealthIndicator implements HealthIndicator {

    @Override
    public Health health() {
        int errorCode = check(); // 检查应用程序的健康状况
        if (errorCode != 0) {
            return Health.down().withDetail("Error Code", errorCode).build();
        }
        return Health.up().build();
    }

    private int check() {
        // 检查应用程序的健康状况
        return 0;
    }
}

在上面的代码中,我们创建了一个实现 HealthIndicator 接口的类,并实现了 health() 方法来检查应用程序的健康状况。如果应用程序的健康状况不良,则返回一个 DOWN 状态,并提供额外的细节信息。

7. 集成 Actuator

最后,我们可以将 Actuator 集成到我们的应用程序中。我们可以使用 Actuator 提供的端点来监控和管理我们的应用程序。在开发和测试期间,我们可以通过浏览器或 curl 来访问这些端点。在生产环境中,我们可以使用监控工具(例如 Prometheus、Grafana 等)来监控我们的应用程序。

$ curl http://localhost:8080/actuator/health
{"status":"UP"}

结论

Spring Boot Actuator 是一个强大的监控和管理工具,它可以帮助我们监控和管理我们的 Spring Boot 应用程序。在本文中,我们介绍了如何添加 Actuator 依赖、配置 Actuator、监控端点、自定义端点、保护端点安全性、扩展 Actuator 和集成 Actuator。希望本文对您有所帮助!

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

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

相关文章

0003Java程序设计-SSM+JSP现代家庭教育网站

摘 要 本毕业设计的内容是设计并且实现一个基于java技术的现代家庭教育网站。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&#xff0c;java技术和Tomcat网络信息服务作为应用服务器。现代家庭教育网站的功能已基本实现&#xff0c;主要包括主页、个人中心、会员管理、…

Maven如何创建Maven web项目

1、创建一个新的模块: 1.1 使用骨架点一下&#xff0c;这里 1.2 找到maven-archetype-webapp项目&#xff0c;选中点击&#xff0c;一路next就行。 1.3 删除不必要的maven配置&#xff1a;&#xff08;这里我不需要&#xff0c;针对自己情况而定&#xff09; 可以从name这里开…

figma设计软件专业版教育优惠学生使用edu邮箱免费教程

产品介绍 今天一个买家发了一个链接问是否可以用&#xff0c;本站也是第一次见到&#xff0c;就测试了下可以使用教育优惠后准备分享给大家。本站的大多数教育优惠线报其实都是很多网友买家提供的。 Figma是一款用于数字项目的基于云的设计和原型的设计工具软件。 这样做的目…

Python应用实例(一)外星人入侵(二)

1.添加飞船图像 下面将飞船加入游戏中。为了在屏幕上绘制玩家的飞船&#xff0c;我们将加载一幅图像&#xff0c;再使用Pygame方法blit()绘制它。 为游戏选择素材时&#xff0c;务必要注意许可。最安全、最不费钱的方式是使用Pixabay等网站提供的免费图形&#xff0c;无须授权…

强者游戏-敢来挑战否-Amazon DeepRacer League

Amazon DeepRacer中国峰会总决赛 Amazon DeepRacer 自动驾驶赛车名校邀请赛会在6月27日-28日举办的Amazon DeepRacer中国峰会总决赛时同步启动。勇哥的目标是拿个比较好的名词。大家如果有参加这次活动的可以过来一起搞哦。下面我来具体介绍一下这次峰会&#xff0c;以及比赛的…

PyTorch C++ 前端是 PyTorch 机器学习框架的纯 C++ 接口

使用 PyTorch C 前端 PyTorch C 前端是 PyTorch 机器学习框架的纯 C 接口。 虽然 PyTorch 的主要接口自然是 Python&#xff0c;但此 Python API 位于强大的 C 代码库之上&#xff0c;提供基本的数据结构和功能&#xff0c;例如张量和自动微分。 C 前端公开了纯 C 11 API&…

常见面试题之线程基础知识

1. 线程和进程的区别&#xff1f; 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至CPU&#xff0c;数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的。 当一…

DataStructure01|ArrayList和顺序表

ArrayList与顺序表 1.线性表 ​ 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列… ​ 线性表在逻辑上是线性结构&#xff0c;也就说…

产品设计.从用户体验五要素出发,谈如何设计产品

用户调研--产品定位---产品方案---视觉设计 作者 | 渐渐见减减简https://www.zcool.com.cn/article/ZMTEyNDA2NA.html 用户体验五要素是一种产品分析与设计的方法论&#xff0c;帮助我们以正确方式从0到1设计一款产品。 1 战略层 企业做一个产品前&#xff0c;都要明确几个问题…

多目标樽海鞘算法MATLAB实战(附源码)

今天给大家分享多目标樽海鞘算法&#xff0c;主要从算法原理和代码实战展开。需要了解智能算法、机器学习、深度学习和信号处理相关理论的可以后台私信哦&#xff0c;下一期分享的内容就是你想了解的内容。 一、算法原理 上一篇分享的SSA算法能够驱动salps向食物来源靠近&…

【Flutter】包管理(6)Flutter 状态管理 Provider 深入使用指南

文章目录 一、 前言二、 ProxyProvider 的使用三、 处理异步数据四、 性能优化五、 版本信息六、 总结一、 前言 在我们的上一篇文章中,我们介绍了 Flutter 中 Provider 包的基本使用。 在这篇文章中,我们将深入探讨 Provider 的高级使用方法,包括如何使用 ProxyProvider,…

Green板 和Red板和Nv EVM板比较

001 电源开关、 复位、烧写按钮 G&#xff1a;绿板 K3: Reset press RN K1: Brush RECOVERY button K2: Start button Power ON R: 红板 K3: POWER_KEY K2: FORCE_RECOVERY K1: RESET_KEY 002 USB设计 烧写连接器 G: 绿板 J6&#xff1a;TYPE C 烧写连接器 USB0_DP …

streamlit——搭建作业、文件上传网站(代码编写、服务器部署)

使用streamlit搭建简单的作业提交网站 文章目录 使用streamlit搭建简单的作业提交网站一、引言二、streamlit代码三、搭建到服务器中1、放行安全组2、将代码放到服务器中3、配置依赖4、运行代码 一、引言 由于我平时需要收集各种类型的作业文件。但传统的微信收文件方式很让我…

PyQt5中文手册

PyQt5中文手册 一、介绍 本教程的目的是带领你入门PyQt5。教程内所有代码都在Linux上测试通过。PyQt4 教程是PyQt4的教程&#xff0c;PyQt4是一个Python&#xff08;同时支持2和3&#xff09;版的Qt库。 关于 PyQt5 PyQt5 是Digia的一套Qt5应用框架与python的结合&#xff…

实训五:数据库安全控制 - 授权及回收权限

授权及回收权限 第1关&#xff1a;授权任务描述相关知识MySql系统库中的权限表访问控制的两个阶段&#xff1a;授予的权限等级&#xff1a;MySQL 权限类型grant 语句的基本语法格式revoke 语句的基本语法格式查看权限限制权限 编程要求测试说明参考代码 第2关&#xff1a;授权-…

论文悦读(5)——NVM文件系统之CtFS(FAST‘22)文件系统

CtFS&#xff08;FAST22&#xff09; 1. 背景&#xff08;Background&#xff09;1.1 NVM1.2 NVM文件系统1.3 快速索引方案 2. 观察与动机&#xff08;Observation & Motivation&#xff09;3. CtFS设计与实现&#xff08;Design & Implementation&#xff09;3.1 系统…

ASP.NET Dotnet 3.5实验室LIMS系统源码

LIMS系统功能包括&#xff1a;检测管理&#xff08;合同管理、样品管理、样品收发管理、工作任务分配、检测结果登记、复核及审核、留样管理等&#xff09;、报告管理&#xff08;报告编制、审核、签发、打印等&#xff09;、原始记录管理、仪器设备管理、消耗品管理、文件管理…

Oralce系列十九:Oralce的体系结构

Oralce的体系结构 1. 物理结构2. 内存结构2.1 SGA2.2 后台进程 3. 逻辑结构 1. 物理结构 Oracle数据库的物理结构由参数文件、控制文件、数据文件和日志文件组成&#xff0c;用于存储和管理数据库的数据和元数据&#xff0c;每个文件都扮演着不可或缺的角色。 参数文件用于配…

盘点那些VS Code上的常用插件

插件可以使代码开发过程变得更加轻松和高效 文章目录 前言中文版主题插件显示错误游戏插件连接数据库拼写检查插件前端智能提示刷算法题的插件美化注释的插件美化括号的插件自动补全路径和文件名在浏览器中打开 HTML 文件在 VS Code 里面使用 Postman同步 VS Code 配置的插件 前…

MFC第七天 单机版数据库增删改的方法和用户登录(密码修改)、权限管理功能的员工管理系统的应用 以及 CCombox类的属性和方法

文章目录 员工管理系统的应用对TCHAR类型简介&#xff1a;Unicode软件开发中的文字转换方式有三种 CComboBox控件属性和类库介绍CBS_组合框控件属性CComboBox常用方法 员工管理系统示例代码如下Employer_sql.hEmployer_sql.cppMainDlg.hMainDlg.cpp: 实现文件CLoginDlg.hCLogin…