Metadata

OpenTSDB 的主要目的是存储时间序列数据点,并允许对该数据进行各种操作。但是,这有助于了解存储了哪种数据并在处理信息时提供了一些上下文。 OpenTSDB 的元数据是有关数据点的数据。用户可以对其进行配置,以便与外部工具(例如搜索引擎或问题跟踪系统)配合使用。本章介绍了各种可用的元数据及其用途。

UIDMeta

OpenTSDB 中存储的每个数据点至少具有三个与其关联的 UID。总会有metric以及一个或多个由tagk或标签名称以及tagv或标签值组成的标签对。当这些 UID 之一的新名称进入系统时,将分配一个唯一 ID,以便始终有一个 UID 名称和数字标识符对。

每个 UID 可能还具有记录在tsdb-uid表中的元数据条目。每个 UID 可用的数据包括不可变字段,例如uidtypenamecreated时间戳,它们反映了首次分配 UID 的时间。另外,可以编辑一些字段,例如descriptionnotesdisplayName和一组custom键/值对以记录额外的信息。有关字段的详细信息,请参见/api/uid/uidmeta端点。

每当创建或修改新的 UIDMeta 对象时,如果已配置并加载了插件,它将被推送到“搜索”插件。有关 UID 值的信息,请参见UID 和 TSUID

TSMeta

OpenTSDB 中的每个时间序列都通过其度量 UID 和标记名称/值 UID 的组合来唯一标识,从而根据UID 和 TSUID创建一个 TSUID。收到新的时间序列后,可以将 TSMeta 对象记录在tsdb-uid表中由 TSUID 标识的行中。元对象包括一些不可更改的字段,例如tsuidmetrictagslastReceivedcreated时间戳,它们反映了首次接收 TSMeta 的时间。另外,可以编辑某些字段,例如descriptionnotes等。有关详情,请参见/api/uid/tsmeta

Enabling Metadata

如果要在 OpenTSDB 设置中使用元数据,则必须显式启用实时元数据跟踪和/或使用 CLI 工具。由于对性能的影响,元数据生成有多个选项,因此在启用任何这些设置之前,请在启用 Producing 的设置之前测试对 TSD 的影响。

有两种可供选择,从影响最小到影响最大。

  • tsd.core.meta.enable_realtime_uid-启用后,每当为新 Metrics,标签名称或标签值分配 UID 时,都会生成 UIDMeta 对象并将其发送到已配置的搜索插件。由于分配的 UID 很少,因此该设置不会对性能产生很大的影响。

  • tsd.core.meta.enable_realtime_ts-与tsd.core.meta.enable_tsuid_incrementingtsd.core.meta.enable_tsuid_tracking一起启用时,只要有新的时间序列到来,就会在元表中标记一个计数器或标志。 注意 :请确保启用以下设置之一,否则将不会实时跟踪元数据。

  • tsd.core.meta.enable_tsuid_tracking-启用后,每次记录数据点时,就会将1以及给定数据点的时间戳记写入tsdb-meta表。启用此设置将生成* put *数量两倍的存储空间,并且可能需要更多的内存堆。例如,单个 TSD 大约每秒 2GB 的堆应该能够实现 6,000 个数据点。

    • tsd.core.meta.enable_tsuid_incrementing-启用此设置后,写入的每个数据点都会在tsdb-meta表中增加一个与该数据点所属的时间序列相对应的计数器。当每个数据点都产生一个增量请求时,这可能会在 TSD 中产生更大的负载,并很快消耗堆空间,因此,只有当您可以将负载分散到多个 TSD 或您的写入量很小时才启用此功能。启用增量将覆盖tsd.core.meta.enable_tsuid_tracking设置。例如,单个 TSD 应当能够以约 6GB 的堆每秒实现 3,000 个数据点。

Warning

启用任何实时元数据设置时,请注意您的 JVM 堆使用情况。还要注意存储服务器,因为写入流量可能实际上增加了一倍或三倍。

对于在元数据可以写入存储之前 TSD 崩溃的情况,或者如果您未启用实时跟踪,则可以定期使用uid CLI 工具和metasync子命令来生成丢失的 UIDMeta 和 TSMeta 对象。有关信息,请参见uid

Annotations

元数据的另一种形式是* annotation *。Comments 是与时间戳和(可选)时间序列关联的简单对象。Comments 是记录事件的非常基本的方法。它们不打算用作事件 Management 或问题跟踪系统。相反,它们可以用于将时间序列链接到此类外部系统。

每个 Comments 都与开始时间戳关联。这可以确定便笺在后端存储的位置,并且可以是事件的开头和结尾,或者仅用于在特定时间点记录便笺。如果 Comments 表示时间 Span(例如在开始后的某个时间已解决的问题),则可以选择设置结束时间戳记。

此外,Comments 由 TSUID 定义。如果 TSUID 字段设置为有效的 TSUID,则 Comments 将与 ID 定义的时间序列的数据点一起存储并关联。这意味着在创建数据点查询时,将检索请求的时间范围内存储的所有 Comments,并有选择地将其返回给用户。这些 Comments 被视为“本地”。

如果 TSUID 为空,则 Comments 被视为“全局”Comments,与系统中的所有时间序列相关联。查询时,用户可以指定在查询的时间范围内获取全局 Comments。然后,这些 Comments 将与“本地”Comments 一起返回。

Comments 应具有非常简短的* description *,最多不得超过 25 个字符,因为 Comments 可能会出现在图形上。如果请求的时间 Span 包含许多 Comments,则该图形可能会被 Comments 所阻塞。然后,用户界面可以让用户选择 Comments 以检索更多细节。此详细信息可能包括冗长的“Comments”和/或键/值对的自定义 Map。

用户可以通过../api_http/annotation 上的 Http API 添加,编辑和删除 Comments。

下面是带有 Comments 标记的 GnuPlot 图形示例。请注意,只有description字段如何出现在带有记录start_time的蓝线的框中。图上只有start_time出现。

../_images/annotation_ex.png