InfluxDB V1 Shell 的回归
作者:Jay Clifford / 产品、 用例、 开发者
2022 年 7 月 13 日
导航至
社区已经发声,需求很明确
“带回 1.X 中使用的交互式 Shell”
所以它回来了……它适用于 InfluxDB V2……并且有一些改进。
交互式 Shell 允许用户编写数据并使用 InfluxQL 交互式查询数据。对于新用户而言,InfluxQL 是类似于 SQL 的查询引擎,它是 InfluxDB 第一个主要版本的原生引擎。
全新改进的
因此,我们 Edge 团队的一位新开发人员 Andrew Lee 接受了在新的 InfluxDB CLI 中恢复交互式 Shell 的挑战。他还对整体体验进行了一些重大改进
让我们分解一下我们在视频中看到的内容。
如何访问新的 Shell?
在您进入新的 Shell 之前,有一些准备工作需要处理(这是我们正在研究是否可以进一步自动化的事情)
- 您可以通过建立连接配置来完成此操作
注意:如果您使用 Influx setup 命令设置 InfluxDB OSS,则将为您预先创建连接配置。influx config create -u <IP/URL>:8086 -t <All-ACCESS-TOKEN> -o <ORGANISATION> -a
- 由于 InfluxDB V2 现在默认使用 Flux,并且使用存储桶而不是数据库的概念,我们需要进行一些映射。您可以在此处找到执行此操作的说明。
现在我们可以使用以下命令进入 InfluxQL 交互式 Shell
influx v1 shell
自动完成
您会注意到的第一件事是引入了自动完成功能。交互式 Shell 现在将提供命令建议。
让我们看一下
如您所见,我有一个名为 generators 的存储桶,它已映射到数据库。当我键入命令 use
时,您可以看到自动完成功能会自动建议我可以使用的数据库来完成命令。
当构建您的 InfluxQL 查询时,您也可以看到这个主题仍在继续。为我可以从中选择的测量提供建议
此功能是对交互式 Shell 体验的一个受欢迎的补充,因为它提高了首次学习如何使用 InfluxQL 构建查询的用户的采用率。
以前的命令和历史记录
交互式 Shell 还允许您像使用基本 Shell 一样,使用向上和向下键浏览以前的命令。它还具有一个简洁的功能,可以通过运行以下命令来显示您的所有命令历史记录
> history
改进的表格视图
交互式 Shell 还带有一个新的表格视图,用于显示您返回的查询数据
我可以使用向上和向下箭头导航返回的数据。然后按 q
退出表格视图。查看上面的表格,我看到的一个问题是时间格式。不太人性化。因此,接下来让我们讨论格式更改。
如果您的表格太大,您也可以使用箭头键水平滚动
时间精度 + 数据格式
假设我想返回具有以下质量的数据
- 人类可读的时间戳
- JSON 格式
让我们看看我们如何在各个阶段做到这一点。从时间戳开始
- 我们可以使用以下命令定义时间戳的精度
> precision rfc3339
- 再次运行我们的查询
> SELECT * FROM "genData"
您现在可以看到我们漂亮的表格格式,时间值已转换为 rfc339 格式
现在让我们将其转换为 JSON
- 要选择新的数据输出格式,我们可以使用以下命令
注意:CSV、列和表格视图也可用。> format json
- 再次运行查询(这次使用 LIMIT 以减少返回的指标数量)
> SELECT * FROM "genData" LIMIT 1
这是我们返回的 JSON
{"results":[{"series":[{"columns":["time","fuel","generatorID","host","lat","load","lon","power","temperature","topic"],"name":"genData","values":[["2022-06-23T09:17:27.871988172Z",825,"generator3","9ec0ed8427de",33.92946,63,-116.97725,1759,207,"emergency_generator/generator3"]]}],"statement_id":0}]}
现在您可能会对自己说:叹气 我现在需要通过 JSON 格式化程序运行它。我们已经为您考虑到了。如果您运行命令
>pretty
重新运行查询,Shell 将格式化并自动缩进您的 JSON。
{
"results": [
{
"series": [
{
"columns": [
"time",
"fuel",
"generatorID",
"host",
"lat",
"load",
"lon",
"power",
"temperature",
"topic"
],
"name": "genData",
"values": [
[
"2022-06-23T09:17:27.871988172Z",
825,
"generator3",
"9ec0ed8427de",
33.92946,
63,
-116.97725,
1759,
207,
"emergency_generator/generator3"
]
]
}
],
"statement_id": 0
}
]
}
如果您想查看当前启用了哪些设置,可以运行以下命令
> settings
列出这些设置。
写入数据
最后,让我们讨论一下通过交互式 Shell 将指标写入 InfluxDB。假设我们有一些风力发电场数据要手动上传
>windfarm,location=UK,zone=A rotation_speed=400 1655991838619
- 我们需要再次设置我们的精度参数,以匹配我们的行协议的时间戳格式。在我们的例子中,它是毫秒
> precision ms
- 接下来,我们可以使用以下命令插入行协议
> INSERT windfarm,location=UK,zone=A rotation_speed=400 1655991838619
我们现在可以看到我们的指标已存储在 InfluxDB 中。
由于数据库已映射到存储桶,我们也可以使用 UI 和 Flux 与数据交互。
一些注意事项
因此,在您先入为主地永久进入 v1 Shell 之前,有一些注意事项
您目前无法从 Shell 内创建数据库。这主要是因为 InfluxDB 存储桶充当 2.x 中的核心存储机制(不用担心 — 已经有计划通过自动 dprp 映射来更改此设置)。目前,用户仍然需要创建存储桶并将它们映射到数据库。
尽管从积极的方面来看,Gopher 命令仍然存在并且运行良好!
结论
Influx v1 Shell 将很快发布到 CLI。Andrew 完成的大部分工作现在已经合并。因此,非常欢迎您从源代码构建 CLI,并告诉我们您的想法。
存储库可以在此处找到。
InfluxData 的所有人都为围绕 InfluxDB 构建的社区感到自豪。请继续分享您的反馈和功能请求,因为我们正在倾听。正是通过您的反馈,这个强大的功能才得以回归,Gopher 才得以从被遗忘中拯救出来!