Elastic APM 是一个能让你『即时』监控、观察、分析应用程序及服务的工具,透过收集应用程序内元件之间沟通时的记录,收集包含各种详细与效能相关的资讯,例如以下的资讯:
除了效能相关的资讯之外,如果处理中有发生例外状况的错误,甚至是程序错误发生时的 stacktrace 也都会被 APM 收集,另外也会顺便收集某些有支援的系统或运作环境相关的 metrics,例如:JVM metrics, Go runtime metrics。
Elastic APM 的基本架构如上图共包含四个主要的元件:
Elastic APM 的资料,每一笔都会是一个事件 (event),而这些事件总共有四种的类型:
除此之外,events 当中都可以在 APM Agent 端自行加上我们自己想收集的额外资讯,并定义在扩充的栏位当中。
以下分别对四种资料类型进行说明。
Spans (跨度,可理解成片刻的一小段时间),表示一个活动的开始到结束的记录,也就是代表一段程序执行时发生的资讯,并且因为一连串执行与处理的过程中,一个 Span 可能也会与其他的 Span 有上、下层的关系,在 Span 里面会记录:
transaction.id
:属於哪一个 Transaction。parent.id
:如果是另个 Transaction 或是 Span 有上、下层关系时,会记录他的上层。name
。type
、subtype
、action
。stacktrace
的资讯。Transactions (交易),针对一个相对於 Span 更高层级的事件 (event) 的请求与回应,例如:发送一个外部的 Request、批次的作业处理、背景执行的工作、或是在程序执行中自行定义的一个处理行为…等,都可以是一个 Transaction,在一个 Transaction 之中,可以包含 0 到多个 Spans,Transaction 里面会记录:
timestamp
。unique id
、type
、name
。environment
、framework
、language
。hostname
、IP
。pid
。domain
、port
、query string
。labels
或 custom
栏位的资讯。Errors (错误),当 APM Agent 收到 Errors 的资讯时,会产生 Errors 这样的 event,并且在里面会记录发生当时的 exception
资讯,或是 Error 发生当下的 logs
,Error 里面会记录:
exception
或 error log
所收集到的 stacktrace
资讯。culprit
记录错误发生的地方。transaction.id
。environment
、framework
、language
。hostname
、IP
。pid
。domain
、port
、query string
。labels
或 custom
栏位的资讯。Metrics (指标),APM Agent 会收集一些最基本的主机层级 (host-level) 的 metrics,例如:
trasc-id
、span-id
、parent-id
,来实现分散式追纵的功能,让我们能透过 Kibana 能轻易的观察一个横跨多个服务的请求,过程中哪个环节的执行效能较慢、或是在发生错误时能快速的查看历程中发生什麽样的事。查看最新 Elasticsearch 或是 Elastic Stack 教育训练资讯: https://training.onedoggo.com
欢迎追踪我的 FB 粉丝页: 乔叔 - Elastic Stack 技术交流
不论是技术分享的文章、公开线上分享、或是实体课程资讯,都会在粉丝页通知大家哦!
<<: Day17-TypeScript(TS)的继承(Inheritance)
>>: Day18 跟着官方文件学习Laravel-Mock
Angular 提供了 i18n 功能让我们开发专案时可以让我们的专案应在不同的国家中被使用,Loc...
前情提要 Firebase 是 Google 推出的云端後端服务平台,提供了行动端 (Android...
一边把容器建立起来,一边看有没有什麽地方要修改的~ 1.network 跟着Multi contai...
大家好,今天要介绍 Laravel 其中一个功能'加密',我会将这个加密加入我的专案实作之中。lar...
今天是弹珠台完成後的第一篇,我们依然会带大家看一些还没提到的模组,最後再来做一个小实作,实作题目先卖...