使用 Grafana 和 InfluxDB 构建家庭互联网速度测试

导航至

这篇文章最初发布于 The New Stack,并经许可在此处转载。

关于如何使用时间序列数据测试您的家庭互联网速度的教程。

时间序列数据在日常生活中无处不在。收集、存储和分析时间序列数据可以清晰地了解几乎所有事物。时间序列数据存在于外太空和您的家中。时间序列数据还可以解答一个令人困扰的问题:“我是否获得了我付费的互联网速度?” 本教程没有撰写另一篇文章介绍 InfluxDB 如何将时间序列数据转化为实时洞察,而是向您展示如何跟踪您的互联网速度,并最终解答您的问题,即您的互联网是否真的太慢,或者您是否需要深呼吸一下。

本教程使用 TIG 堆栈,其中包括 TelegrafInfluxDB Cloud ServerlessGrafana。有关此“TIG”堆栈的详细信息,请查看这篇文章。本教程中的时间序列数据直接来自您的家庭互联网。Telegraf 的家庭互联网速度插件将收集数据。家庭互联网速度插件使用 Ookla 的 Speedtest 来测试用户的互联网速度和质量。该测试定位最近的服务器,找到最佳延迟,然后从选定的服务器下载和上传文件,以捕获用户的互联网连接速度。

所需材料

开始之前,请确保您拥有以下内容

第一部分:InfluxDB Cloud Serverless

登录到 InfluxDB Cloud Serverless 并转到资源中心,导航到“添加数据”并选择“配置代理”。这将带您进入 Telegraf 部分。然后选择“创建配置”

Login to InfluxDB Cloud Serverless

使用“存储桶”下拉菜单选择现有存储桶或创建新存储桶。然后向下滚动 Telegraf 插件,直到到达“互联网速度”插件。单击“互联网速度”插件,然后单击出现在右下角的蓝色“继续配置”按钮。

create telegraf configuration

命名配置。您可以根据需要添加简短描述。通过选择“保存并测试”完成此部分

complete telegraf configuration

接下来,打开您的终端。如果您还没有存储桶的 API 令牌,请在 API 令牌选项卡中创建一个。获得具有所需设置的令牌后,复制 API 令牌并将其粘贴到终端中,然后将其保存到文本垫页面。此令牌将在您离开此页面后立即消失,因此保存它非常重要。复制“启动 Telegraf”命令并将其粘贴到文本垫中。

API token for your bucket

单击“完成”以关闭窗口。

一旦“创建 Telegraf 配置”窗口关闭,您将看到您刚刚创建的 Telegraf 配置的名称出现在屏幕的主要部分。单击该配置的名称。在 [agent] 下方,您将看到 interval = “20s”,因此将其更新为 interval = “60s”。 这为 Telegraf 提供了更长的窗口来从速度测试服务器收集数据。

Edit telegraf configuration

找到包含 token = $INFLUX_TOKEN 的行,并将 $INFLUX_TOKEN 值替换为您之前复制的 API 令牌。通过选择“保存更改”完成此步骤

locate INFLUX TOKEN

将文本垫中的整个“启动 Telegraf”命令粘贴到您的终端中。该命令包括 telegraf -- config + URL 这是启动 Telegraf 唯一需要的命令。下图描绘了成功启动的 Telegraf 实例的样子

successfully started Telegraf instance

第一部分的最后一件事是观看数据出现。前往数据浏览器(页面左上角的图形图标)。您可以立即使用 SQL查询数据。您可以按字段或标签组织查询。数据浏览器包括一个下拉菜单 UI,这意味着您不需要具备深入的 SQL 知识即可执行查询。

Data Explorer

第二部分:使用 Grafana 配置和可视化数据

第二部分遵循本教程,其中还包括 YouTube 视频组件。

启动 Grafana Cloud。单击右上角的“连接数据”。选择 FlightSQL,然后在右上角选择“添加新数据源”。选择“通过 Grafana.com 安装”以安装 FlightSQL

install FlightSQL

单击 FlightSQL 插件中的设置。主机名来自 InfluxDB Cloud Serverless。主机名是省略协议的 URL。

settings FlightSQL Plugin

对于端口,定义安全端口 443。整个 Host:Port 最终看起来类似于这样

us-east-1-1.aws.cloud2.influxdata.com:443

下一步是定义身份验证类型。从下拉菜单中选择“令牌”,因为 InfluxDB Cloud Serverless 使用令牌。导航回 InfluxDB Cloud Serverless,因为 InfluxDB 生成令牌。

在 InfluxDB Cloud Serverless 的主菜单中,导航到访问令牌管理器 > 转到令牌。选择生成 API 令牌 > 所有访问 API 令牌。如果需要,编写描述并保存。复制令牌,因为它在您关闭窗口后将消失。导航回 Grafana。

进入 Grafana 后,将所有访问令牌粘贴到文本框中。然后启用 TLS/SSL。这样就完成了基本连接设置。

complete connection setup

最后的设置步骤是启用元数据。元数据精确定义了在 InfluxDB Cloud Serverless 中查询的位置。我们按存储桶查询,存储桶本质上是 InfluxDB 内的自身数据库。我们将使用键“bucket-name”,值将与发送家庭互联网数据的存储桶名称相同。

Enabling metadata

完成后,单击“保存并测试”。如果一切设置正确,将出现“确定”消息。

Save and test

我们在 Grafana 配置中的下一步是构建仪表板。导航到仪表板面板并创建一个新仪表板。选择“添加新面板”。新窗口打开后,您将能够在页面中间附近的 SQL 编辑器上方看到 FlightSQL 数据源。Grafana 帮助生成 SQL 并允许自定义 SQL 生成。本示例使用自定义 SQL 生成。要打开自定义 SQL 编辑器,请单击“编辑 SQL”。

我们将要使用的自定义 SQL 查询是这样的

SELECT time, download
FROM "internet_speed"
WHERE $__timeRange(time)

此查询从存储桶 internet_speed 中选择时间和下载字段。$__timeRange(time) 意味着我们可以从下拉菜单中更新时间范围。单击面板右上角的圆形箭头可创建或刷新图像。

building the dashboard

第三部分:数据分析

查看上面的图表,很明显我的互联网速度大多在 650-800mbs 范围内。我的分析第一步是确定外部因素是否影响下载速度。接下来我要做的是将 server_id 添加到我的查询中。

要按标签查询,只需在引号中添加标签名称即可。在本例中,新的查询行看起来像 SELECT time, download, "server_id"

Grafana 使用一个名为“转换”的工具按标签组织结果。单击“转换”,我们将要使用的转换是“按值分区”。单击选择字段 > server_id。结果面板现在包括每个服务器 ID 的下载速度

Data Analysis

这仅仅是开始。还有哪些其他因素在起作用?延迟如何影响下载?您认为哪些标签和字段重要?您的互联网速度是否达标?

加入时间序列数据革命

这只是广阔的时间序列数据世界中的冰山一角。时间序列数据无处不在,但借助 TIG 堆栈,设置永远不必过于复杂,并且实时洞察始终可用。

要继续在我们的社区中工作,请查看我们的社区页面,其中包括我们 Slack 的链接以及更多帮助您入门的酷炫项目。