使用新的 Flight SQL 插件为 Grafana 查询 InfluxDB IOx
作者:Jay Clifford / 公司, 开发者
2023年2月15日
导航至
安装、配置和使用的快速入门指南
Grafana 一直是与其配合使用的主要可视化工具。随着由 IOx 驱动的 InfluxDB Cloud 的发布,现在有了一种集成 InfluxDB 和 Grafana 的新方法:Flight SQL。
我们的两位工程师 Brett 和 Helen 一直在努力创建一个名为 Flight SQL 的新 Grafana 插件。这款开源插件允许用户直接对 InfluxDB IOx 和其他与 Apache DataFusion 兼容的存储引擎执行 SQL 查询。这篇博文提供了安装、配置和使用此数据源插件的快速入门指南。
注意:如果您正在寻找包含 Flux 或 InfluxQL 的 InfluxDB OSS 教程,请查看以下 博客。
安装插件
我们目前以实验性软件包的形式发布 Grafana 的 Flight SQL 插件。要安装它,请查看此处的最新说明 here。由于该软件包目前是实验性的,因此它是未签名的,需要您显式批准安装该插件(说明将帮助您完成此操作)。
配置插件
要配置 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
快速入门运行后,您可以在 http://localhost:3000 访问 Grafana。您可以使用默认用户名和密码 admin 和 admin 登录。
仪表板概览
现在我们已经安装并配置了插件,让我们参观一个使用 Flight SQL 数据源的 Grafana 仪表板示例。“Linux System”是 InfluxDB 社区喜爱的一个仪表板,因此我们将使用此仪表板作为如何将 Flux 转换为 SQL 的示例。
Flight SQL 的全局变量
在我们继续进行查询转换之前,值得一提的是,您可以使用一系列全局 Grafana 变量来使您的查询动态化和精简化。这是一个非详尽列表
变量 | 描述 |
---|---|
$__timeRange(time) | 此变量允许您动态设置查询时间范围。例如,如果您从下拉列表中选择查看最近 15 分钟的数据,您将看到与转换列等效的示例。 示例转换 ’2023-01 01T00:00:00Z’ and 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 插件的见解,以便您开始试用它。我给您的行动号召是开始测试该插件,并在插件 repository 中留下您的反馈。这将帮助我们改进插件的整体可用性和功能集。我还要借此机会感谢 Brett 和 Helen 为制作 Flight SQL 开源插件所做的努力。