极简教程 | 使用Actuator 实现Spring Boot 应用监控

简介: 我们知道Spring Boot 提供了Actuator组件,方便我们对应用程序进行监控和维护。接下来,就来介绍Actuator到底是什么? 如何在Spring Boot项目中快速集成Actuator?

我们知道Spring Boot 提供了Actuator组件,方便我们对应用程序进行监控和维护。接下来,就来介绍Actuator到底是什么? 如何在Spring Boot项目中快速集成Actuator?

一、Actuator简介

1.Actuator是什么?

ActuatorSpring Boot提供的应用系统监控的开源框架,它是Spring Boot体系中非常重要的组件。它可以轻松实现应用程序的监控治理。支持通过众多 REST接口、远程ShellJMX收集应用的运行情况。

微信图片_20211119101816.png


2.端点Endpoint

Actuator的核心是端点(Endpoint),它用来监视、提供应用程序的信息,Spring Boot提供的spring-boot-actuator组件中已经内置了非常多的 Endpointhealthinfobeansmetricshttptraceshutdown等),每个端点都可以启用和禁用。Actuator也允许我们扩展自己的端点。通过JMXHTTP的形式暴露自定义端点。


Actuator会将自定义端点的ID默认映射到一个带/actuator前缀的URL。比如,health端点默认映射到/actuator/health。这样就可以通过HTTP的形式获取自定义端点的数据。

Actuator同时还可以与外部应用监控系统整合,比如 Prometheus, Graphite, DataDog, Influx, Wavefront, New Relic等。这些系统提供了非常好的仪表盘、图标、分析和告警等功能,使得你可以通过统一的接口轻松的监控和管理你的应用系统。这对于实施微服务的中小团队来说,无疑快速高效的解决方案。


二、Spring Boot集成Actuator

Spring Boot项目中集成Actuator非常简单,只需要在项目中添加spring-boot-starter-actuator组件,就能自动启动应用监控的功能。


首先,创建一个Spring Boot项目来添加spring-boot-starter-actuator依赖:

<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>

如上面的示例所示,我们添加了actuatorweb两个组件。spring-boot-starter-actuator除了可以监控Web系统外,还可以监控后台服务等Spring Boot应用。


然后,修改配置文件,配置Actuator端点

# 打开所有的监控点

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always


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

image.png

Actuator提供了丰富的数据接口,包括/health/env/metrics等。下面我们请求其中的一个地址/actuator/health,查看接口返回的详细信息。

image.png

如图上图所示,/health接口返回了系统详细的健康状态信息,包括系统的状态(UP为正常)、磁盘使用情况等信息。


三、自定义端点

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

  • 使用@Endpoint注解,同时支持JMX和HTTP方式。
  • 使用@JmxEndpoint 注解,只支持JMX技术。
  • 使用@WebEndpoint注解,只支持HTTP。

编写自定义端点类很简单,首先需要在类前面使用@Endpoint注解,然后在类的方法上使用@ReadOperation、@WriteOperation或@DeleteOperation(分别对应HTTP中的GET、POST、DELETE)等注解获取、设置端点信息。

下面我们创建一个获取系统当前时间的自定义端点。

首先,创建自定义端点类SystemTimeEndpoint,使用@Endpoint注解声明端点ID,同时需要使用@Component注解,将此类交给Spring Boot管理。示例代码如下:

/*
 * 自定义端点类
 * @Endpoint //表示这是一个自定义事件端点类
 * Endpoint 中有一个id //它是设置端点的URL路径
 * */
@Endpoint(id="systemtime") //端点路径不要与系统自带的重合
@Component
public class SystemTimeEndpoint {
    //一般端点都是对象,或者一个json返回的格式,所以通常我们会将端点定义一个MAP的返回形式
    //通过ReadOperation
    //访问地址是根据前缀+ endpoint 的ID
    ///actuator/systemtime
    private String format = "yyyy-MM-dd HH:mm:ss";
    @ReadOperation //显示监控指标
    public Map<String,Object> info(){
        Map<String,Object> info  = new HashMap<>();
        info.put("system","数据管理服务");
        info.put("memo","系统当前时间端点");
        info.put("datetime",new SimpleDateFormat(format).format(new Date()));
        return info;
    }
    //动态修改指标
    @WriteOperation //动态修改指标,是以post方式修改
    public void setFormat(String format){
        this.format = format;
    }
}

在上面的示例中,我们通过@Endpoint注解定义一个自定义端点,参数id为自定义端点的唯一标识和访问路径,必须唯一不重复。

做好这些配置后,就能访问http://127.0.0.1:8080/actuator/systemtime端点了,如图下图所示。

image.png

       

最后

以上,Actuator到底是什么,如何在Spring Boot项目中快速集成Actuator介绍完了。Actuator是Spring Boot 提供的非常重要的应用监控组件,希望大家能熟悉掌握。后面还会介绍搭建完整的Spring Boot应用监控平台。敬请关注。

相关文章
|
3月前
|
SQL Java 数据库连接
Spring Data JPA 技术深度解析与应用指南
本文档全面介绍 Spring Data JPA 的核心概念、技术原理和实际应用。作为 Spring 生态系统中数据访问层的关键组件,Spring Data JPA 极大简化了 Java 持久层开发。本文将深入探讨其架构设计、核心接口、查询派生机制、事务管理以及与 Spring 框架的集成方式,并通过实际示例展示如何高效地使用这一技术。本文档约1500字,适合有一定 Spring 和 JPA 基础的开发者阅读。
391 0
|
4月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
800 3
|
2月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
147 8
|
3月前
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
382 1
日志收集和Spring 微服务监控的最佳实践
|
3月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
625 5
|
4月前
|
Java 应用服务中间件 开发者
Spring Boot 技术详解与应用实践
本文档旨在全面介绍 Spring Boot 这一广泛应用于现代企业级应用开发的框架。内容将涵盖 Spring Boot 的核心概念、核心特性、项目自动生成与结构解析、基础功能实现(如 RESTful API、数据访问)、配置管理以及最终的构建与部署。通过本文档,读者将能够理解 Spring Boot 如何简化 Spring 应用的初始搭建和开发过程,并掌握其基本使用方法。
363 2
|
4月前
|
人工智能 监控 安全
如何快速上手【Spring AOP】?核心应用实战(上篇)
哈喽大家好吖~欢迎来到Spring AOP系列教程的上篇 - 应用篇。在本篇,我们将专注于Spring AOP的实际应用,通过具体的代码示例和场景分析,帮助大家掌握AOP的使用方法和技巧。而在后续的下篇中,我们将深入探讨Spring AOP的实现原理和底层机制。 AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的核心特性之一,它能够帮助我们解决横切关注点(如日志记录、性能统计、安全控制、事务管理等)的问题,提高代码的模块化程度和复用性。
|
4月前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
1054 10
|
5月前
|
NoSQL Java Redis
Redis基本数据类型及Spring Data Redis应用
Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
593 2
|
5月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。