使用 Grafana 的新 Flight SQL 插件查询 InfluxDB IOx
作者:Jay Clifford / 公司,开发者
2023年2月15日
导航至
快速入门指南:安装、配置和使用
Grafana 自推出以来一直与 InfluxDB 一起用作标准可视化工具。随着 InfluxDB Cloud 带有 IOx 的发布,现在有了一种新的方式来集成 InfluxDB 和 Grafana:Flight SQL。
我们的两位工程师 Brett 和 Helen 一直在努力创建一个新的 Grafana 插件——Flight SQL。这个开源插件允许用户直接针对 InfluxDB IOx 和其他与 Apache DataFusion 兼容的存储引擎执行 SQL 查询。本文提供了一份快速入门指南,用于安装、配置和使用数据源插件。
注意:如果您正在寻找带有 Flux 或 InfluxQL 的 InfluxDB OSS 教程,请参阅以下 博客。
安装插件
我们目前正在以实验包的形式发布 Grafana 的 Flight SQL 插件。要安装它,请参阅最新的说明 这里。由于该包目前处于实验阶段,它未签名,需要您明确批准插件的安装(说明将帮助您完成此操作)。
配置插件
要配置 Flight SQL 插件,请参阅以下 文档。我的建议是确保您以以下方式指定您的主机 URL
us-east-1-1.aws.cloud2.influxdata.com:443
您会发现,如果在端口之后包含任何协议或尾部路径,连接将超时。
完成上述文档中的步骤后,您将收到以下连接成功的消息。
快速入门示例
如果您想跳过一些手动设置并且熟悉 Docker,我还创建了一个名为 InfluxDB-IOx-Quick-Starts 的存储库。这个存储库包含了一系列使用 Docker-Compose 部署的 Telegraf 和 Grafana 示例。要使用此存储库,请运行以下说明
- 克隆存储库
clone https://github.com/InfluxCommunity/InfluxDB-IOx-Quick-Starts.git
- 在存储库内创建一个环境文件
cd InfluxDB-IOx-Quick-Starts && touch .env
- 将以下环境变量添加到文件中
注意:请确保仅包含 __host:port__,如下所示export INFLUX_HOST=<INSERT_HOST> export INFLUX_TOKEN=<INSERT_TOKEN> export INFLUX_ORG=<INSERT_ORG> export INFLUX_BUCKET=<INSERT_BUCKET_NAME>
保存更改。us-east-1-1.aws.cloud2.influxdata.com:443
- 获取您新创建的环境文件
source .env
- 现在您可以使用docker-compose部署Telegraf和Grafana
docker-compose -f system-monitoring/docker-compose.yml up -d
快速启动运行后,您可以通过https://127.0.0.1:3000访问Grafana。您可以使用默认的用户名和密码:admin和admin。
仪表盘概述
现在我们已经安装并配置了插件,让我们通过Flight SQL数据源来浏览一个示例Grafana仪表盘。Linux系统是InfluxDB社区钟爱的仪表盘,因此我们将使用这个仪表盘作为如何将Flux转换为SQL的示例。
Flight SQL的全局变量
在我们继续查询转换之前,值得一提的是,有一系列全局Grafana变量可用于使您的查询动态化和高效。以下是一个非详尽的列表
变量 | 描述 |
---|---|
$__timeRange(time) | 此变量允许您动态设置查询时间范围。例如,如果您选择从下拉菜单中查看最后15分钟的数据,您将看到等效的转换示例。 示例转换 ’2023-01 01T00:00:00Z’和time <= ’2023-01-01T01:00:00Z’ |
$__dateBin(time) | 此变量是创建间隔窗口的动态简短形式,对于聚合非常有用。间隔基于仪表盘规范设置。 示例转换 date_bin(interval ’30 second’, time, interval ’1970-01-01T00:00:00Z’) |
$__timeGroup(time, hour) | 正如我们所知,dateBin实际上是一个窗口周期。这为我们提供了一个减少通过聚合或选择返回的数据量的方法。timeGroup的不同之处在于它产生可以进行分组的投影。 示例转换 datepart(’minute’,time),datepart(’hour’,time),datepart(’day’,time),datepart(’month’,time),datepart(’year’,time); |
您可以在构建查询时通过点击显示查询帮助来找到完整的变量列表
获取主机列表
InfluxDB仪表盘引入了一个仪表盘变量,允许您根据主机名标签进行过滤。让我们看看转换过程。
Flux | Flight SQL |
---|---|
|
|
聚合窗口(平均值)
Flux中最常用的功能之一是聚合窗口。这允许我们通过特定的间隔(例如30秒、2分钟、1年)来窗口我们的时间序列数据,然后对窗口化的数据点执行聚合器(平均值、众数、中位数等)或选择器(最大值、最小值、第一个、最后一个等)功能。
Flux | Flight SQL |
---|---|
|
|
计算导数
现在我们不再拐弯抹角:并非所有基于时间的查询都在SQL中简单。值的导数(相对于时间),也称为值的速率变化,是通过使用微分规则来计算的。函数的导数给出了函数在给定点的变化率。这要求我们知道前一个值以及当前值。让我们看一个例子
Flux | Flight SQL |
|
|
对于这些类型的示例,我们计划尽可能提供这样的解决方案,并逐步开发一系列自定义SQL函数来处理这些复杂的时间序列计算。
结论
希望这篇博客文章能够让您对Grafana的新Flight SQL插件有足够的了解,以便开始试用。我对您的行动呼吁是开始测试这个插件,并在插件的存储库中留下您的反馈。这将帮助我们改进插件的整体可用性和功能集。我还要花点时间感谢Brett和Helen为制作Flight SQL的开源插件所做的努力。