InfluxDB V1 Shell 的回归
作者:Jay Clifford / 产品,用例,开发者
2022年7月13日
导航至
社区的声音很明确,需求也很清晰
“请把 1.X 中使用的交互式 Shell 还回来”
所以它又回来了……它现在与 InfluxDB V2 兼容……并且还有一些改进。
交互式 Shell 允许用户使用 InfluxQL 编写数据和交互式查询数据。对于新用户来说,InfluxQL 是 InfluxDB 首个主要版本中本地的类似 SQL 的查询引擎。
新改进的
因此,我们 Edge 团队的一位新开发人员 Andrew Lee 担起了挑战,在新的 InfluxDB CLI 中恢复交互式 Shell。他还对整体体验做出了一些出色的改进
让我们分析一下视频中我们看到的内容。
如何访问新的 Shell?
在您进入新的 Shell 之前,有一些事情需要您处理(这是我们正在研究的,看看我们是否可以进一步自动化)
- 您可以通过建立连接配置来完成此操作
注意:如果您使用 InfluxDB OSS 并使用 Influx setup 命令进行设置,则会为您预先创建一个连接配置。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 构建查询的采用率。
之前的命令和历史记录
交互式壳还允许您使用上下键像在基本壳中一样导航到以前的命令。它还有一个巧妙的功能,可以通过运行以下命令来显示所有命令历史。
> history
改进的表格视图
交互式壳还提供了一种新的表格视图来显示返回的查询数据。
我可以使用上下箭头导航返回的数据。然后按 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
重新运行查询,壳将格式化和自动缩进您的 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
列出这些设置。
写入数据
最后,让我们谈谈如何通过交互式壳将指标写入 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 壳之前,有一些注意事项:
您目前无法在壳内创建数据库。这主要是由于 InfluxDB 存储桶在 2.x 版本中充当核心存储机制(不用担心——已经有一些计划在运动中改变这一点,使用自动 dprp 映射)。目前,用户仍需要创建存储桶并将它们映射到数据库。
尽管如此,Gopher 命令仍然完好无损!
结论
Influx v1 壳很快就会发布到 CLI。Andrew 所做的的大部分工作现在已经合并。因此,您完全可以从源代码构建 CLI 并告诉我们您的想法。
仓库可以在 这里 找到。
我们所有人都为围绕 InfluxDB 建立起来的社区感到自豪。请继续分享您的反馈和功能请求,因为我们正在倾听。正是通过您的反馈,这个伟大的功能得以恢复,Gopher 也得以免于被遗忘!