存储和容量规划指南编辑

APM 处理和存储成本主要由事务、跨度和堆栈帧决定。

  • 事务 描述了由 Elastic APM 代理程序检测服务时捕获的事件。它们是在服务中测量的最高级别的工作。
  • 跨度 属于事务。它们测量活动的开始和结束时间,并包含有关已执行的特定代码路径的信息。
  • 堆栈帧 属于跨度。堆栈帧表示调用堆栈上的函数调用,并包含函数名称、文件名和路径、行号等属性。堆栈帧会严重影响跨度的大小。
典型事务编辑

由于 APM 数据的高度可变性,很难将事务归类为典型事务。无论如何,本指南将尝试将事务分类为*小型*、*中型*或*大型*,并根据这些分类提出建议。

事务的大小取决于语言、代理设置以及代理检测的服务。例如,自动检测具有流行技术堆栈(Web 框架、数据库、缓存库等)的服务的代理更有可能生成更大的事务。

此外,所有代理都支持手动检测。您对这些 API 的使用程度也会影响典型事务的外观。

如果您的采样率非常小,则事务将是主要的存储成本。

以下是一个推测性参考

事务大小 跨度数量 堆栈帧数量

小型

5-10

5-10

中型

15-20

15-20

大型

30-40

30-40

始终会有具有数百个跨度或堆栈帧的事务异常值,但这些异常值非常罕见。小型事务是最常见的。

典型存储编辑

请考虑以下典型存储参考。这些数字不考虑 Elasticsearch 压缩。

  • 1 个未采样的事务约为 ~1 KB
  • 1 个具有 10 个堆栈帧的跨度约为 ~4 KB
  • 1 个具有 50 个堆栈帧的跨度约为 ~20 KB
  • 1 个具有 10 个跨度的事务,每个跨度具有 10 个堆栈帧,约为 ~50 KB
  • 1 个具有 25 个跨度的事务,每个跨度具有 25 个跨度,约为 250-300 KB
  • 100 个具有 10 个跨度的事务,每个跨度具有 10 个堆栈帧,以 90% 的采样率采样,约为 600 KB

APM 数据压缩率很高,因此 Elasticsearch 中的存储成本将大大降低

  • 每秒索引 100 个未采样的事务,持续 1 小时,将产生 360,000 个文档。这些文档使用大约 50 MB 的磁盘空间。
  • 每秒索引 10 个事务,持续 1 小时,每个事务具有 10 个跨度,每个跨度具有 10 个堆栈帧,将产生 396,000 个文档。这些文档使用大约 200 MB 的磁盘空间。
  • 每秒索引 25 个事务,持续 1 小时,每个事务具有 25 个跨度,每个跨度具有 25 个堆栈帧,将产生 2,340,000 个文档。这些文档使用大约 1.2 GB 的磁盘空间。

这些示例反复索引相同的数据,变化很小。因此,观察到的 80-90% 的压缩率有些乐观。