【最佳实践】阿里云Elasticsearch应用性能监控分析(APM)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本文介绍了阿里云Elasticseasrch APM服务概念架构及功能,以及如何快速接入并使用,通过阿里云托管的Elasticsearch 应用性能监控(APM)服务,您可以结合阿里云Elasticsearch实现系统可观测性能力搭建。

通过阿里云托管的Elasticsearch 应用性能监控(APM)服务,您可以结合阿里云Elasticsearch实现系统可观测性能力搭建。本文介绍了阿里云Elasticseasrch APM服务概念架构及功能,以及如何快速接入并使用。


申请APM首月100元试用:https://survey.aliyun.com/apps/zhiliao/j_9SKp6x_

了解阿里云Elasticsearch 应用性能监控(APM)详情:https://help.aliyun.com/document_detail/326325.html


一 背景信息

可观测性的本质是度量您的基础设施、平台和应用程序,以了解它是如何运行的。与传统监控运维相比,目前主流的监控更加注重发现与预警问题,而可观测性的终极目标是为一个复杂分布式系统所发生的一切给出合理解释。监控更注重软件的交付过程中以及交付后的服务状态,而可观测性则要为全研发与运维的生命周期负责。


日志、基础架构指标以及APM应用程序性能监测构成了可观测性的三要素。其中,APM弥补了指标和日志之间的差距。虽然日志和指标往往更具交叉性,涉及基础架构和组件,但APM更侧重于应用程序,允许IT和开发人员监测其堆栈的应用层,包括最终的用户体验。


将APM添加到系统监测中,您可以:

  • 了解服务的时间花在什么上,以及它崩溃的原因。
  • 了解服务如何相互交互,以及它的可视化瓶颈。
  • 主动发现并修复性能瓶颈和错误。
  • 提高开发团队的生产力。
  • 在浏览器中跟踪终端用户体验。


APM通常被应用于以下场景:

  • 用户体验监控:通过监控用户的行为提升用户体验。例如监控用户和Web界面或客户端的交互,并记录交互事件的时间。
  • 运行时应用程序架构:理解服务间的依赖关系、架构中应用程序交互的网络拓扑。
  • 业务事务(Business transaction):产生有意义的SLA报告,并从业务角度提供有关应用程序性能的趋势信息。
  • 组件监控(Deep dive component monitoring):通常需要安装Agent并且主要针对中间层,包括Web服务器、应用和消息服务器等。健壮的监控应该能显示代码执行的清晰路径,因为这一维度和上述第二个维度紧密相关,APM产品通常会将这两个维度合并作为一个功能。
  • 分析或报告(Analytics/Reporting):将从应用程序中收集的一系列指标数据,标准化地展现成应用性能数据的通用视图。


阿里云托管的Elastic APM和目前比较流行的开源APM系统Apache SkyWalking的能力对比情况请参见能力对比


二 架构及数据模型

阿里云Elasticsearch应用性能监控分析服务,支持基于开源Elastic APM构建云上一键托管的APM Server服务,并灵活对接阿里云Elasticsearch服务,能够为您提供高效的应用程序性能优化与监控能力。整体功能模块架构如下。

image.png


Elastic APM由四个模块组成,详细信息请参见应用性能监控分析服务介绍。其中APM Agent采集器从其监测的应用程序中收集不同类型的信息和数据,这些被称为事件。采集器收集数据后将这些事件流式传输到APM Server,由Server验证并处理事件。事件支持的类型包括Spans、Transaction、Errors和Metrics:


  • Spans:范围事件类型。包含有关已执行的特定代码路径的信息。它们从活动的开始到结束进行度量,可以与其他Span具有父或子关系。
  • Transaction:事务事件类型。是一种特殊的Span(没有父Span,只能从中派生出子Span,可以理解为“树”这种数据结构的根节点),具有与之关联的额外元数据。你可以将Transactions视为您在服务中衡量的最高级别的工作,例如服务中的请求、提供的HTTP请求或运行的特定的后台作业等。
  • Errors:错误事件类型。包含相关的原始异常信息,或发生异常时创建的日志信息。
  • Metrics:指标事件类型。APM Agent自动获取基本的主机级别指标,包含系统和进程级别的CPU和内存指标。除此之外还可获取特定于代理的指标,例如Java Agent中的JVM指标和Go代理中的Go运行时指标。


三 前提条件

创建阿里云Elasticsearch 7.10版本实例,建议选择日志增强版,以满足应用性能监控场景下低成本海量数据写入及存储的需求。


四 使用限制

阿里云APM Server仅支持与阿里云Elasticsearch 7.10版本集成。


五 操作流程

步骤一:创建APM Server实例

  1. 登录阿里云Elasticsearch控制台
  2. 进入APM应用性能监控控制台。
  1. 在顶部菜单栏处,选择地域。
  2. 在左侧导航栏,单击APM应用性能监控
  1. APM Server管理页面,参见创建APM Server实例,创建APM Server实例。其中专有网络需要与待监控的客户端服务(APM Agent)所在的专有网络保持一致。实例创建成功后,您可以单击对应实例右侧的实例管理,查看实例的访问地址等基本信息。

image.png


步骤二:配置APM Agent

  1. APM Server管理页面,单击APM数据采集
  2. Agent数据采集对话框中,单击与您客户端相同语言的页签,根据提示配置数据采集。

image.png

配置完成后,代理程序会结合应用程序收集性能指标和错误,最终将收集到的所有数据发送至Server端。以Java为例,配置方法如下:

  1. 参见High Level REST Client(7.x),配置应用程序访问阿里云Elasticsearch,在pom依赖中添加APM Agent依赖。
<dependency>
  <groupId>co.elastic.apm</groupId>
  <artifactId>elastic-apm-agent</artifactId>
  <version>1.27.0</version>
</dependency>


b. 在Maven Central中下载应用兼容的代理文件。

c. 设置启动参数,并使用javaagent参数启动应用。

java -javaagent:/root/elastic-apm-agent-1.27.0.jar \
     -Delastic.apm.service_name=my-application \
     -Delastic.apm.server_urls=http://apm-cn-tl32fxqq****.apm.elasticsearch.aliyuncs.com::8200 \
     -Delastic.apm.secret_token= \
     -Delastic.apm.application_packages=org.example \
     -jar elastic.jar
  • apm-agent-java-0.1.2.jar:需要替换为您上一步下载的代理文件的名称,包含文件类型后缀(.jar)。
  • Delastic.apm.server_urls:将该参数值替换为您APM Server实例的访问地址。实例创建成功后,单击对应实例右侧的实例管理,即可获取实例的访问地址。


步骤三:在Kibana中进行应用性能分析

  1. 登录步骤一:创建APM Server实例时,所关联的Elasticsearch实例的Kibana控制台。登录Kibana控制台的具体操作,请参见登录Kibana控制台
  2. 根据页面提示进入Kibana主页,单击右上角的Dev tools

image.png

  1. Console页签,运行以下脚本,开启自动创建APM onboarding索引。
PUT _cluster/settings
{
  "persistent": {
    "action.auto_create_index":"+.*,+apm-7.10.2-onboarding-*,-*"
  }
}
  1. 查看APM中包含的所有服务。

image.png

  1. 在页面左上角单击image.png图标,展开左侧导航栏。
  2. 在左侧导航栏,单击Observability下的APM
  3. Services页签下查看APM的所有服务。
  1. 单击对应服务,查看服务的具体信息。petclinic-spring服务为例,服务信息如下图(每项服务都具有类似的布局)。

image.png

  • 左上角显示了响应时间的平均值、p95和p99值,以显示发生异常的具体时间。同时您可以在图表上隐藏不关注的数值曲线,以便更好地了解异常值对整个服务影响。将鼠标移到任何一个图表上时,可以得到一个弹出窗口显示当时的具体摘要。从图中可以看出,响应时长的突增没有导致任何服务器发生500响应错误。
  • 通过查看下方请求明细,您可以看到应用程序中每个请求都来自不同的节点,您可以通过使用各种代理API来扩充默认节点。支持按列标题、响应时长和影响列排序,影响列考虑了对应请求的延迟和热度数据。以影响最高的getOwners请求为例 ,它的平均延迟并不高,为96毫秒。单击该请求名称,可以看到对应请求的详细信息,图中反应最慢的请求也不到一秒钟。

image.png

  • 向下滚动,可以看到该请求处理的操作瀑布视图。其中有很多SELECT语句正在进行,使用APM能够看到正在执行的实际查询。

图 1. 请求处理的操作瀑布视图

image.png

图 2. 正在执行的实际查询

image.png

  • 由于该应用程序中的多层微服务均安装了APM Agent,您可以单击View full trace,查看该请求的详细信息并显示全链路中参与处理的所有组件,从而可以实现一个从浏览器层开始的请求的分布式追踪。

图 3. 请求的详细信息

image.png

图 4. 全链路中的所有组件

image.png

  • 真实用户监测:为了从分布式跟踪中获得最大价值,您需要尽可能多地监测组件和服务,包括使用真实用户监测RUM(Real User Monitoring)。快速的服务响应时间并不意味着请求在浏览器中很快就能完成, APM能够帮助业务衡量最终用户在浏览器中的终端体验。下图的分布式跟踪显示了四种不同的服务,包含了网络浏览器等多项。

image.png



扫码加入技术交流群

参与技术讨论学习

ES2群.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
21天前
|
算法 物联网 数据库
阿里云 OpenSearch RAG 应用实践
本文介绍了阿里云OpenSearch在过去一年中在RAG方面的应用和探索。
483 2
阿里云 OpenSearch RAG 应用实践
|
29天前
|
弹性计算 运维 Java
最佳实践:阿里云倚天ECS在千寻位置时空智能服务的规模化应用
阿里云、平头哥及安谋科技联合举办的飞天技术沙龙探讨了倚天Arm架构在业务创新中的应用。活动中,千寻位置运维专家分享了将核心业务迁移到倚天处理器ECS实例的成功案例,强调了倚天处理器的高能效比和降本增效优势。迁移过程涉及操作系统、CICD系统和监控系统的适配,以及业务系统的性能测试。目前,千寻已迁移了上千台ECS实例到倚天处理器,实现了成本和效率的显著提升。未来计划继续扩展倚天处理器在核心业务和K8S中的应用。
|
28天前
|
SQL 分布式计算 监控
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
本文演示了使用 EMR Serverless Spark 产品搭建一个日志分析应用的全流程,包括数据开发和生产调度以及交互式查询等场景。
56431 7
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
|
9天前
|
监控 Java 数据安全/隐私保护
性能监控之 JMX 监控 Docker 容器中的 Java 应用
【6月更文挑战9天】性能监控之 JMX 监控 Docker 容器中的 Java 应用
35 1
|
18天前
|
运维 监控 搜索推荐
客户案例 | 阿里云向量检索 Milvus 版在识货电商检索场景的应用与实践
本文分享了阿里云向量检索 Milvus 版在识货电商检索场景的应用与实践。阿里云的 Milvus 服务以其性能稳定和功能多样化的向量检索能力,为识货团队在电商领域的向量检索场景中搭建业务系统提供了强有力的支持。
|
21天前
|
弹性计算 安全 网络安全
带你读《从基础到应用云上安全航行指南》——干货长文快收藏!阿里云专家教你如何安全访问和管理ECS资源(3)
**《从基础到应用云上安全航行指南》——阿里云专家教你如何安全访问和管理ECS资源(3)** 在阿里云的广阔云海中,ECS(弹性计算服务)资源如同航行的船只,承载着我们的业务与数据。如何确保这些
|
26天前
阿里云web应用
设备端将图片编码为base64发送至物联网平台,在web界面配置图片选择物联网平台配置的数据(base64),实现设备向云平台的图片的上传,以及在web界面上显示图片。
|
28天前
|
弹性计算 Kubernetes 监控
【阿里云弹性计算】阿里云 ECS 与 Kubernetes 集成:轻松管理容器化应用
【5月更文挑战第28天】阿里云ECS与Kubernetes集成,打造强大容器管理平台,简化应用部署,实现弹性扩展和高效资源管理。通过Kubernetes声明式配置在ECS上快速部署,适用于微服务和大规模Web应用。结合监控服务确保安全与性能,未来将深化集成,满足更多业务需求,引领容器化应用管理新趋势。
208 2
|
28天前
|
供应链 Cloud Native 安全
【阿里云云原生专栏】云原生与区块链的交响曲:阿里云 BaaS 平台的应用展望
【5月更文挑战第28天】阿里云BaaS平台融合云原生与区块链技术,提供一站式便捷、高性能且安全的区块链服务。在供应链和金融等领域应用广泛,如智能合约示例所示,助力数字化转型。未来,两者融合将深化,创造更多应用模式。企业和开发者应把握机遇,借助阿里云BaaS平台开创未来。
246 1
|
29天前
|
弹性计算 Java 关系型数据库
最佳实践:阿里云倚天ECS在千寻位置时空智能服务的规模化应用
当前,千寻已有上千台倚天ECS实例在支撑线上核心业务。

相关产品

  • 检索分析服务 Elasticsearch版