简介编辑

Elastic APM Go 代理使您能够跟踪 Go 应用程序中操作的执行,将性能指标和错误发送到 Elastic APM 服务器。它内置支持流行的框架和工具包,例如 GorillaGin,以及支持检测 Go 内置的 net/httpdatabase/sql 驱动程序。代理还提供 API 文档 用于自定义检测。

代理如何工作?编辑

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

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

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

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

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

其他组件编辑

APM 代理与 APM 服务器ElasticsearchKibana 协同工作。APM 指南 提供了有关这些组件如何协同工作的详细信息,并提供了一个矩阵,概述了 代理和服务器兼容性