首页   快速返回

elastic APM 介绍     所属分类 elasticsearch
elastic的APM来源于opbeat

Opbeat由丹麦初创团队创立于2013年,专门从事运维软件的开发,其主打产品即是APM运维软件。
被elastic收购之后,opbeat已经于2018年5月份,正式关闭网站和社区,转到了elastic APM上。

Elastic APM is an application performance monitoring system built on the Elastic Stack. 
It allows you to monitor software services and applications in real time, 
collecting detailed performance information on response time for incoming requests, 
database queries, calls to caches, external HTTP requests, etc. 
This makes it easier to pinpoint and fix performance problems quickly.

application performance monitoring

Elastic APM 由四个基本组件构成
APM agents
APM Server
Elasticsearch
Kibana APM UI

APM agent 
支持node、python、ruby、js,java和golang。
apm agent会检测代码并在运行时收集性能数据和错误。此数据缓冲一小段时间并发送到APM服务器。

APM Server 
用Go编写,通常在专用服务器上运行。
默认侦听端口8200,并通过JSON HTTP API从代理接收数据。根据该数据创建文档并将其存储在ES中。

ES 用于存储APM性能指标并利用其聚合。

Kibana
使用APM Kibana UI 可视化APM数据。


APM server是一个单独的组件 ,有助于保持agent的轻量化,
防止某些安全风险,并提高整个elastic stack和APM stack的兼容性。

APM agent从其已监测的应用程序中捕获不同类型的信息,称为事件。事件可以是Errors,Spans或Transactions。

Errors 包含捕获的错误或异常的相关信息。
Spans 包含已执行的特定代码路径的相关信息。它们从活动的开始到结束进行测量,并且可以与其他跨度建立父/子关系。
Transactions是一种特殊的跨度,具有与之关联的额外元数据。
可以将Transactions视为服务中衡量的最高级别的工作。例如提供HTTP请求或运行特定的后台作业。

Real User Monitoring捕获用户与Web浏览器等客户端的交互。
javascript agent是Elastic的RUM agent。使用它,需要在APM server中启用RUM支持。
RUM JavaScript agent监视客户端应用程序中的真实用户体验和交互。

能够测量诸如time to first byte之类的指标。
而domInteractive,domComplete这类指标可以帮助发现客户端应用程序中的性能问题以及与服务器端应用程序通信延迟的相关问题。


分布式跟踪(Distributed trace)
通过分布式跟踪,可以在一个视图中分析整个微服务架构的性能。

通过分布式跟踪,request和transactions将链接在一起形成trace,
即transactions和spans共同构成了一个Trace。trace不是事件,而是将具有公共根(traceId)的事件组合在一起。
从中可以端到端的检测request的性能,以及哪些service是该request服务的一部分。
分布式追踪可以监控整个调用链,能够将各个事务的性能进行上下文分析,从而快速查明最终影响用户体验的瓶颈。

目前Distributed trace还只是Beta版本

上一篇     下一篇
YAML简单介绍

kibana简单介绍

kafka的代理分区和副本状态

logstash介绍及其替代方案

影响生活的14个心理效应

一盘红烧肉告诉你本科硕士博士论文的区别