第一部分:设置InfluxDB 3.0和可视化数据
作者:Neha Julka / 开发者
2024年10月15日
导航到
阅读本指南后,您将拥有一个完整功能实时数据智能系统。我们将完成全部构建,包括添加数据库,而不必管理数据库服务器的复杂性。
介绍
InfluxDB是一个强大的时序平台,旨在管理和分析带时间戳的数据。本文将重点介绍InfluxDB Cloud Serverless,这是InfluxDB的一个完全托管、可扩展且基于使用情况的版本。Cloud Serverless消除了基础设施管理的需要,让您专注于存储和分析您的时序数据。InfluxDB Cloud Serverless非常适合个人项目、物联网和实时分析,尤其是在您想快速部署而不必担心扩展或服务器维护的情况下。
我写这篇博客的灵感是另一个与InfluxDB一起创建的项目,也是两篇系列博客PID控制器与InfluxDB。该项目使用Kafka和其他工具来模拟带有PID控制器的连续搅拌反应器(CSTR)以进行实时数据可视化和控制。在该篇博客之后,我在一个更简单的家庭项目设置中应用了类似的原则,使用InfluxDB Cloud Serverless。
先决条件
在深入研究设置之前,让我们回顾一下您需要设置InfluxDB Cloud Serverless所需的内容。
软件需求
要开始,您需要下载和安装几个软件包
- InfluxDB 云无服务器:这项基于使用情况的管理服务允许您存储和查询时序数据,无需担心扩展或服务器基础设施。使用云无服务器,您只需为使用量付费,使其成为家庭项目和实验的理想选择。
- macOS:由于这是一个家庭项目,我将使用 macOS 与 InfluxDB 云无服务器通过 CLI、InfluxDB UI 和 API 进行交互。
- 可视化工具(Grafana):Grafana 是一个流行的开源工具,用于可视化您的时序数据。
- Telegraf:Telegraf 是一个开源的数据收集代理,它收集并发送度量到 InfluxDB 云无服务器。它可以收集系统度量或物联网数据,并以最少的设置将它们发送到 InfluxDB,是此项目的绝佳补充。
硬件需求
- 互联网连接:由于 InfluxDB 云无服务器在云端运行,稳定的互联网连接对于访问数据库、与平台交互以及摄取或查询数据至关重要。
- 本地计算机(macOS):由于数据库完全在云端运行,您不需要大量的本地资源。一个基本的 macOS 设置,可以访问终端和网页浏览器,就足以与 InfluxDB UI 和 CLI 进行交互。
设置 InfluxDB
本节介绍了在 macOS 上设置 InfluxDB 云无服务器的步骤。
InfluxDB 云无服务器是基于云的,无需本地软件安装。设置涉及创建帐户、设置数据存储桶、生成 API 令牌以进行安全访问,以及可选地配置 InfluxDB CLI 以进行命令行交互。下面的配置部分包括有关优化时序数据管理的提示,例如定义保留策略和结构化模式以提高查询效率和性能。
安装指南
- 注册 InfluxDB 云无服务器:
- 前往 InfluxDB 云注册页面。
- InfluxDB 云无服务器提供免费层,非常适合这个家庭项目。
- 按照提示设置您的帐户,进入后,您将被带到 InfluxDB UI。
- 创建存储桶:
- 存储桶 是 InfluxDB 存储时序数据的地方。要创建一个
- 转到侧边栏中的 数据 > 存储桶。
- 点击 创建存储桶,命名存储桶(例如,“HomeProjectData”),并定义保留期。对于大多数家庭项目,您可以设置较长的保留期,如 30 天。
- 存储桶 是 InfluxDB 存储时序数据的地方。要创建一个
- 生成 API 令牌:
- 要使用 CLI 或其他工具与 InfluxDB 交互,您需要一个 API 令牌。
- 转到 数据 > 令牌 并点击 生成 API 令牌。
- 根据您的用例选择 所有访问令牌 或 写入令牌。
- 要使用 CLI 或其他工具与 InfluxDB 交互,您需要一个 API 令牌。
- 安装 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云服务器自动处理扩展和维护,配置一些关键设置将进一步优化存储和查询。
- 保留策略:
- 设置适当的保留期限以确保数据只存储必要的时长。对于家庭项目,这可能需要30天或更长时间,具体取决于您的需求。
- 精度和时间戳:
- 准确的时间戳对时间序列数据很有益。确保您的数据写入精确,必要时达到毫秒或纳秒级别。
influx write --bucket "HomeProjectData" --precision s 'weather,location=home temperature=72.3 1672531190'
- 模式设计:
- InfluxDB通过其写入时模式自动适应传入的数据结构。您可以通过以下方式设计模式以优化性能
- 使用标签为频繁查询的元数据(例如,位置,设备ID)。
- 存储变化的数据的字段(例如,温度,CPU使用率)。
按照这些步骤,您将拥有一个完全功能的InfluxDB云服务器设置,该设置针对存储和查询时间序列数据进行优化。下一步涉及将数据导入数据库,并为其可视化和分析做准备。
导入数据
一旦设置好InfluxDB云服务器,下一步就是将数据导入数据库。这涉及到使用行协议,一种针对InfluxDB设计的有效基于文本的格式来写入时间序列数据。
将数据写入InfluxDB
行协议是一种简单的格式,它使得将数据高效地导入InfluxDB成为可能。它包含以下组件
- 度量:定义了什么被测量(例如,“天气”)。
- 标签:用于对数据进行分类的关键值对(例如,“位置=home”)。
- 字段:实际测量的值(例如,“温度=72.3”)。
- 时间戳:测量发生的时间(例如,“1672531190”)。
以下是一个使用CLI将单个数据点写入InfluxDB的示例
influx write --bucket "HomeProjectData" --precision s 'weather,location=home temperature=72.3 1672531190'
此命令将带位置标签为home的温度测量值写入HomeProjectData存储桶。时间戳以自纪元以来的秒数表示。
使用Telegraf写入数据
使用Telegraf自动化数据导入将收集各种指标并将它们转发到InfluxDB。这在服务器监控或物联网系统等场景中特别有用。
关于使用Telegraf和InfluxDB进行CSTR项目的详细指南,包括PID控制器,可以在博客系列的第二部分中找到,请参阅PID控制器和InfluxDB第二部分。本文档介绍了设置Telegraf以写入数据的过程,特别是用于控制和监控连续搅拌槽反应器(CSTR)的过程。
有关该示例中使用的完整代码,包括Telegraf配置,请参阅代码仓库此处。
利用Telegraf可以自动将各种数据点导入InfluxDB,无论您是在监控家庭项目还是大型系统。
下采样:它是怎么回事以及为什么需要它
在高频时间序列应用中,大量原始数据可能会迅速耗尽数据库。这会导致性能问题和过度消耗存储。下采样是一种通过在较大的时间间隔上总结数据来降低数据分辨率的过程,例如将每秒数据转换为每分钟平均值。此方法有助于管理长期数据存储,同时保留有价值趋势。
例如,温度传感器可能每秒收集数据,但您可以对其进行下采样以存储随时间变化的每分钟平均值。下采样使您能够保持温度趋势的清晰图像,而无需每个单独的数据点,从而降低存储和查询开销。
虽然下采样是管理大型数据集的有效方法,但它是一个高级功能,可能对较小规模的项目或数据摄入率可管理的项目来说不是必需的。对于高频数据项目,下采样可以优化存储和查询性能,但如果你在较小规模上工作,这一步骤可以跳过。下采样特别适用于随时间降低数据分辨率,通常用于更大、更复杂的系统中。
Quix.io如何帮助进行下采样
Quix.io是一个实时流平台,可以通过处理数据转换和聚合,在下采样数据之前将其发送到InfluxDB来协助下采样。通过集成Quix.io,实时数据流可以即时处理和下采样,从而减轻了InfluxDB的负担。这对于需要快速摄入和处理高频数据的用例特别有帮助。
博客文章Quix Community Plugins for InfluxDB解释了Quix.io如何与InfluxDB集成以处理像数据下采样这样的流任务,提供了一种可扩展且高效的管理实时数据的方式。
使用Quix.io,可以在上游执行复杂的操作,如下采样,确保只有最相关和汇总的数据到达InfluxDB。这允许高效地进行长期存储和快速查询,同时保持高频数据流的关键洞察。
数据可视化
数据可视化对于有效地解释时间序列数据至关重要。InfluxDB在其用户界面内提供了内置的可视化工具,使用户能够直接探索和分析数据。Grafana等外部工具也是数据可视化的另一个选项,为更复杂的仪表板提供额外的灵活性和定制。
本节将首先介绍如何使用InfluxDB的内置可视化功能,然后解释如何设置和利用Grafana进行增强数据可视化。
使用UI进行数据可视化
InfluxDB的UI提供了直接可视化和交互数据的功能。以下是如何充分利用它的方法
访问数据探索器
- 登录InfluxDB云UI:
- 导航到您的InfluxDB云无服务器账户并登录。
- 打开数据探索器:
- 从左侧菜单选择“数据探索器。”这是在InfluxDB中查询和可视化数据的主要界面。
查询和可视化数据
- 选择适当的桶:
- 确保从下拉菜单中选择正确的桶(例如,“HomeProjectData”)。
- 使用查询构建器构建查询:
- 按测量过滤:
- 点击“过滤”并选择要可视化的测量(例如,“weather”)。
- 按字段过滤:
- 选择要包含的特定字段(例如,“temperature”,“humidity”)。
- 按标签过滤:
- 应用任何必要的标签过滤器以缩小数据范围(例如,“location = home”)。
- 按测量过滤:
- 设置时间范围:
- 调整屏幕顶部的时间范围选择器以指定要查看数据的时期(例如,过去24小时,过去七天)。
- 可视化数据:
- 数据将自动在查询构建器下方显示在图表中。
- 更改可视化类型:
- 点击“可视化”选项卡。
- 选择所需的可视化类型(例如,折线图、柱状图、仪表盘)。
- 自定义可视化:
- 修改可视化属性,如轴标签、颜色、图例和阈值,以提高可读性和洞察力。
使用Grafana进行高级可视化
Grafana因其自定义功能和丰富的特性而成为流行的仪表板选择。将Grafana与InfluxDB集成可以实现无缝的数据探索和可视化,使用户能够在工作流程中获得详细的交互式仪表板。
安装和配置Grafana
在macOS上安装Grafana:
- 下载Grafana:
- 访问Grafana下载页面并选择macOS安装程序。
- 安装Grafana:
- 运行下载的安装程序,按照屏幕上的说明完成安装。
- 启动Grafana:
打开终端并启动Grafana服务器brew services start grafana
- 注意:如果通过Homebrew安装Grafana,可以使用上述命令启动。如果通过macOS包安装,可以从应用程序文件夹或使用适当的启动脚本来启动Grafana。
- 访问Grafana UI:
- 打开网页浏览器并导航到
https://127.0.0.1:3000
。 - 使用默认凭据登录
- 用户名:
admin
- 密码:
admin
- 用户名:
- 首次登录时,将提示您设置新密码。
- 打开网页浏览器并导航到
将Grafana连接到InfluxDB无服务器云
- 将InfluxDB添加为数据源:
- 在Grafana中,点击左侧菜单中的 “齿轮” 图标(配置)并选择 “数据源”。
- 点击 “添加数据源” 并从列表中选择 “InfluxDB”。
- 配置InfluxDB数据源:
- 查询语言:选择 Flux。
- URL:输入InfluxDB API URL,可以在您的InfluxDB云账户中找到。通常如下所示 https://us-west-2-1.aws.cloud2.influxdata.com。
- 组织:输入您的InfluxDB组织名称。
- 身份验证:
- 令牌:粘贴从您的InfluxDB账户生成的早期API令牌。
- TLS/SSL设置:
- 确保选中 “凭据”。
- 根据安全要求设置 “TLS客户端认证” 和 “跳过TLS验证”(通常保留为默认设置)。
- 默认存储桶:
- 指定默认使用的存储桶(例如,“HomeProjectData”)。
- 点击 “保存 & 测试” 以验证连接。成功消息应确认Grafana已连接到InfluxDB。
在Grafana中创建仪表板
- 创建新的仪表板:
- 点击左侧菜单中的 “加号(+)” 图标并选择 “仪表板”。
- 点击 “添加新面板” 以开始创建新的可视化。
- 使用查询构建器
- 在 查询编辑器 中选择您的InfluxDB数据源。
- 使用 查询构建器 选择数据测量、字段和筛选器。
- 自定义可视化:
- 从 “可视化” 选项卡中选择适当的可视化类型(例如,时间序列、仪表盘、热图)。
- 配置可视化设置,如标题、图例、轴和颜色方案,以增强数据的展示。
- 应用并保存:
- 配置查询和可视化后,点击 “应用” 将其添加到仪表板。
- 保存仪表板以供将来使用,并为其分配反映其用途的名称。
结论
InfluxDB Cloud无服务器云提供了一种可扩展的、完全托管的解决方案,用于处理时间序列数据,消除了手动基础设施管理。无服务器云适用于任何规模的项目。
本文介绍了InfluxDB Cloud无服务器云的设置,包括数据摄取、可视化和警报配置。带有PID控制器的CSTR项目是使用Telegraf将实时数据摄取到InfluxDB的示例。
在下一篇文章中,我们将探讨InfluxDB 3.0架构,深入了解数据库如何有效地处理大规模时间序列数据处理和存储,为现代数据驱动型项目提供增强的性能。