【最佳实践】阿里云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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
23天前
|
存储 人工智能 自然语言处理
Elasticsearch Inference API增加对阿里云AI的支持
本文将介绍如何在 Elasticsearch 中设置和使用阿里云的文本生成、重排序、稀疏向量和稠密向量服务,提升搜索相关性。
65 14
Elasticsearch Inference API增加对阿里云AI的支持
|
11天前
|
存储 SQL 监控
|
11天前
|
运维 监控 安全
|
1月前
|
存储 缓存 监控
深入解析:Elasticsearch集群性能调优策略与最佳实践
【10月更文挑战第8天】Elasticsearch 是一个分布式的、基于 RESTful 风格的搜索和数据分析引擎,它能够快速地存储、搜索和分析大量数据。随着企业对实时数据处理需求的增长,Elasticsearch 被广泛应用于日志分析、全文搜索、安全信息和事件管理(SIEM)等领域。然而,为了确保 Elasticsearch 集群能够高效运行并满足业务需求,需要进行一系列的性能调优工作。
83 3
|
4月前
|
存储 人工智能 自然语言处理
阿里云Elasticsearch AI场景语义搜索最佳实践
本文介绍了如何使用阿里云Elasticsearch结合搜索开发工作台搭建AI语义搜索。
17295 68
|
2月前
|
存储 缓存 自然语言处理
深度解析ElasticSearch:构建高效搜索与分析的基石
【9月更文挑战第8天】在数据爆炸的时代,如何快速、准确地从海量数据中检索出有价值的信息成为了企业面临的重要挑战。ElasticSearch,作为一款基于Lucene的开源分布式搜索和分析引擎,凭借其强大的实时搜索、分析和扩展能力,成为了众多企业的首选。本文将深入解析ElasticSearch的核心原理、架构设计及优化实践,帮助读者全面理解这一强大的工具。
177 7
|
3月前
|
机器学习/深度学习 数据采集 缓存
Elasticsearch与机器学习集成的最佳实践
【8月更文第28天】Elasticsearch 提供了强大的搜索和分析能力,而机器学习则能够通过识别模式和预测趋势来增强这些能力。将两者结合可以实现更智能的搜索体验、异常检测等功能。
103 0
|
4月前
|
存储 监控 Java
使用Elasticsearch实现全文搜索的最佳实践
使用Elasticsearch实现全文搜索的最佳实践
|
4月前
|
存储 监控 Java
使用Elasticsearch实现全文搜索的最佳实践
使用Elasticsearch实现全文搜索的最佳实践
|
8天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
21 5

相关产品

  • 检索分析服务 Elasticsearch版