简介

编辑

Elastic APM Go Agent 使您能够追踪 Go 应用程序中操作的执行情况,并将性能指标和错误发送到 Elastic APM 服务器。它内置了对流行的框架和工具包(如 GorillaGin)的支持,以及对 Go 内置的 net/httpdatabase/sql 驱动程序的支持。该 Agent 还为自定义检测提供了一个 API 文档

Agent 如何工作?

编辑

Agent 包含 支持的技术 的检测模块,每个模块都提供中间件或包装器来记录有趣的事件,例如传入的 HTTP 请求、传出的 HTTP 请求和数据库查询。

要收集有关传入 HTTP 请求的数据,请为受支持的 Web 框架 之一安装路由器中间件。传入的请求将记录为事务,以及任何相关的 panic 或错误。

要收集传出 HTTP 请求的数据,请使用 module/apmhttp 检测 http.Clienthttp.Transport。要收集有关数据库查询的数据,请使用 module/apmsql,它为知名的数据库驱动程序提供检测。

为了将事务与相关的 span 和错误连接起来,并在服务之间传播跟踪(分布式跟踪),agent 依赖于 Go 的内置 context 包:事务和 span 存储在上下文对象中。例如,对于传入的 HTTP 请求,正在进行的跟踪数据将记录在可通过 net/http.Context 访问的 context 对象中。请在 上下文传播 中阅读更多相关信息。

除了捕获上述事件之外,agent 还定期收集系统和应用程序指标。此收集发生在 agent 初始化时自动启动的后台 goroutine 中。

其他组件

编辑

APM Agent 与 APM ServerElasticsearchKibana 一起工作。APM 指南 详细介绍了这些组件如何协同工作,并提供了一个概述 Agent 和 Server 兼容性 的矩阵。