微服务应用性能如何?APM监控工具了解一下!

APM监控工具来告诉你 微服务应用性能如何?! 摘要 当微服务系统越来越庞大,各个服务间的调用关系也变得越来越复杂,需要一个工具来帮忙理清请求调用的服务链路。之前在《Spring Cloud Sleuth:分布式请求链路跟踪》一文中使用的是Sleuth+Zipkin的解决方案,最近发现应用性能监控(Application Performance Monitoring,APM)也可以很好地解决该问题。对比SkyWalking和Elastic APM之后,发现Elastic APM更胜一筹,今天我们来一波Elastic APM的使用实践! 福利福利 .. 阅读详情

推荐阅读:

摘要

当微服务系统越来越庞大,各个服务间的调用关系也变得越来越复杂,需要一个工具来帮忙理清请求调用的服务链路。最近发现应用性能监控(Application Performance Monitoring,APM)也可以很好地解决该问题。对比SkyWalking和Elastic APM之后,发现Elastic APM更胜一筹,今天我们来一波Elastic APM的使用实践!

Elastic APM 简介

Elastic APM是基于Elastic Stack构建的应用性能监控(APM)系统。它主要有如下用途:

  • 用来实时监控应用性能信息,包括HTTP请求调用时长、数据库查询信息、缓存调用信息和外部的HTTP请求调用信息。有助于我们快速找出并解决性能问题。
  • 自动收集应用中未处理的错误和异常,显示异常的堆栈信息,有助于快速定位异常和了解出现频率。
  • 度量指标是调试生产系统时的另一个重要信息来源。Elastic APM Agent 会自动收集主机级别的度量指标(比如Java JVM和Go Runtime的指标)。
  • 支持分布式请求链路追踪,使你能够在一个视图中分析整个服务架构的性能问题。

相关组件

Elastic APM 包括四大组件: APM Agent, APM Server, Elasticsearch, Kibana。

  • APM Agent:以应用程序库的形式提供,负责收集应用运行时的性能监控数据和错误数据,短时间缓存后发送APM Server。
  • APM Server:一个独立的组件,负责接收APM Agent中发送的性能监控数据。验证并处理完数据后,会转存储到Elasticsearch中,之后就可以在Kibana APM 应用中查看性能监控数据了。
  • Elasticsearch:用于存储应用性能监控数据并提供聚合功能。
  • Kibana APM app:可视化查看APM性能监控数据,有助于找到性能瓶颈。

数据模型

Elastic APM Agent 从其检测的应用程序中捕获不同类型的信息。这些操作被称为事件,可以是Span, Transaction, Error, or Metric。

  • Span(跨度):Span包含一次操作过程中代码执行路径的信息。它从操作的开始到结束进行度量,并且可以与其他Span具有父/子关系。
  • Transaction(事务):Transaction是一种特殊的Span,具有与之关联的其他属性。它描述了Elastic APM Agent捕获的最高级别事件,比如一次请求、一次批处理任务等。
  • Error(错误):Error事件至少包含错误发生的原始异常或创建的日志的信息。
  • Metric(度量):APM Agent 自动获取基本的主机级别指标,包括系统和进程级别的CPU和内存指标。也可以获取特定于代理的指标,例如Java Agent中的JVM指标和Go Agent中的Go运行时指标。

使用实践

学习了上面的基本概念之后,是时候来波实践了,接下来我们将使用Elastic APM来监控SpringBoot应用的性能信息。

安装Elasticsearch和Kibana

安装Elastic APM之前,我们需要先安装好Elasticsearch和Kibana,具体参考《你居然还去服务器上捞日志,搭个日志收集系统难道不香么!》,注意使用7.6.2版本。

安装APM Server

  • 下载完成后解压到指定目录;

  • 修改配置文件apm-server.yml,修改下Elasticsearch的连接地址即可;
output.elasticsearch:
  hosts: ["localhost:9200"]
  • 使用如下命令启动APM Server即可,启动成功APM Server将在8200端口运行;
apm-sever -e
  • 在Kibana中检测APM Server是否启动成功,访问地址:http://localhost:5601/app/kibana#/home/tutorial/apm

SpringBoot集成APM Agent

Java应用集成APM Agent的方式有三种,我们使用最简单的方式,直接在应用中集成。

  • 在pom.xml中添加相关依赖;
<!--Elastic Agent相关依赖-->
<dependency>
    <groupId>co.elastic.apm</groupId>
    <artifactId>apm-agent-attach</artifactId>
    <version>1.17.0</version>
</dependency>
  • 在应用启动类的main方法中添加Elastic APM的Attach API;
@SpringBootApplication
public class MallTinyApplication {

    public static void main(String[] args) {
        ElasticApmAttacher.attach();
        SpringApplication.run(MallTinyApplication.class, args);
    }

}
  • 在resource目录下添加Elastic APM的配置文件elasticapm.properties;
# 配置服务名称
service_name=mall-tiny-apm
# 配置应用所在基础包
application_packages=com.macro.mall.tiny
# 配置APM Server的访问地址
server_urls=http://localhost:8200
  • 在Kibana中检测APM Agent是否启动成功,访问地址:http://localhost:5601/app/kibana#/home/tutorial/apm

查看性能监控信息

  • 打开监控面板以后,可以发现我们的mall-tiny-apm服务已经存在了;

  • 多次调用应用接口,即可查看到应用性能信息;

  • 打开某个Transaction查看详情,我们可以看到连SQL执行耗时信息都给我们统计好了;

  • 不仅如此,打开执行查询的Span查看详情,连SQL语句都给我们收集好了;

  • 在项目中添加一个有远程调用接口,看看能不能收集到请求调用链路;
/**
 * 品牌管理Controller
 * Created by macro on 2019/4/19.
 */
@Api(tags = "PmsBrandController", description = "商品品牌管理")
@Controller
@RequestMapping("/brand")
public class PmsBrandController {

    @ApiOperation("远程调用获取所有品牌信息")
    @RequestMapping(value = "/remoteListAll", method = RequestMethod.GET)
    @ResponseBody
    public CommonResult<List<PmsBrand>> remoteListAll() {
        //模拟耗时操作
        ThreadUtil.sleep(1, TimeUnit.SECONDS);
        //远程调用获取数据
        String response = HttpUtil.get("http://localhost:8088/brand/listAll");
        JSONObject jsonObject = new JSONObject(response);
        JSONArray data = jsonObject.getJSONArray("data");
        List<PmsBrand> brandList = data.toList(PmsBrand.class);
        return CommonResult.success(brandList);
    }
}
  • 发现完全可以,Elastic APM完全可以取代Sleuth+Zipkin来做微服务的请求链路跟踪了;

  • 使用我们之前springcloud-learning中的微服务调用案例,也是可以进行请求链路跟踪的;

  • 接下来我们人为制造一个异常,在方法中添加int i=1/0;即可,查看下收集到的异常信息;

  • 再来看下应用主机的度量信息,非常全面,CPU、内存、JVM信息都有了,以后性能调优的时候可以看看!

总结

Elastic APM 完全可以取代Sleuth+Zipkin来做分布式请求链路追踪,并且提供了数据库及缓存调用时长的统计,很好很强大!不止于此,它还可以用来实时监控应用性能信息及度量指标,连错误日志也收集好了,是一款很好的应用性能监控工具!

企业有了传统监控工具如Zabbix,真的还需要应用性能监控工具(APM)? 首先我们来重新定义一下APM是什么? APM网上大部分的资料上全称为Application Performance Management。从名称来看,它的出现,目的来自于运维监控领域对于应用提供服务快慢,用户体验感知的空白。大部分国内外APM产品提供者也主要关注在性能方面。但是运维的最终目标还是保证业务不中断,提高业务稳定性。很多还没有把业务性能纳入管理范围的IT部门会觉得APM有必要吗?APM的... 阅读详情

相关推荐

Spring Boot 与 APM 监控:全面提升应用性能监控与可观测性!

🏆本文收录于《滚雪球学Spring Boot》,专门攻坚指数提升,2025 年国内最系统+最强(更新中)。    本专栏致力打造最硬核 Spring Boot 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。

**My Coding Family** 1675

七个优秀微服务跟踪工具

随着微服务架构复杂性的增加,在问题出现时确定问题的根本原因变得更具挑战性。日志和指标为我们提供了有用的信息,但并不能提供系统的完整概况。这就是跟踪的用武之地。通过跟踪,开发人员可以监控微服务之间的请求进度,从而使他们能够更早地发现并解决问题。

Z__7Gk的博客 2170

On the convergence of FedAvg on non-iid data

On the convergence of FedAvg on non-iid data

Lyn_S的博客 7082

九大微服务监控工具详解

Zipkin 是一个开源的分布式追踪系统,最初由 Twitter 开发,用于帮助开发者、和运维人员了解微服务架构中请求的传播路径、性能瓶颈、和故障点。通过与 Prometheus 等数据源的集成,Grafana 可以提供实时的系统监控和告警,帮助用户及时发现和解决问题,提升系统可靠性、和性能。总之,Prometheus 通过其强大的多维数据模型、灵活的查询语言、和可扩展的数据收集方式,成为了现代监控系统中的重要工具。主要用于:帮助开发者、和运维人员,实时监控、和分析微服务架构中的性能、和健康状况。

LinkSLA的博客 3480

【win11 cuda12.0安装tensorflow-gpu】

win11 cuda 12.0 安装 tensorflow-gpu

weixin_36299320的博客 3012

DFT设计绪论

DFT设计的主要目的是为了将defect-free的芯片交给客户。 产品质量,通常使用Parts Per million(PPM)来衡量。 但是随着IC从SSI到VLSI的发展,在test上花销的时间越来越多,test的quality却很难提高,这使得DFT的engineer不断的发展着DFT的技术。 DFT engineer面对的第一个问题是设计内部的状态的可测试性问题。在...

ahr7882的博客 1196

微服务系统监控

什么是服务监控监视当前系统应用状态、内存、线程、堆栈、日志等等相关信息,主要目的在服务出现问题或者快要出现问题时能够准确快速地发现以减小影响范围。为什么要使用服务监控服务监控在微服务改造过程中的重要性不言而喻,没有强大的监控能力,改造成微服务架构后,就无法掌控各个不同服务的情况,在遇到调用失败时,如果不能快速发现系统的问题,对于业务来说就是一场灾难。spring boot actuator 服务监控接口actuator是监控系统健康情况的工具。spring boot admin 服务监控管理。

阿巴阿巴 1732

【FPGA】Verilog代码实现温湿度传感器DHT11

#今天也是咸鱼的一天~ 因为参加Robei 杯 是要做一个机器人,先不说这个机器人具体怎么机器法,但是和外界互通的传感器肯定少不了,通过获取外界环境数据,进行处理,然后做出各种各样的功能。 先来讲个简单的模块,温湿度传感器DHT11。 DHT11介绍 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器。它具有超小体积、极低功耗的特点。它使用单根总线与单片机进行双向的串行数据传输,信号传...

Ninquelote的博客 9163

微服务之服务监控,一文秒懂

微服务架构盛行,但如何保障服务的稳定运行?本文将带您深入微服务监控的精髓,详细梳理监控流程,精选主流工具,助您轻松构建高效、可靠的监控体系,让服务运行尽在掌控!

m0_46606920的博客 5420

避开这些坑!用Python ReportLab生成PDF时字体处理与中文排版的5个关键技巧

本文针对Python ReportLab库在PDF自动化生成中常见的中文排版难题,提供了五个关键技巧。内容涵盖字体注册的稳健策略、段落样式的精细控制、表格内中文的换行对齐、页面布局管理以及性能优化,旨在帮助开发者彻底解决中文乱码、排版错位等问题,生成专业美观的PDF文档。

weixin_29250403的博客 624

Python读取ECMWF grib数据;Anaconda配置eccodes和cfgrib环境及安装过程

python读取grib数据,eccodes,cfgrib安装。

qq_36714629的博客 2244

手摸手教你微服务的性能监控、压测和调优

启动方式和 jconsole 一样,也是通过 cmd 命令行启动。还是选择 passjava-question 微服务,然后选择第一个菜单栏:概述。可以看到 JVM 的版本,启动参数等信息。本文通过压测工具 Jmeter 讲解压测如何实施,然后用性能监控工具 jconsole 和 jvisualvm 来监控 Java 应用程序的性能,以及如何用工具来优化开源项目 passjava 的性能,并且非常详细地介绍了每一步以及执行结果,通过对比的方式,更加清晰地知道如何做性能优化。

程序员高级码农的博客 1649

RK3568下GPIO模拟串口

在嵌入式开发中,硬件 UART 资源可能被其他外设占用。此时,通过 GPIO 模拟 UART(软串口)成为一种灵活的解决方案。本文基于 RK3568 平台,结合 Linux 内核模块,实现高精度软串口通信,并深入分析关键技术细节。可以看到已经接收到数据了,可以自己创建自定义的设备文件到/dev下,也可以按照串口设备的标准创建一个设备,后面有时间我写一篇和标准串口设备结合的gpio模拟串口文章。RK3568 GPIO 模拟串口(软串口)实现详解。将编译好的驱动放到板子上运行。再写个Makefile。

文石_2009的博客 366

微服务应用性能如何?APM监控工具来告诉你!

当微服务系统越来越庞大,各个服务间的调用关系也变得越来越复杂,需要一个工具来帮忙理清请求调用的服务链路。之前在《Spring Cloud Sleuth:分布式请求链路跟踪》一文中使用的是Sleuth+Zipkin的解决方案,最近发现应用性能监控(Application Performance Monitoring,APM)也可以很好地解决该问题。对比SkyWalking和Elastic APM之后,发现Elastic APM更胜一筹,今天我们来一波Elastic APM的使用实践!

weixin_42907150的博客 1711

这才是 Python 的正确玩法!用强化学习 (RL) 训练 AI 玩《王者荣耀》,胜率 90%!

大家打排位时,一定遇到过那种“意识神级、操作零失误”的对手,或者“走位呆滞、送人头”的队友。以前的“人机”是程序员写死的脚本(If 血量<20% Then 回城)。而现在的顶级 AI(如腾讯绝悟、OpenAI Five),是靠强化学习 (Reinforcement Learning)自己“左右互搏”练出来的。今天,我们不谈枯燥的数学公式,我将手把手教你用,搭建一个能玩 MOBA 游戏的 AI Agent。即使不能去 KPL 打职业,虐一下钻石局还是绰绰有余的!

BUG猿的博客 1182

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

监控工具之应用性能监控(APM)

New Relic 是一款成熟的商业 APM 工具,提供全栈式监控解决方案,支持几乎所有主流编程语言和框架,以直观的可视化和强大的分析能力著称。在控制台点击 "Dashboards" → "Create a dashboard"添加常用指标组件:应用响应时间(Apdex 分数)错误率吞吐量(每秒事务数)数据库查询时间Datadog 是一款云原生全栈监控平台,提供 APM、基础设施监控、日志管理和安全监控等一体化解决方案,特别适合容器和微服务环境。

ececec12的博客 2051

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SkyWalking - 什么是应用性能监控(APM)?为什么现代微服务离不开它

🚀 SkyWalking - 微服务性能监控利器 摘要 本文深入探讨了应用性能监控(APM)在现代微服务架构中的关键作用。随着系统复杂度增加,传统监控方式已无法满足需求,而SkyWalking作为开源APM解决方案,通过五大核心功能帮助企业应对挑战: 分布式追踪:完整记录请求在微服务间的调用路径 服务拓扑可视化:自动绘制服务依赖关系图 性能指标监控:实时采集JVM、数据库等关键指标 智能告警:基于阈值或异常检测触发告警 多语言支持:覆盖Java、Go、Python等主流语言 文章通过电商下单场景展示了微服

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【亲测免费】 scouter:开源APM解决方案,全面监控应用性能

scouter 是一个开源的应用性能监控(Application Performance Monitoring,简称APM)工具,类似于New Relic和AppDynamics。它能够帮助开发者实时监控和管理应用程序的性能,确保服务的高效运行。scouter 支持多种编程语言和平台,能够监控 Java、Redis、NginX、Apache HTTPd、MySQL、MongoDB 等多种服务和操作...

gitblog_00953的博客 1436

【运维工具】今天就聊APM

什么是 APM?APM(Application Performance Management,应用性能管理)是一种用于监控、管理和优化应用程序性能的技术和工具集合。它通过收集和分析应用程序的运行数据,帮助开发人员和运维团队识别性能瓶颈、诊断问题、优化资源利用率,并确保应用程序的稳定性和用户体验。APM 的核心目标性能监控:实时监控应用程序的运行状态,包括响应时间、吞吐量、错误率等指标。问题诊断:快速定位性能问题的根本原因,例如代码缺陷、数据库查询缓慢或外部依赖延迟。用户体验优化。

wendao76的专栏 2571

微服务应用性能如何?APM监控工具来告诉你

当微服务系统越来越庞大,各个服务间的调用关系也变得越来越复杂,需要一个工具来帮忙理清请求调用的服务链路。之前使用的是Sleuth+Zipkin的解决方案,最近发现应用性能监控(Application Performance Monitoring,APM)也可以很好地解决该问题。对比SkyWalking和Elastic APM之后,发现Elastic APM更胜一筹,今天我们来一波Elastic APM的使用实践! Elastic APM 简介 Elastic APM是基于Elastic Stack构.

m0_67505824的博客 1660

APM是怎么监控,原理是什么?Java Agent 又是什么?

是用于监控和管理应用性能的工具,核心目标是快速定位性能瓶颈、优化用户体验。

大户影视的博客 2332

微服务架构APM工具Awesome Microservices:应用性能监控工具选型终极指南

在现代微服务架构中,应用性能监控(APM)已成为确保系统稳定性和用户体验的关键技术。Awesome Microservices项目为您精心整理了业界最全面的微服务监控工具集合,帮助您构建高效、可靠的分布式系统。🚀 ## 为什么微服务架构需要专业的APM工具? 微服务架构将单体应用拆分为多个独立部署的小型服务,虽然带来了开发和部署的灵活性,但也引入了新的挑战: - **服务依赖复杂**:数十

gitblog_00037的博客 742

探索APM Server:高效应用性能监控的利器

APM Server 是 Elastic 生态系统中的一个关键组件,专门用于接收来自 Elastic APM 代理的数据,并将其转换为 Elasticsearch 文档。通过 APM Server,开发者可以轻松实现对应用程序性能的全面监控,从而快速定位和解决性能瓶颈。 ## 项目技术分析 ### 技术栈 - **Go 语言**:APM Server 使用 Go 语言开发,充分利用了 Go ...

gitblog_00375的博客 934

微服务下的APM全链路监控

https://opentalk.upyun.com/333.html 2017 年 10 月 29 日,又拍云 Open Talk 联合 Spring Cloud 中国社区成功举办了“进击的微服务实战派北京站”。融数数据北京研发中心 CTO 王东作了题为《微服务下的APM全链路监控》。分享分为五个部分,从性能管理一直到现在的 microservice 对 APM 的大影响,然后自然去...

998

SigNoz性能监控:应用性能管理(APM)实现

在微服务架构盛行的今天,你是否经常遇到这样的场景? - 用户投诉应用响应缓慢,但你无法快速定位是哪个服务出了问题 - 生产环境出现性能瓶颈,需要花费数小时甚至数天才能找到根本原因 - 多个监控工具之间切换,数据孤岛导致排查效率低下 - 高昂的商业APM工具费用让团队预算紧张 传统的监控方案往往面临数据割裂、工具繁杂、成本高昂等问题。而SigNoz作为开源的可观测性平台,提供了完整的应用性能管理...

gitblog_00429的博客 919
上一篇: 把嘴给我闭上!我说个数,五分钟!搞懂 MySQL主从复制原理
下一篇: Alibaba 内部 MySQL 宝典意外流出!极致经典,堪称行业天花板
「已注销」
博客等级 码龄6年 36粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值