菜单
文档breadcrumb arrow Grafana 文档breadcrumb arrow 简介breadcrumb arrow 时间序列维度
Grafana Cloud Enterprise 开源

时间序列维度

时间序列简介中,介绍了 标签(也称为 标记)的概念

TSDB 的另一个特性是能够使用 标记 过滤测量数据。每个数据点都使用标记进行标记,以添加上下文信息,例如测量是在哪里进行的。

对于时间序列数据,数据通常包含多个系列,是一个由多个时间序列组成的集合。许多 Grafana 数据源支持这种类型的数据。

Temperature by location

常见的情况是针对具有一个或多个附加属性作为维度的测量发出单个查询。例如,查询温度测量以及位置属性。在这种情况下,该单个查询会返回多个系列,并且每个系列都具有唯一的位置作为维度。

为了在时间序列集合中识别唯一的系列,Grafana 将维度存储在 标签 中。

标签

Grafana 中的每个时间序列都可以选择包含标签。标签是用于标识维度的键/值对集合。示例标签可以是 {location=us}{country=us,state=ma,city=boston}。在时间序列集合中,其名称和标签的组合标识每个系列。例如,temperature {country=us,state=ma,city=boston} 可以标识美国波士顿市的温度值系列。

不同的时间序列数据源要么原生存储维度,要么采用常见的存储模式,以便将数据提取到维度中。

时间序列数据库 (TSDB) 通常原生支持维度。Prometheus 也将维度存储在 标签 中。在 Graphite 或 OpenTSDB 等 TSDB 中,则使用 标记 一词。

在 SQL 等表格数据库中,这些维度通常是查询的 GROUP BY 参数。

表格格式的多维度

在返回表格响应的 SQL 或类 SQL 数据库中,附加维度通常表示为查询响应表中的列。

单维度

例如,考虑一个查询,例如

sql
SELECT BUCKET(StartTime, 1h), AVG(Temperature) AS Temp, Location FROM T
  GROUP BY BUCKET(StartTime, 1h), Location
  ORDER BY time asc

此查询将返回一个具有三列的表格,其数据类型分别为时间、数字和字符串

StartTimeTempLocation
09:0024LGA
09:0020BOS
10:0026LGA
10:0022BOS

表格格式是一种 长格式 时间序列,也称为 高格式。它具有重复的时间戳和 Location 中的重复值。在这种情况下,该集合中有两个时间序列,分别被标识为 Temp {Location=LGA}Temp {Location=BOS}

从该集合中提取各个时间序列的方法是:使用时间类型列 StartTime 作为时间序列的时间索引,使用数字类型列 Temp 作为系列名称,并使用字符串类型列 Location 的名称和值构建标签,例如 Location=LGA。

多维度

如果更新查询以选择并按多个字符串列进行分组,例如,GROUP BY BUCKET(StartTime, 1h), Location, Sensor,那么将添加一个附加维度

StartTimeTempLocationSensor
09:0024LGAA
09:0024.1LGAB
09:0020BOSA
09:0020.2BOSB
10:0026LGAA
10:0026.1LGAB
10:0022BOSA
10:0022.2BOSB

在这种情况下,表示维度的标签将基于两个字符串类型列 LocationSensor 拥有两个键。此数据会产生四个系列:Temp {Location=LGA,Sensor=A}Temp {Location=LGA,Sensor=B}Temp {Location=BOS,Sensor=A}Temp {Location=BOS,Sensor=B}

注意

目前,在 Azure Monitor 服务中的日志查询中,只有 7.1 及更高版本才支持多于一个维度。

注意

Grafana 不支持将多个维度映射到多个告警的方式,而是将它们视为单个告警的多个条件。有关更多信息,请参阅关于以下内容的文档:

使用多个系列创建告警.

多个值

对于类 SQL 数据源,可以选择多个数值列,并可选择使用附加字符串列作为维度。例如,AVG(Temperature) AS AvgTemp, MAX(Temperature) AS MaxTemp。如果与多个维度结合,这可能会产生很多系列。目前,选择多个值仅设计用于可视化。

有关表格时间序列格式以及如何提取维度的更多技术信息,请参阅开发者文档中关于数据帧作为时间序列的内容