指标

编辑

Go Agent 会定期收集并报告指标。使用 ELASTIC_APM_METRICS_INTERVAL 配置来控制指标的报告频率,并使用 ELASTIC_APM_DISABLE_METRICS 禁用指标。

系统指标

编辑

Go Agent 报告基本的系统级和进程级 CPU 和内存指标。有关更多系统指标,请考虑在您的主机上安装 Metricbeat

从 Elastic Stack 6.6 版本开始,这些指标将在 APM 应用程序中可视化。

在某些情况下,来自多个节点的数据将被合并。从 Elastic Stack 7.5 版本开始,您可以为每个节点设置一个唯一的名称以避免此问题。否则,数据将根据容器 ID 或主机名单独聚合。

system.cpu.total.norm.pct

类型:scaled_float

格式:百分比

除了空闲和 IOWait 状态之外的 CPU 时间百分比,按核心数标准化。

system.process.cpu.total.norm.pct

类型:scaled_float

格式:百分比

自上次事件以来,进程消耗的 CPU 时间百分比。该值按 CPU 核心数标准化,范围为 0 到 100%。

system.memory.total

类型:long

格式:字节

总内存。

system.memory.actual.free

类型:long

格式:字节

实际内存(以字节为单位)。它是基于操作系统计算的。在 Linux 上,它由可用内存加上缓存和缓冲区组成。在 OSX 上,它是可用内存和非活动内存的总和。在 Windows 上,此值不包括系统缓存和缓冲区消耗的内存。

system.process.memory.size

类型:long

格式:字节

进程拥有的总虚拟内存。

Go 运行时指标

编辑

Go Agent 报告各种 Go 运行时指标。

目前,这些指标没有内置的可视化,因此您需要为它们创建自定义的 Kibana 仪表板。

golang.goroutines

类型:long

当前存在的 goroutine 的数量。

golang.heap.allocations.mallocs

类型:long

malloc 的数量。

golang.heap.allocations.frees

类型:long

free 的数量。

golang.heap.allocations.objects

类型:long

已分配对象的总数。

golang.heap.allocations.total

类型:long

格式:字节

在整个生命周期中分配的字节数(即使已释放)。

golang.heap.allocations.allocated

类型:long

格式:字节

已分配但尚未释放的字节数(与 runtime.MemStats 中的 Alloc 相同)。

golang.heap.allocations.idle

类型:long

格式:字节

空闲 span 中的字节数。

golang.heap.allocations.active

类型:long

格式:字节

非空闲 span 中的字节数。

golang.heap.system.total

类型:long

格式:字节

从系统获得的字节总数(来自 runtime.MemStats 的 XxxSys 的总和)。

golang.heap.system.obtained

类型:long

格式:字节

通过来自 runtime.MemStats 的 HeapSys,从系统获得的字节数。 heap_sys = heap_idle + heap_inuse。

golang.heap.system.stack

类型:long

格式:字节

从操作系统获得的堆栈内存字节数。

golang.heap.system.released

类型:long

格式:字节

释放给操作系统的字节数。

golang.heap.gc.total_pause.ns

类型:long

垃圾回收的总持续时间(以纳秒为单位)。

golang.heap.gc.total_count

类型:long

垃圾回收的总次数。

golang.heap.gc.next_gc_limit

类型:long

格式:字节

下一个垃圾回收周期的目标堆大小。

golang.heap.gc.cpu_fraction

类型:float

垃圾回收使用的 CPU 时间的比例。

应用程序指标

编辑
transaction.duration

类型:简单计时器

此计时器跟踪事务的持续时间,并允许创建显示加权平均值的图表。

字段

  • sum.us:自上次报告以来所有事务持续时间之和,以微秒为单位(增量)
  • count:自上次报告以来所有事务的计数(增量)

您可以按以下维度进行筛选和分组

  • transaction.name:事务的名称
  • transaction.type:事务的类型,例如 request
transaction.breakdown.count

类型:long

格式:计数(增量)

已为其创建分解指标 (span.self_time) 的事务数。由于 Go Agent 会跟踪采样和非采样事务的分解,此指标等效于 transaction.duration.count

您可以按以下维度进行筛选和分组

  • transaction.name:事务的名称
  • transaction.type:事务的类型,例如 request
span.self_time

类型:简单计时器

此计时器跟踪 span 的自用时间,是事务分解可视化的基础。

字段

  • sum.us:自上次报告以来所有 span 自用时间之和,以微秒为单位(增量)
  • count:自上次报告以来所有 span 自用时间的计数(增量)

您可以按以下维度进行筛选和分组

  • transaction.name:事务的名称
  • transaction.type:事务的类型,例如 request
  • span.type:span 的类型,例如 apptemplatedb
  • span.subtype:span 的子类型,例如 mysql(可选)