通过Elasticsearch应用性能监控APM(Application Performance Monitoring)服务,结合阿里云Elasticsearch,您可以搭建应用性能监控系统,实现系统的可观测性。本文介绍如何通过自建APM Server将数据采集至阿里云Elasticsearch。
背景信息
可观测性的本质是度量您的基础设施、平台和应用程序,以了解它是如何运行的。与传统监控运维相比,目前主流的监控更加注重发现与预警问题,而可观测性的目标是为一个复杂分布式系统所发生的一切给出合理解释。监控更注重软件的交付过程中以及交付后的服务状态,而可观测性则要为全研发与运维的生命周期负责。日志、基础架构指标以及APM应用程序性能监测构成了可观测性的三要素。其中,APM弥补了指标和日志之间的差距。虽然日志和指标往往更具交叉性,涉及基础架构和组件,但APM更侧重于应用程序,允许IT和开发人员监测其堆栈的应用层,包括最终的用户体验。将APM添加到系统监测中,您可以:
- 了解服务的时间花在什么上,以及它崩溃的原因。
- 了解服务如何相互交互,以及它的可视化瓶颈。
- 主动发现并修复性能瓶颈和错误。
- 提高开发团队的生产力。
- 在浏览器中跟踪终端用户体验。
APM通常被应用于以下场景:
- 用户体验监控:通过监控用户的行为提升用户体验。例如监控用户和Web界面或客户端的交互,并记录交互事件的时间。
- 运行时应用程序架构:理解服务间的依赖关系、架构中应用程序交互的网络拓扑。
- 业务事务(Business transaction):产生有意义的SLA报告,并从业务角度提供有关应用程序性能的趋势信息。
- 组件监控(Deep dive component monitoring):通常需要安装Agent并且主要针对中间层,包括Web服务器、应用和消息服务器等。健壮的监控应该能显示代码执行的清晰路径,因为这一维度和上述第二个维度紧密相关,APM产品通常会将这两个维度合并作为一个功能。
- 分析或报告(Analytics/Reporting):将从应用程序中收集的一系列指标数据,标准化地展现成应用性能数据的通用视图。
前提条件
- 已创建阿里云Elasticsearch 7.10版本实例,具体操作请参见创建阿里云Elasticsearch实例。创建实例时,建议您选择日志增强版,以满足应用性能监控场景下低成本海量数据写入及存储的需求,详细信息请参见购买页面参数(增强版)。
- 已创建阿里云ECS实例,实例的操作系统类型需要为Linux。具体操作请参见自定义购买实例。
- 已在阿里云ECS实例中安装Go语言环境。说明 本文示例使用Go语言的APM Agent,因此需要安装Go语言环境。
操作流程
步骤一:搭建APM Server
- 连接ECS实例。具体操作请参见通过密码或密钥认证登录Linux实例。说明 本文档以普通用户权限为例。
- 安装APM Server。
- 修改APM Server配置。
- 启动APM Server。
sudo nohup ./apm-server -e > apmserver.log 2>&1 &
步骤二:配置APM Agent
本文以Go语言为例,其他客户端可以在APM Server的Agent数据采集对话框中查询配置,详细信息请参见步骤二:配置APM Agent。
- 安装APM Agent。
- 配置APM Agent。
- 通过APM Agent检测应用程序。
步骤三:在Kibana中查看并分析APM Server采集的数据
- 登录目标Elasticsearch实例的Kibana控制台。登录Kibana控制台的具体操作,请参见登录Kibana控制台。说明 本文以阿里云Elasticsearch 7.10版本为例,其他版本操作可能略有差别,请以实际界面为准。
- 根据页面提示进入Kibana主页,单击右上角的Dev tools。
- 在Console页签,运行以下脚本,开启自动创建APM onboarding索引。说明
- APM Server启动后Elasticsearch会自动创建APM相关索引,您可在Kibana控制台中查看。除此之外,由于阿里云Elasticsearch对自动创建索引的命名规范有要求,APM onboarding索引的命名不符合当前规范,因此您还需要手动开启自动创建APM onboarding索引。
- 以下脚本中的7.10.2为您安装的APM Server的版本号。
PUT _cluster/settings { "persistent": { "action.auto_create_index":"+.*,+apm-7.10.2-onboarding-*,-*" } }
- 查看APM中包含的所有服务。
- 在页面左上角单击
图标,展开左侧导航栏。
- 在左侧导航栏,单击Observability下的APM。
- 在Services页签下查看APM的所有服务。
- 单击对应服务的名称,查看并分析数据。
- 在页面左上角单击