菜单
开源

基数

基数是指给定指标系列或日志流的键/值对的总组合,例如标签和标签值,以及它们生成了多少唯一的组合。有关基数的更多信息,请参阅“什么是基数尖峰以及为何它们很重要?”这篇博文。

由于时间序列数据库 (TSDB) 的写入是串行的,高基数对写入性能影响不大。然而,基数会对查询产生重大影响,基数越高,需要迭代的项目就越多。

追踪采集和指标

Tempo 的服务器端指标生成功能通过创建基于 Prometheus 的指标来增强追踪采集功能,这些指标跟踪多种指标,例如:

  • Span 总调用次数
  • Span 延迟直方图
  • Span 总大小计数

指标生成器创建定义服务之间通过边和节点关系的指标。这些指标都可以使用一组 Prometheus 标签(键/值对)进行查询。

标签的每个新值都会增加与指标关联的活跃系列数量。(要了解有关活跃系列的更多信息,请阅读追踪活跃系列文档。)

这也被称为基数增加,为指标生成的活跃系列数量与该指标存在的标签数量以及每个标签添加的值数量成正比。

在未经修改的指标生成器实例中,会自动添加少量标签。由于像 span_kindstatus_code 这样的标签只有几个有效值,每个指标产生的活跃系列数量的最大变量取决于与追踪 span 相关的服务名称和 span 名称的数量。

还可以配置指标生成器在指标上添加额外标签,使用直接映射到这些标签的 span 属性键/值对,请参阅自定义 span 属性文档。

配置自定义属性时要小心:特定属性中出现的值数量越多,产生的活跃系列数量就越多。有关活跃系列的更多信息,请参阅活跃系列文档

假设您正在添加一个包含唯一客户 ID 作为指标标签的自定义属性。如果您有 100 个客户,这可能会将生成的活跃系列数量增加多达 100 倍(例如,从 25,000 个活跃系列增加到 250 万)。始终考虑哪些属性实际上可以作为查询指标的有用标签,以及它们会增加多少基数。

指标生成器干运行

在完全启用指标生成器之前,一个好的做法是以干运行模式运行指标生成器。使用干运行模式会生成指标,但不采集它们,因此不会将它们写入指标存储数据库。覆盖项 metrics_generator.disable_collection 就是为此用例定义的。

要进行估算,请将覆盖项设置为 true,然后照常运行指标生成器。然后,检查 tempo_metrics_generator_registry_active_series,以获取您设置的活跃系列估算值。