使用 Grafana 和 InfluxDB 构建家庭互联网速度测试
作者:Jessica Wachtel / 产品
2023 年 10 月 04 日
导航至
这篇文章最初发布于 The New Stack,并经许可在此处转载。
关于如何使用时间序列数据测试您的家庭互联网速度的教程。
时间序列数据在日常生活中无处不在。收集、存储和分析时间序列数据可以清晰地了解几乎所有事物。时间序列数据存在于外太空和您的家中。时间序列数据还可以解答一个令人困扰的问题:“我是否获得了我付费的互联网速度?” 本教程没有撰写另一篇文章介绍 InfluxDB 如何将时间序列数据转化为实时洞察,而是向您展示如何跟踪您的互联网速度,并最终解答您的问题,即您的互联网是否真的太慢,或者您是否需要深呼吸一下。
本教程使用 TIG 堆栈,其中包括 Telegraf、InfluxDB Cloud Serverless 和 Grafana。有关此“TIG”堆栈的详细信息,请查看这篇文章。本教程中的时间序列数据直接来自您的家庭互联网。Telegraf 的家庭互联网速度插件将收集数据。家庭互联网速度插件使用 Ookla 的 Speedtest 来测试用户的互联网速度和质量。该测试定位最近的服务器,找到最佳延迟,然后从选定的服务器下载和上传文件,以捕获用户的互联网连接速度。
所需材料
开始之前,请确保您拥有以下内容
第一部分:InfluxDB Cloud Serverless
登录到 InfluxDB Cloud Serverless 并转到资源中心,导航到“添加数据”并选择“配置代理”。这将带您进入 Telegraf 部分。然后选择“创建配置”
使用“存储桶”下拉菜单选择现有存储桶或创建新存储桶。然后向下滚动 Telegraf 插件,直到到达“互联网速度”插件。单击“互联网速度”插件,然后单击出现在右下角的蓝色“继续配置”按钮。
命名配置。您可以根据需要添加简短描述。通过选择“保存并测试”完成此部分
接下来,打开您的终端。如果您还没有存储桶的 API 令牌,请在 API 令牌选项卡中创建一个。获得具有所需设置的令牌后,复制 API 令牌并将其粘贴到终端中,然后将其保存到文本垫页面。此令牌将在您离开此页面后立即消失,因此保存它非常重要。复制“启动 Telegraf”命令并将其粘贴到文本垫中。
单击“完成”以关闭窗口。
一旦“创建 Telegraf 配置”窗口关闭,您将看到您刚刚创建的 Telegraf 配置的名称出现在屏幕的主要部分。单击该配置的名称。在 [agent] 下方,您将看到 interval = “20s”,因此将其更新为 interval = “60s”。 这为 Telegraf 提供了更长的窗口来从速度测试服务器收集数据。
找到包含 token = $INFLUX_TOKEN
的行,并将 $INFLUX_TOKEN 值替换为您之前复制的 API 令牌。通过选择“保存更改”完成此步骤
将文本垫中的整个“启动 Telegraf”命令粘贴到您的终端中。该命令包括 telegraf -- config + URL
这是启动 Telegraf 唯一需要的命令。下图描绘了成功启动的 Telegraf 实例的样子
第一部分的最后一件事是观看数据出现。前往数据浏览器(页面左上角的图形图标)。您可以立即使用 SQL查询数据。您可以按字段或标签组织查询。数据浏览器包括一个下拉菜单 UI,这意味着您不需要具备深入的 SQL 知识即可执行查询。
第二部分:使用 Grafana 配置和可视化数据
第二部分遵循本教程,其中还包括 YouTube 视频组件。
启动 Grafana Cloud。单击右上角的“连接数据”。选择 FlightSQL,然后在右上角选择“添加新数据源”。选择“通过 Grafana.com 安装”以安装 FlightSQL
单击 FlightSQL 插件中的设置。主机名来自 InfluxDB Cloud Serverless。主机名是省略协议的 URL。
对于端口,定义安全端口 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。这样就完成了基本连接设置。
最后的设置步骤是启用元数据。元数据精确定义了在 InfluxDB Cloud Serverless 中查询的位置。我们按存储桶查询,存储桶本质上是 InfluxDB 内的自身数据库。我们将使用键“bucket-name”,值将与发送家庭互联网数据的存储桶名称相同。
完成后,单击“保存并测试”。如果一切设置正确,将出现“确定”消息。
我们在 Grafana 配置中的下一步是构建仪表板。导航到仪表板面板并创建一个新仪表板。选择“添加新面板”。新窗口打开后,您将能够在页面中间附近的 SQL 编辑器上方看到 FlightSQL 数据源。Grafana 帮助生成 SQL 并允许自定义 SQL 生成。本示例使用自定义 SQL 生成。要打开自定义 SQL 编辑器,请单击“编辑 SQL”。
我们将要使用的自定义 SQL 查询是这样的
SELECT time, download
FROM "internet_speed"
WHERE $__timeRange(time)
此查询从存储桶 internet_speed
中选择时间和下载字段。$__timeRange(time)
意味着我们可以从下拉菜单中更新时间范围。单击面板右上角的圆形箭头可创建或刷新图像。
第三部分:数据分析
查看上面的图表,很明显我的互联网速度大多在 650-800mbs 范围内。我的分析第一步是确定外部因素是否影响下载速度。接下来我要做的是将 server_id
添加到我的查询中。
要按标签查询,只需在引号中添加标签名称即可。在本例中,新的查询行看起来像 SELECT time, download, "server_id"
。
Grafana 使用一个名为“转换”的工具按标签组织结果。单击“转换”,我们将要使用的转换是“按值分区”。单击选择字段 > server_id。结果面板现在包括每个服务器 ID 的下载速度
这仅仅是开始。还有哪些其他因素在起作用?延迟如何影响下载?您认为哪些标签和字段重要?您的互联网速度是否达标?
加入时间序列数据革命
这只是广阔的时间序列数据世界中的冰山一角。时间序列数据无处不在,但借助 TIG 堆栈,设置永远不必过于复杂,并且实时洞察始终可用。