如何在Spring Boot中集成Elastic APM进行应用性能监控

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
简介: 如何在Spring Boot中集成Elastic APM进行应用性能监控

如何在Spring Boot中集成Elastic APM进行应用性能监控

在现代应用程序中,性能监控和故障排除是确保应用程序稳定性和性能的重要方面。Elastic APM(应用性能监控)是一种开源解决方案,能够实时收集和分析应用程序性能数据。本文将介绍如何在Spring Boot项目中集成Elastic APM,实现对应用程序的全面性能监控。

什么是Elastic APM

Elastic APM是Elastic Stack(也称为ELK Stack)的一部分,用于监控软件应用程序的性能和可用性。它可以捕获应用程序的响应时间、错误、数据库查询、外部HTTP请求等详细信息,帮助开发者快速定位和解决性能瓶颈和错误。

在Spring Boot中集成Elastic APM

为了在Spring Boot项目中使用Elastic APM,我们需要以下几个步骤:

  1. 添加Elastic APM依赖
  2. 配置Elastic APM
  3. 启动Elastic APM Server
  4. 验证集成效果

1. 添加Elastic APM依赖

首先,我们需要在pom.xml中添加Elastic APM的依赖:

<dependencies>
    <dependency>
        <groupId>co.elastic.apm</groupId>
        <artifactId>elastic-apm-agent</artifactId>
        <version>1.25.0</version>
    </dependency>
</dependencies>

2. 配置Elastic APM

接下来,我们需要配置Elastic APM。在Spring Boot项目的src/main/resources目录下创建一个elasticapm.properties文件,并添加以下配置:

# Elastic APM Server URL
elastic.apm.server_urls=http://localhost:8200

# Application name
elastic.apm.service_name=my-spring-boot-app

# Application environment
elastic.apm.environment=production

# Secret token for APM Server
elastic.apm.secret_token=

# Enable distributed tracing
elastic.apm.distributed_tracing=true

然后,在Spring Boot的启动类中添加Elastic APM的Java Agent。修改src/main/java/cn/juwatech/Application.java文件:

package cn.juwatech;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
   

    public static void main(String[] args) {
   
        // Add Elastic APM agent
        ElasticApmAttacher.attach();

        SpringApplication.run(Application.class, args);
    }
}

3. 启动Elastic APM Server

为了接收和处理来自应用程序的性能数据,我们需要启动Elastic APM Server。可以使用Docker来快速启动APM Server:

docker run -d --name=apm-server -p 8200:8200 -e ELASTIC_APM_SECRET_TOKEN= -e ELASTIC_APM_SERVER_URLS=http://localhost:8200 docker.elastic.co/apm/apm-server:7.12.0

4. 验证集成效果

现在,我们可以启动Spring Boot应用程序并验证Elastic APM的集成效果。在应用程序启动并运行一段时间后,访问Elastic APM UI查看性能数据。默认情况下,Elastic APM UI在Kibana中可用,您可以通过以下URL访问:

http://localhost:5601/app/apm

使用Spring Boot Controller演示

为了展示Elastic APM的监控效果,我们可以创建一个简单的Spring Boot控制器。创建一个名为HelloController的控制器类:

package cn.juwatech.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
   

    @GetMapping("/hello")
    public String sayHello() {
   
        return "Hello, Elastic APM!";
    }
}

启动Spring Boot应用程序并访问http://localhost:8080/hello,然后在Elastic APM UI中查看监控数据。

5. 自定义监控

Elastic APM还允许我们添加自定义的监控数据。可以通过APM Agent的API来实现这一点。比如,我们可以在控制器中添加自定义事务和跨度:

package cn.juwatech.controller;

import co.elastic.apm.api.ElasticApm;
import co.elastic.apm.api.Span;
import co.elastic.apm.api.Transaction;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
   

    @GetMapping("/hello")
    public String sayHello() {
   
        Transaction transaction = ElasticApm.startTransaction();
        transaction.setName("Custom Transaction");
        transaction.setType(Transaction.TYPE_REQUEST);

        Span span = transaction.startSpan();
        span.setName("Custom Span");
        span.setType("custom");

        try {
   
            // Simulate some work
            Thread.sleep(100);
            return "Hello, Elastic APM!";
        } catch (InterruptedException e) {
   
            e.printStackTrace();
            return "Error!";
        } finally {
   
            span.end();
            transaction.end();
        }
    }
}

总结

通过以上步骤,我们成功地在Spring Boot项目中集成了Elastic APM,实现了对应用程序的性能监控。Elastic APM不仅能够捕获应用程序的基本性能指标,还可以通过自定义监控来满足更多的需求。在实际项目中,可以根据需求进一步优化和扩展Elastic APM的使用,例如配置更多的监控项、设置告警等。

相关实践学习
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
本场景将自定义告警信息同时分发至多个通知渠道的需求,例如短信、电子邮件及钉钉群组等。通过采用轻量消息队列(原 MNS)的主题模型的HTTP订阅方式,并结合应用实时监控服务提供的自定义集成能力,使得您能够以简便的配置方式实现上述多渠道同步通知的功能。
相关文章
|
2月前
|
数据可视化 Java BI
将 Spring 微服务与 BI 工具集成:最佳实践
本文探讨了 Spring 微服务与商业智能(BI)工具集成的潜力与实践。随着微服务架构和数据分析需求的增长,Spring Boot 和 Spring Cloud 提供了构建可扩展、弹性服务的框架,而 BI 工具则增强了数据可视化与实时分析能力。文章介绍了 Spring 微服务的核心概念、BI 工具在企业中的作用,并深入分析了两者集成带来的优势,如实时数据处理、个性化报告、数据聚合与安全保障。同时,文中还总结了集成过程中的最佳实践,包括事件驱动架构、集中配置管理、数据安全控制、模块化设计与持续优化策略,旨在帮助企业构建高效、智能的数据驱动系统。
190 1
将 Spring 微服务与 BI 工具集成:最佳实践
|
4月前
|
XML 人工智能 Java
Spring Boot集成Aviator实现参数校验
Aviator是一个高性能、轻量级的Java表达式求值引擎,适用于动态表达式计算。其特点包括支持多种运算符、函数调用、正则匹配、自动类型转换及嵌套变量访问,性能优异且依赖小。适用于规则引擎、公式计算和动态脚本控制等场景。本文介绍了如何结合Aviator与AOP实现参数校验,并附有代码示例和仓库链接。
301 0
|
4月前
|
安全 Java 数据库
第16课:Spring Boot中集成 Shiro
第16课:Spring Boot中集成 Shiro
740 0
|
4月前
|
消息中间件 存储 Java
第15课: Spring Boot中集成ActiveMQ
第15课: Spring Boot中集成ActiveMQ
465 0
|
1月前
|
缓存 监控 Java
《深入理解Spring》性能监控与优化——构建高性能应用的艺术
本文系统介绍了Spring生态下的性能监控与优化实践,涵盖监控体系构建、数据库调优、缓存策略、线程池配置及性能测试等内容,强调通过数据驱动、分层优化和持续迭代提升应用性能。
|
5月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
620 0
|
8月前
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
443 0
|
8月前
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
330 0
|
2月前
|
监控 Cloud Native Java
Spring Integration 企业集成模式技术详解与实践指南
本文档全面介绍 Spring Integration 框架的核心概念、架构设计和实际应用。作为 Spring 生态系统中的企业集成解决方案,Spring Integration 基于著名的 Enterprise Integration Patterns(EIP)提供了轻量级的消息驱动架构。本文将深入探讨其消息通道、端点、过滤器、转换器等核心组件,以及如何构建可靠的企业集成解决方案。
249 0
下一篇
oss云网关配置