如何可视化时间序列数据
在这篇技术文件中,InfluxData 首席技术官 Paul Dix 将带您了解什么是时间序列(以及不是什么),以及它与流处理、全文搜索和其他解决方案的不同之处。

通过阅读这篇技术文件,您将
- 了解时间序列数据如何无处不在,
- 了解为何专用 TSDB 非常重要。
- 阅读有关时间序列数据库如何针对时间戳数据进行优化的内容。
- 理解指标、事件和追踪之间的区别,以及时间序列数据的一些关键特征。
- 理解指标、事件和追踪之间的区别。
什么是时间序列可视化和分析?
时间序列可视化和分析让您可以可视化时间序列数据并发现趋势,以跟踪随时间的变化。时间序列数据可以在折线图、仪表盘、表格等中进行查询和绘制。
使用时间序列可视化和分析,您可以生成预测并理解您的数据。 时间序列数据 为组织提供重要价值,因为它使他们能够分析重要的实时和历史指标。数据只有在易于访问时才具有价值,因此您需要确保您正在使用一个针对存储和查询时间序列数据进行优化的数据库。这就是构建可以运行重复分析查询的仪表板成为组织跨团队公开其时间序列数据的倍增器的原因。
什么是时间序列图表?
时间序列图表指的是已在两个不同轴上视觉映射的数据点:测量的数量和时间。它们被认为是分析师快速确定从数据趋势到变化率的任何信息的理想方式。
在经典的 x-y 图中,图表的水平轴用于绘制时间的增量,而垂直轴则精确指出被测量变量的值。
为什么使用仪表板可视化时间序列数据?
仪表板是以有意义且易于理解的格式向目标受众可视化和呈现时间序列数据的好方法。
用于绘制时间序列数据的工具
有许多类型的仪表板可供选择,例如 InfluxDB 自带的仪表板,其他开源项目(如 Grafana)的仪表板,甚至特定于 IoT 的仪表板工具(如 Seeq)。这些解决方案通常带有社区构建的预制仪表板,让您可以非常快速地入门。
来自 InfluxDB 的时间序列数据也可以使用各种图形和库(如
- Plotly.js 图形库)进行自定义图形可视化,该库提供超过 20 种不同的图表类型,并将所有内容整洁地打包在一起,使用户可以轻松地重现他们自己风格和选择的图形。
- Rickshaw 库 (像 plotly.js 一样,这是建立在 d3.js 之上的)。
- Dygraphs 图表库(如下所述)。
首先,让我们讨论如何使用 InfluxDB 可视化时间序列数据,然后再讨论如何使用 Grafana 可视化。
想了解更多?
下载白皮书InfluxDB UI 可视化层
InfluxDB 允许您通过 Data Explorer UI 快速查看您存储的数据。InfluxDB 用户界面 (UI) 提供 用于构建自定义仪表板以可视化数据的工具。使用模板或 Flux (InfluxData 的函数式数据脚本语言,专为查询和分析而设计),InfluxDB 使您能够跨测量快速构建具有实时可视化和警报功能的仪表板。
时间序列数据可视化类型
InfluxDB 2.0 用户界面 (UI) 提供多种 可视化类型 ,以您用例最有意义的格式可视化您的数据。使用可用的自定义选项自定义每个可视化。
时间序列折线图和条形图
InfluxDB 2.0 UI 中的 Graph 视图允许您从多种图表类型中选择,例如折线图和条形图(即将推出)。
折线图是表示时间序列数据的最简单方法。它可以帮助查看者快速了解事物随时间的变化情况。折线图使用线连接的点(也称为趋势线)来显示因变量和自变量如何变化
- 自变量,顾名思义,不受其他参数的影响。
- 因变量取决于自变量如何变化。
对于时间可视化,时间始终是自变量,它绘制在水平轴上。然后因变量绘制在垂直轴上。
虽然上面的图表是线性插值的折线图示例(插值是在值序列中两个已知值之间估计值),但下面两个图表描绘了平滑插值和阶梯插值。
用于时间序列数据的图表 + 单一统计可视化
图表 + 单一统计 视图在折线图中显示指定的时间序列,并将最新的单一值叠加显示为大型数值。单一统计可视化显示单个数值数据点。它使用查询返回的第一个表格(或系列)中的最新点。
图表 + 单一统计可视化的主要用例是显示当前或最新值以及历史值。
以下示例显示了当前内存使用百分比以及随时间推移的内存使用情况。
热图
热图 在 x 轴和 y 轴上显示数据分布,其中颜色表示不同浓度的数据点。热图将数据点划分为“箱”——可视化的片段,在 X 轴和 Y 轴上都有上限和下限。“箱大小”选项确定每个箱的边界。落入箱内的点总数决定了其值和颜色。较暖或较亮的颜色表示较高的箱值或箱内点的密度。
如下所示,热图可用于可视化相关性。
直方图
直方图 是查看数据分布的一种方式。y 轴专用于计数,x 轴划分为箱。直方图可视化是一个条形图,显示落入“箱”内的数据点数量——X 轴的片段,具有上限和下限。
例如,下面的直方图显示了按严重程度随时间推移的错误计数。
单一统计
单一统计 视图将指定时间序列的最新值显示为数值。它使用查询返回的第一个表格(或系列)中的最新点。
以下可视化示例显示了当前内存使用率(以百分比表示)。
仪表盘
仪表盘 视图在仪表盘视图中显示时间序列的最新单一值。仪表盘可视化对于显示指标的当前值以及显示其在频谱中的位置非常有用。
以下仪表盘可视化显示了设施中蒸汽管道的压力。
表格
表格 可视化选项以表格视图显示查询结果,有时比数据的图形视图更容易分析。
表格可视化以结构化、易于阅读的表格呈现查询数据。列和行与查询输出中的列和行匹配。当在仪表板中显示许多人类可读的指标(如集群统计信息或日志消息)时,表格很有用。
散点图
散点图 视图使用散点图显示时间序列数据。散点图可以在水平轴上显示任何内容,以任何转换形式显示,并且点未连接或排序。
散点可视化将每个数据点映射到 X 和 Y 坐标。
以下示例探讨了 CPU 和内存使用率之间可能的相关性。在散点可视化控件中,点根据其组键进行区分。
什么是 Grafana?
Grafana 是一种流行的开源可视化和分析套件,主要用于时间序列数据。它提供了创建、探索和共享时间序列数据的方式,以易于理解的图形表示形式呈现。 Grafana 易于与 InfluxDB 和 Telegraf 集成 ,使传感器、系统和网络指标的监控更加容易和更具洞察力。
设置 Grafana 仪表板并将其与各种数据源集成的过程非常简单。Grafana 附带了一个功能丰富的数据源插件,用于 InfluxDB。该插件包括自定义查询编辑器,并支持注释和查询模板。通过单击 Grafana UI 中的“添加数据源”,您可以为其配置 InfluxDB。完成后,您可以选择“新建仪表板”按钮,开始可视化您感兴趣的 InfluxDB 数据。 单击此处了解如何从 InfluxDB 等数据源生成 Grafana 仪表板。 为了更全面地了解 InfluxDB 如何与 Grafana 配对,请参阅一些企业如何在 DevOps、IoT 和实时分析用例中使用 InfluxData 和 Grafana。
Grafana 图形功能包括
- 快速渲染,即使在较长的时间跨度内也是如此
- 单击并拖动以缩放
- 多个 Y 轴
- 条形图、折线图、点图
- 智能 Y 轴格式化
- 系列切换和颜色选择器
- 轴标签
- 网格阈值、轴标签
- 注释
Grafana 为构建、管理和编辑仪表板提供了高度的自定义性
- 拖放图形以重新排列
- 设置列跨度和行高
- 保存和搜索仪表板
- 导入和导出仪表板(json 文件)
- 从 Graphite 导入仪表板
- 模板
- 脚本化仪表板(从 js 脚本和 url 参数生成)
- 灵活的时间范围控件
- 仪表板播放列表
各种数据源(如 AWS CloudWatch 和 Prometheus)与 Grafana 集成以生成 Grafana 仪表板。这些仪表板非常有用,因为它们将数据汇集在一起,并帮助用户通过实时分析收集见解。无论您的数据在哪里,或存在于哪种类型的数据库中,您都可以使用 Grafana 将其汇集在一起。
Grafana 仪表板示例
时间序列自定义图表
除了各种可视化工具附带的预制仪表板外,还可以构建自定义图形,以使数据可视化适应开发人员的需求、用例或受众。以下是用于监控使用手机的太阳能电池的自定义时间序列图表的示例。
上面的图表分别显示了太阳能电池中存储的能量( Blue Planet Energy 存储单元,允许配备太阳能电池板的建筑物存储未使用的太阳能);24 小时内的电池消耗;以及随时间推移的电池存储(这为用户提供了不同的时间增量来查询)。
上面的图表显示了使用量与生产量(使寻求净零生活方式的房主能够查看他们的太阳能总产量如何比较);24 小时使用量与生产量视图;以及按设备的使用量(按寄存器,它们是断路器盒的单独监控部分)。
使用 Dygraphs 图表库构建自定义图形
自定义时间序列图表也可以使用 Dygraphs 构建——Dygraphs 是一个自 2006 年以来一直在开发的开源 JavaScript 图表库。Dygraphs 因其性能和交互性的结合而成为仪表板的吸引人的可视化。
为什么使用 Dygraphs?
- 开源
- 基于 Canvas
- 易于从零开始获得交互式图表
- 快速且灵活
Dygraphs 允许您构建自定义绘图器。绘图器选项允许您编写自己的绘图逻辑。这可用于实现强大的自定义。
在下面的图表示例中,使用了专门的绘图器来绘制条形图而不是折线图。
下面,使用了专门的绘图器将四个系列组合成一个统一的“蜡烛”图。
绘图器选项可以按系列设置,以创建混合图表。
了解如何将 dygraphs 添加到您的项目 以及如何使用它来促进交互式数据探索。
在图表上绘制一个或多个时间序列
您可以在每个图表上绘制一个或多个时间序列。图表可以是
- 分离的——可以绘制一个时间序列(每个时间序列在不同的图表上)。这些分离的图表很有用,因为它们提供了清晰整洁的视图,但可能难以进行直接比较。
- 重叠的——可以将不同的时间序列绘制在同一图表上,以便比较它们(如下面的重叠图表示例所示)。
例如,下面是一个示例重叠图,显示了 7 个股票价格的趋势线(重叠的价格和分层的趋势线)。
具有异常检测可视化的时间序列图表
时间序列图表还可以可视化异常检测(识别不符合预期或通常模式的数据)。
具有预测或趋势线的时间序列图表
时间序列图表可以显示基于 时间序列预测 开发的预测。例如, Timbergrove 将其 Digi 队列和 IBM Event Streams(托管 Kafka 服务)的数据流式传输到 InfluxDB。在这里,他们正在尝试使用内置的 Holt-Winters 预测算法 在其温度数据上生成预测
上面的图表显示了办公室温度 (F) 与时间(天)。绿线代表原始数据。蓝线代表 Holt-Winters 预测函数发出的预测。