微服务性能监控 APM工具

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

Elastic APM

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

组件

  • Elastic APM 包括四大组件: APM Agent, APM Server, Elasticsearch, Kibana。
    Elastic APM 包括四大组件
  • 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运行时指标

使用实践

  • 安装Elasticsearch和Kibana安装Elastic APM之前,我们需要先安装好Elasticsearch和Kibana
  • 安装APM Server
    APM Server
  • 修改配置文件apm-server.yml,修改下Elasticsearch的连接地址即可;
output.elasticsearch:
  hosts: ["localhost:9200"]
  • 使用如下命令启动APM Server即可,启动成功APM Server将在8200端口运行;
apm-sever -e
  • 在Kibana中检测APM Server是否启动成功
    Kibana中
  • SpringBoot集成APM Agent
<!--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=macro-apm
# 配置应用所在基础包
application_packages=com.z.tiny
# 配置APM Server的访问地址
server_urls=http://localhost:8002
  • 在Kibana中检测APM Agent是否启动成功
    APM Agent

查看性能监控信息

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

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

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

  • 在项目中添加一个有远程调用接口,看看能不能收集到请求调用链路;

    @ApiOperation("远程调用获取所有品牌信息")
    @RequestMapping(value = "/remoteListAll", method = RequestMethod.GET)
    @ResponseBody
    public CommonResult<List<PmsBrand>> remoteListAll() {
        //模拟耗时操作
        ThreadUtil.sleep(1, TimeUnit.SECONDS);
        //远程调用获取数据
        String response = HttpUtil.get("http://localhost:8001/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来做微服务的请求链路跟踪了;
    调用链监控

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

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

智能运维DeepTracing之APM监控系统 APM通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能消耗进行跟踪,方便工程师能够快速定位问题。 阅读详情

相关推荐

SkyWalking 搭建及简单使用、入门(Linux)

SkyWalking 搭建及简单使用、入门(Linux)

成钰的博客 1万+

九大微服务监控工具详解

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

LinkSLA的博客 3480

阿里微服务质量保障系列:性能监控

什么是性能监控,以及性能监控的对象有哪些。伴随着突发流量、系统变更或代码腐化等因素,性能退化随时会发生。如在周年庆大促期间由于访问量暴涨导致请求超时无法下单;应用发布变更后,页面频繁卡顿导致客诉上升;线上系统运行一段时间后,突然发生OOM或连接打满拒绝访问。性能退化最直观的影响就是用户体验,比如打开一个商品详情页面的耗时从0.5s上升至3s,那么用户继续浏览的意愿度就会大幅下降。当性能进一步退化至超时阈值(比如5s),就会导致无法正常提供服务,影响服务可用性,进而带来巨额的业务损失或口碑崩坏。

所寫即所思|一个阿里质量人对测试的所感所悟。 579

七个优秀微服务跟踪工具

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

Z__7Gk的博客 2170

一文读懂世界模型(World Model):AI的“数字大脑”,通往AGI的核心基石

世界模型正成为AI领域的关键技术,它让AI在虚拟环境中模拟物理世界规律并预测行动后果,从而减少现实试错成本。2018年Ha和Schmidhuber提出的VAE+RNN架构奠定基础,2022年后自监督学习推动快速发展。当前世界模型分为潜空间、生成式、强化学习和对象中心四大流派,已在机器人、自动驾驶、工业仿真等领域落地应用。尽管面临长时序预测误差等挑战,未来将向多模态建模、大模型融合等方向发展,成为实现具身智能和通用人工智能的核心基石。

m0_38116472的博客 805

基于灰度信息的图像配准方法

图像配准方法分为三种:基于灰度信息方法、基于变换域方法和基于特征方法。基于灰度信息方法是直接根据图像或图像块灰度信息进行像素上的对齐,该方法主要思想是直接最小化图像信息差异。然而,图像信息差异的判断准则衍生出不同的配准方法。常见的基于灰度信息的图像配准方法包括互相关法、互信息法和误差平方和法。本节将分别对互相关法、互信息法和误差平方和算法展开介绍,并通过MATLAB进行演示。基于灰度的图像方法容易实现,但同样存在不足。该方法对成像条件(光照,遮挡)、图像形变旋转以及噪声极其敏感,同时具有较高的计算复杂度。

weixin_42068054的博客 3776

五大最佳开源java性能监控工具

如果你正在寻找性能监控工具,不妨看看以下推荐的这五款开源工具,这些工具目前已经可以替代付费工具了,你可以看看是否是你的最佳选择。本文推荐的五款开源工具目前是开源社区中最受欢迎的。   1. Stagemonitor   Stagemonitor提供了一个Java监控代理程序,它是使用集群应用程序堆栈构建的。意思是它旨在监控在多个服务器上运行的应用程序。该工具与时间序列数据库(TSDB)

Seeker-Wu的专栏 2万+

完美解决 mysql 报错ERROR 1524 (HY000): Plugin ‘mysql_native_password‘ is not loaded

mysql 报错ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded

xiaohua616的博客 4万+

SpringCloud微服务-----skywalking链路追踪

Skywalking链路追踪

BUG专业户 1569

西门子PLC作为TCP客户端通信:TSEND_C/TRCV_C指令实战与状态机设计

在工业自动化与物联网系统中,TCP/IP通信是实现设备间数据交换的基础协议,其核心在于建立可靠的点对点连接与数据流传输。其工作原理基于客户端-服务器模型,通过三次握手建立连接,确保数据包的顺序与完整性。这项技术的工程价值在于打破了传统工控设备被动响应的局限,为实时数据主动上报、边缘计算集成提供了通用且灵活的解决方案。在工业物联网、设备远程监控、生产数据实时采集等场景中,TCP客户端模式使得PLC能够主动将产线状态、报警信息等关键数据推送至服务器或数据库,实现更及时的数据交互。本文聚焦于西门子S7-1200/

weixin_29194255的博客 361

车辆动力学仿真模型的可信度评估方法

以转向工况测试为例,实车采集的方向盘转角作为车辆动力学模型的输入,记录车辆动力学模型的横摆角速度的输出结果,计算横摆角速度的幅频特性,根据《GB/T 6323-2014 转向盘角脉冲试验》的方法,获取横摆角速度峰值、横摆角速度谐振峰频率、横摆角速度谐振峰水平,与采集的实车结果对比,并计算车辆动力学模型和实车对于关键对比参数的相对误差。由公式(2)计算可得,在制动工况和转向工况测试下,车辆动力学模型和实车的纵向车速、制动减速度、制动距离、横摆角速度基本一致,精度> 85%,具有较好的精度。

wangchen900705的博客 1958

在微服务框架Demo.MicroServer中添加SkyWalking+SkyApm-dotnet分布式链路追踪系统

1.APM工具的选取 Apm监测工具很多,这里选用网上比较火的一款Skywalking。 Skywalking是一个应用性能监控(APM)系统,Skywalking分为服务端Oap、管理界面UI、以及嵌入到程序中的探针Agent部分,大概工作流程就是在程序中添加探针采集各种数据发送给服务端保存,然后在UI界面可以看到收集过来的各种监测数据,来完成它的核心使命:性能监控和分布式调用链追踪能力。下图是skywalking官方的一个图,也可以说明这三者之间的关联关系 2.服务端(OAP)和界面(UI)的

Peyshine 470

『言善信』Fiddler工具 — 1、Fiddler介绍与安装

文章目录1、Fiddler简介2、Fiddler功能3、Fiddler工作原理4、Fiddler安装 1、Fiddler简介 Fiddler是强大的抓包工具之一,它能记录所有客户端和服务器之间的HTTP和HTTPS请求,是web调试的利器。 Fiddler是位于客户端和服务端之间的HTTP代理,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改。 Fiddler可以抓取支持HTTP代理的任意程序的数据包,如果要抓取https会

繁华似锦Fighting 1466

APM系统是什么?有什么用处?

APM系统可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这就是APM系统,全称是(Application Performance Monitor)。·Zipkin:由Twitter公司开源,开放源代码分布式的跟踪系统,用于收集服务的定时数据,以解决微服务架构中的延迟问题,包括:数据的收集、存储、查找和展现。谷歌公开的论文提到的 Google Dapper可以说是最早的APM系统了,给google的开发者和运维团队帮了大忙,所以谷歌公开论文分享了Dapper。

Blue92120的博客 1492

1.1 了解Spring框架 -《SSM深入解析与项目实战》

文章目录第1篇 基础概念第1章 谈谈SSM框架和Redis1.1 了解Spring框架1.1.1 如何学习Spring1.1.2 IoC(Inversion of Control 控制反转)1.1.3 AOP(Aspect Oriented Programing面向切面编程) 项目中所有的源码都可以在此链接的仓库中找到:https://github.com/chenhaoxiang/uifuture-ssm 本章非常形象的介绍了Springn中最核心的两个概念,IoC和AOP,使用了现实中的例子

谙忆-陈浩翔 2133

OceanBase备租户创建(二):通过BACKUP DATABASE PLUS ARCHIVELOG

OceanBase数据库备租户创建方法二:通过BACKUP DATABASE PLUS ARCHIVELOG功能实现,特别适用于社区版和单机版部署模式。

Sebastien23的博客 540

APM 原理与框架选型

1.应用场景 随着微服务架构的流行,一次请求往往需要涉及到多个服务,因此服务性能监控和排查就变得更复杂: -- 不同的服务可能由不同的团队开发、甚至可能使用不同的编程语言来实现 -- 服务有可能布在了几千台服务器,横跨多个不同的数据中心 因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这就是APM系统,全称...

"代码"的日常搬运 4439

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

APM监控系统 微服务接入SkyWalking

微服务监控需求 随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。这些服务可能不同编程语言开发,不同团队开发,可能部署很多副本。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。“APM系统” 就在这样的问题背景下产生了。 APM系统 从整体维度到局部维度展示各项指标,将跨应用的所有调用链性能信息集中展现,可方便度量整体和局部性能,并且方便找到故障产生的源头,生产上可极大缩短故障排除时间。 AP.

小楼一夜听春雨,深巷明朝卖杏花 1523

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Cloud Alibaba全家桶——微服务链路追踪SkyWalking

本文小新为大家带来 **微服务链路追踪SkyWalking** 相关知识,具体内容包括`SkyWalking简介`,`SkyWalking环境搭建部署`,`SkyWalking接入微服务`,`SkyWalking持久化跟踪数据`,`自定义SkyWalking链路追踪`,`SkyWalking集成日志框架`,`SkyWalking告警功能`,`SkyWalking高可用`,`SkyWalking UI介绍`等进行详尽介绍~

小新要变强的博客 5538

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

分布式链路追踪系统Skywalking_V9版本介绍

skywalking分布式链路追踪

张军伟的技术博客 5199

微服务调用链追踪框架Skywalking,看完你就懂了!

介绍了Skywalking的作用,安装方法,架构设计等等

yehongzhi1994的博客 6668

后端性能监控工具推荐,10个实用工具

以下是10个实用的后端性能监控工具,它们各有特色,能满足不同场景下的监控需求。它提供了丰富的可视化组件和强大的编辑功能,可以帮助用户轻松创建复杂的监控仪表盘。它能够暴露节点的 CPU、内存、磁盘等指标数据,为监控系统提供有力的数据支持。Prometheus 是一个开源的监控系统和时间序列数据库,具有强大的多维数据模型和灵活的查询语言。它适用于大规模分布式系统的监控,能够收集和存储各种指标数据,并提供强大的告警功能。Datadog 是一个云原生的监控和分析平台,提供了从基础设施到应用的全面监控能力。

2509_93945468的博客 426

微服务之分布式跟踪系统(springboot+pinpoint)

这篇文章介绍一下在微服务(springboot开发)的项目中使用pintpoint监控的过程及效果展示。背景随着项目微服务的进行,微服务数量逐渐增加,服务间的调用也越来越复杂,我们急切需要一个APM工具帮我们监控各个服务的性能及对服务间的调用进行跟踪,而通过调研多个开源APM工具后,最终我们选择了pintpoint。github地址是:pinpoint, 选择它有4个方面原因:pinpoint是基...

志健的博客 1万+

SkyWalking 分布式追踪系统

2.72018.09.09 19:37*字数 1376阅读 49396评论 34喜欢 44 随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 ...

terry100000的博客 487
上一篇: 用户画像 - 挖掘标签
下一篇: Flink运行架构
架构师老狼
博客等级 码龄14年 44粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值