第一部分:设置 InfluxDB 3.0 并可视化数据

导航至

阅读本指南后,您将拥有一个功能齐全的实时数据智能系统。我们将完成完整的构建,包括添加数据库,而无需管理数据库服务器的复杂性。

简介

InfluxDB 是一个强大的时间序列平台,旨在管理和分析带时间戳的数据。这篇博文将重点介绍 InfluxDB Cloud Serverless,它是 InfluxDB 的一个完全托管、可扩展且基于使用量的版本。Cloud Serverless 消除了对基础设施管理的需求,让您可以专注于存储和分析时间序列数据。InfluxDB Cloud Serverless 非常适合个人项目、物联网和实时分析,尤其是在您希望快速部署而无需担心扩展或服务器维护时。

我这篇博客的灵感来自另一个项目,也是使用 InfluxDB 创建的,即分为两部分的系列文章《PID 控制器和 InfluxDB》。该项目使用 Kafka 和其他工具来建模一个带有 PID 控制器的连续搅拌釜反应器 (CSTR),用于实时数据可视化和控制。在那篇文章之后,我在一个更简单的家庭项目设置中使用 InfluxDB Cloud Serverless 应用了类似的原理。

先决条件

在深入设置之前,让我们回顾一下设置 InfluxDB Cloud Serverless 所需的条件。

软件要求

要开始使用,您需要下载并安装一些软件包

  • InfluxDB Cloud Serverless:这种基于使用量的托管服务允许您存储和查询时间序列数据,而无需担心扩展或服务器基础设施。使用 Cloud Serverless,您只需为您使用的资源付费,这使其成为家庭项目和实验的绝佳选择。
  • macOS:由于这是一个家庭项目,我将在 macOS 上工作,通过 CLI、InfluxDB UI 和 API 与 InfluxDB Cloud Serverless 进行交互。
  • 可视化工具 (Grafana):Grafana 是一个流行的开源工具,用于可视化您的时间序列数据。
  • Telegraf:Telegraf 是一个开源数据收集代理,用于收集指标并将其发送到 InfluxDB Cloud Serverless。它可以收集系统指标或物联网数据,并以最少的设置将其发送到 InfluxDB,使其成为该项目的绝佳补充。

硬件要求

  • 互联网连接:由于 InfluxDB Cloud Serverless 在云中运行,因此稳定的互联网连接对于访问您的数据库、与平台交互以及摄取或查询数据至关重要。
  • 本地机器 (macOS):您不需要大量的本地资源,因为数据库完全在云中运行。一个基本的 macOS 设置,可以访问终端和 Web 浏览器,就足以与 InfluxDB UI 和 CLI 进行交互。

设置 InfluxDB

本节介绍在 macOS 上设置 InfluxDB Cloud Serverless 的步骤。

InfluxDB Cloud Serverless 基于云,不需要本地软件安装。设置包括创建帐户、设置数据桶、生成 API 令牌以进行安全访问,以及可选地配置 InfluxDB CLI 以进行命令行交互。下面的配置部分包括优化时间序列数据管理的技巧,例如定义保留策略和构建模式以实现高效查询和性能。

安装指南

  1. 注册 InfluxDB Cloud Serverless:
    • 前往 InfluxDB Cloud 注册页面
    • InfluxDB Cloud Serverless 提供免费层级,非常适合此家庭项目。
    • 按照提示设置您的帐户,一旦进入,您将被带到 InfluxDB UI。
  2. 创建桶:
    • 是 InfluxDB 存储时间序列数据的地方。要创建一个
      • 转到侧边栏中的“数据”>“”。
      • 点击“创建桶”,命名桶(例如,“HomeProjectData”),并定义保留期。对于大多数家庭项目,您可以设置较长的保留期,例如 30 天。
  3. 生成 API 令牌:
    • 要通过 CLI 或其他工具与 InfluxDB 交互,您需要一个 API 令牌。
      • 转到“数据”>“令牌”,然后点击“生成 API 令牌”。
      • 根据您的用例,选择“全访问令牌”或“写入令牌”。
  4. 安装 InfluxDB CLI(可选):
    • 虽然 UI 非常适合与您的数据交互,但您可能希望使用命令行。以下代码行将安装 InfluxDB CLI。
    • CLI 允许您指定连接配置预设,使您可以存储并在多组 InfluxDB 连接凭据之间快速切换
influx config create --config-name default \
    --host-url https://us-east-1-1.aws.cloud2.influxdata.com \
    --org "your_organization_name" \
    --token "your_api_token" \
    --active

配置

InfluxDB Cloud Serverless 自动处理扩展和维护,配置一些关键设置将进一步优化存储和查询。

  1. 保留策略:
    • 设置适当的保留期,以确保数据仅在必要的时间内存储。对于家庭项目,根据您的需要,这可以是 30 天或更长时间。
  2. 精度和时间戳:
    • 准确的时间戳有益于时间序列数据。确保您的数据写入是精确的,必要时精确到毫秒或纳秒级别。
    发送数据时,请在您的 API 请求或 CLI 命令中包含正确的精度级别。例如
    influx write --bucket "HomeProjectData" --precision s 'weather,location=home temperature=72.3 1672531190'
  3. 模式设计:
    • InfluxDB 会根据写入时的传入数据结构调整其 schema-on-write。您可以通过以下方式设计模式来优化性能
      • 对您经常查询的元数据使用标签(例如,位置、设备 ID)。
      • 存储会更改的数据的字段(例如,温度、CPU 使用率)。

通过执行这些步骤,您将拥有一个功能齐全的 InfluxDB Cloud Serverless 设置,该设置针对存储和查询您的时间序列数据进行了优化。下一步涉及将数据摄取到您的数据库中,并为可视化和分析做好准备。

摄取数据

一旦 InfluxDB Cloud Serverless 设置完成,下一步就是将数据放入数据库中。这涉及使用行协议写入时间序列数据,这是一种专为 InfluxDB 设计的高效文本格式。

将数据写入 InfluxDB

行协议是一种简单的格式,可以有效地将数据摄取到 InfluxDB 中。它包含以下组件

  • Measurement(测量):定义测量内容(例如,“天气”)。
  • Tags(标签):用于对数据进行分类的键值对(例如,“location=home”)。
  • Fields(字段):实际测量值(例如,“temperature=72.3”)。
  • Timestamp(时间戳):测量发生的时间(例如,“1672531190”)。

以下是使用 CLI 将单个数据点写入 InfluxDB 的示例


influx write --bucket "HomeProjectData" --precision s 'weather,location=home temperature=72.3 1672531190'

此命令将标记为 location=home 的温度测量值写入 HomeProjectData 桶。时间戳以自 epoch 以来的秒数表示。

使用 Telegraf 写入数据

使用 Telegraf 自动化数据摄取将收集各种指标并将它们转发到 InfluxDB。这对于服务器监控或物联网系统等场景特别有用。

有关将 Telegraf 与 InfluxDB 一起用于涉及 PID 控制器的 CSTR 项目的详细指南,请参见博客系列的第二部分《PID 控制器和 InfluxDB 第二部分》。这篇博文介绍了如何设置 Telegraf 来写入数据,特别是用于控制和监控连续搅拌釜反应器 (CSTR)。

对于该示例中使用的完整代码,包括 Telegraf 配置,请查看此处的代码存储库 here

无论是监控家庭项目还是大型系统,利用 Telegraf 都将自动化将各种数据点摄取到 InfluxDB 中。

降采样:它是什么以及为什么需要它

在高频时间序列应用中,大量的原始数据可能会迅速压垮数据库。这会导致性能问题和过度的存储消耗。降采样是通过在更大的时间间隔内汇总数据来降低数据分辨率的过程,例如将每秒数据转换为一分钟平均值。此方法有助于管理长期数据存储,同时保留有价值的趋势。

例如,温度传感器可能每秒收集一次数据,但您可以对其进行降采样,以便随着时间的推移仅存储一分钟平均值。降采样使您能够清晰地了解温度趋势,而无需每个数据点,从而减少存储和查询开销。

虽然降采样是管理大型数据集的有效方法,但它是一项高级功能,对于较小规模的项目或数据摄取速率可控的项目而言,可能不是必需的。对于具有高频数据的项目,降采样可以优化存储和查询性能,但如果您正在处理较小规模的项目,则可以跳过此步骤。降采样对于随着时间的推移降低数据分辨率特别有用,并且通常用于更大、更复杂的系统中。

Quix.io 如何帮助降采样

Quix.io,一个实时流媒体平台,可以通过在将数据发送到 InfluxDB 之前处理数据转换和聚合来协助降采样。通过集成 Quix.io,可以实时处理和动态降采样实时数据流,从而减轻 InfluxDB 的负载。这对于需要快速摄取和处理高频数据的用例特别有用。

博客文章《InfluxDB 的 Quix 社区插件》解释了 Quix.io 如何与 InfluxDB 集成以处理数据降采样等流媒体任务,从而提供了一种可扩展且高效的方式来管理实时数据。

使用 Quix.io,可以在上游执行降采样等复杂操作,从而确保只有最相关和聚合的数据到达 InfluxDB。这允许高效的长期存储和更快的查询,同时保持来自高频数据流的关键见解。

可视化数据

数据可视化对于有效解释时间序列数据至关重要。InfluxDB 在其用户界面中提供了内置的可视化工具,允许用户直接浏览和分析数据。Grafana 等外部工具是可视化数据的另一种选择,为更复杂的仪表板提供额外的灵活性和自定义性。

本节将首先介绍如何使用 InfluxDB 的原生可视化功能,然后解释如何设置和使用 Grafana 以增强数据可视化。

使用 UI 可视化数据

InfluxDB 的 UI 提供了强大的功能,可以直接可视化您的数据并与之交互。以下是如何充分利用它

访问数据浏览器
  1. 登录到 InfluxDB Cloud UI:
    • 导航到您的 InfluxDB Cloud Serverless 帐户并登录。
  2. 打开数据浏览器:
    • 从左侧菜单中,选择“数据浏览器”。这是在 InfluxDB 中查询和可视化数据的主要界面。

查询和可视化数据
  1. 选择合适的桶:
    • 确保从下拉菜单中选择正确的桶(例如,“HomeProjectData”)。
  2. 使用查询构建器构建查询:
    • 按 Measurement 过滤:
      • 点击“过滤器”,然后选择您要可视化的 measurement(例如,“天气”)。
    • 按 Fields 过滤:
      • 选择要包含的特定字段(例如,“温度”、“湿度”)。
    • 按 Tags 过滤:
      • 应用任何必要的标签过滤器以缩小数据范围(例如,“location = home”)。
  3. 设置时间范围:
    • 调整屏幕顶端的时间范围选择器,以指定您要查看数据的期间(例如,过去 24 小时、过去 7 天)。
  4. 可视化数据:
    • 数据将自动在查询构建器下方的图表中显示。
    • 更改可视化类型:
      • 点击“可视化”选项卡。
      • 选择所需的可视化类型(例如,折线图、条形图、仪表盘)。
  5. 自定义可视化:
    • 修改可视化属性,例如轴标签、颜色、图例和阈值,以增强可读性和洞察力。

使用 Grafana 进行高级可视化

Grafana 是一个流行的仪表板选择,因为它具有自定义功能和丰富的功能。将 Grafana 与 InfluxDB 集成可以实现无缝的数据浏览和可视化,为用户提供工作流程中详细的交互式仪表板。

Grafana 的安装和配置
在 macOS 上安装 Grafana:
  1. 下载 Grafana:
    • 访问 Grafana 下载页面并选择 macOS 安装程序。
  2. 安装 Grafana:
    • 运行下载的安装程序并按照屏幕上的说明完成安装。
  3. 启动 Grafana:
    打开终端并启动 Grafana 服务器
    brew services start grafana
    • 注意:如果 Grafana 是通过 Homebrew 安装的,则可以使用上面提供的命令启动它。如果使用 macOS 包安装,则可以从“应用程序”文件夹或使用适当的启动脚本通过命令行启动 Grafana。
  4. 访问 Grafana UI:
    • 打开 Web 浏览器并导航到 http://localhost:3000。
    • 使用默认凭据登录
      • 用户名admin
      • 密码admin
    • 首次登录时,系统将提示您设置新密码。

将 Grafana 连接到 InfluxDB Cloud Serverless

  1. 添加 InfluxDB 作为数据源:
    • 在 Grafana 中,点击左侧菜单中的“齿轮”图标(配置),然后选择“数据源”。
    • 点击“添加数据源”,然后从列表中选择“InfluxDB”。
  2. 配置 InfluxDB 数据源:
    • 查询语言:选择 Flux
    • URL:输入 InfluxDB API URL,可以在您的 InfluxDB Cloud 帐户中找到。它通常看起来像 https://us-west-2-1.aws.cloud2.influxdata.com
    • 组织:输入您的 InfluxDB 组织名称。
    • 身份验证:
      • 令牌:粘贴您之前从 InfluxDB 帐户生成的 API 令牌。
    • TLS/SSL 设置:
      • 确保选中“使用凭据”。
      • 根据您的安全要求设置“TLS 客户端身份验证”和“跳过 TLS 验证”(通常保留默认设置)。
    • 默认桶:
      • 指定默认使用的桶(例如,“HomeProjectData”)。
    • 点击“保存并测试”以验证连接。成功的消息应确认 Grafana 已连接到 InfluxDB。
在 Grafana 中创建仪表板
  1. 创建新仪表板:
    • 点击左侧菜单中的“加号 (+)”图标,然后选择“仪表板”。
    • 点击“添加新面板”以开始创建新的可视化效果。
  2. 使用查询构建器
    • 查询编辑器中,选择您的 InfluxDB 数据源。
    • 使用查询构建器为您的数据选择指标、字段和过滤器。
  3. 自定义可视化:
    • “可视化”选项卡中选择适当的可视化类型(例如,时间序列、仪表盘、热图)。
    • 配置可视化设置,例如标题、图例、坐标轴和配色方案,以增强数据的呈现效果。
  4. 应用并保存:
    • 配置查询和可视化后,单击“应用”将其添加到仪表盘。
    • 保存仪表盘以供将来使用,并为其分配一个反映其用途的名称。

结论

InfluxDB Cloud Serverless 提供了一个可扩展的、完全托管的解决方案,用于处理时间序列数据,并消除了手动基础设施管理。Cloud Serverless 非常适合任何规模的项目。

这篇文章介绍了 InfluxDB Cloud Serverless 的设置,包括数据摄取、可视化和警报配置。带有 PID 控制器的 CSTR 项目是关于如何使用 Telegraf 将实时数据摄取到 InfluxDB 中的一个示例。

在下一篇文章中,我们将探讨 InfluxDB 3.0 架构,深入了解数据库如何高效地处理大规模时间序列数据处理和存储,为现代数据驱动型项目提供增强的性能。