如何使用InfluxDB、Flux和InfluxQL构建Grafana仪表板
作者:Al Sargent / 产品,用例,开发者
2020年7月16日
导航到
我们非常高兴今天发布了Grafana 7.1,它扩展了Grafana内置的InfluxDB数据源,使其能够在Flux语言和InfluxQL中运行查询。这意味着连接Grafana到InfluxDB变得非常简单——无论您使用的是InfluxDB 1.8还是2.0,Flux还是InfluxQL。
由于这个InfluxDB数据源已集成到Grafana 7.1中,因此无需下载和安装单独的插件。您将获得一个简化的配置体验,这是Grafana和InfluxData工程团队在过去几个月中密切合作的结果,也是我们走向“快速实现卓越”的又一重要步骤。
如果您是InfluxDB Cloud 2用户,Grafana已更新InfluxDB数据源以支持Flux,无需您单独安装Flux插件。
如果您是InfluxDB 1.x用户,现在您可以在Grafana仪表板中使用Flux查询,除了InfluxQL。使用Grafana 7.1创建新的InfluxDB数据源,并选择Flux作为语言。Flux允许您编写超出InfluxQL限制的查询,如下所述。当然,您现有的InfluxQL查询将像以前一样继续工作。
利用InfluxDB Cloud 2中的InfluxQL与Grafana 7.1
如果您一直在使用InfluxDB 1.x并考虑使用InfluxDB Cloud 2,我们有一些激动人心的消息要与您分享。InfluxDB Cloud 2现在支持InfluxQL以及InfluxDB 1.x写API(详情见下文)。这意味着您可以注册InfluxDB Cloud 2,向其发送数据,并通过仅更改少量安全凭据来利用现有的仪表板。您的现有Grafana仪表板无需任何调整。
在您的Grafana仪表板查询中做更多的事情
使用Grafana 7.1,您可以通过使用Flux查询来完成一些在InfluxQL中无法实现的事情,从而创建更强大的查询来填充仪表板图表
- 连接,以创建跨越多个存储桶的图表。例如,您可能需要一个Grafana图表来显示传输的字节数和每秒请求次数;Flux允许您查询这两个度量并将它们连接到一个表中。
- 跨度量数学运算,它超越了简单的连接,允许您在连接表中的列上进行数学运算。例如,您可能想通过请求率除以错误率来得到错误率百分比。
- 多个数据源,允许您使用来自MySQL、MariaDB、Postgres、Microsoft SQL Server、Snowflake、SQLite、AWS Athena以及Google BigTable等关系型数据库的元数据来丰富时间序列数据;或者从CSV文件中获取。当您的时序数据包含客户编号字段但不包含客户名称时,这非常有用。Flux允许您拉取客户名称,以便在Grafana仪表板上显示。这里有一些教程可以进一步解释。
Flux独有的其他功能包括
-
- 按标签排序,而不是仅按时间排序
- 按任何列分组,包括按测量值分组
- 按日历月份和年份进行窗口分组。按月份分组适用于包含28、29、30或31天的月份,按年份分组适用于平年和闰年。
- 类似于DatePart的查询,让您可以从上午9点获取所有数据点,到下午5点
- Pivot,能够指定您的行键、列键和值列。
- 直方图,特别是累积直方图。
- 列之间的协方差或两个数据流。
- 将布尔值转换为整数,作为Flux转换函数集的一部分。
- 字符串操作和数据重塑,使用Flux的字符串包进行清理和归一化。
- 处理地理时间数据,使用Flux的地理时间查询包。
- Visual Studio Code集成,包括语法高亮、自动完成等
- vim集成,包括语法高亮和自动完成
- 复杂的异常检测,使用中位数绝对偏差(MAD)和Balanced Iterative Reducing & Clustering(BIRCH)等技术,帮助您更快地发现问题并减少平均故障恢复时间(MTTR)。
- 警报通知到PagerDuty、Slack、Discord、Microsoft Teams、Telegram、Pushbullet和webhooks。
这里有一个InfluxQL和Flux的详细比较,包括代码示例。
如何将Grafana与InfluxDB集成
像平常一样登录Grafana,点击左侧的齿轮图标,然后选择数据源
点击添加数据源
将鼠标悬停在InfluxDB上,然后点击选择
到目前为止,如果你以前使用过 Grafana,这应该看起来很熟悉。但这里是 Grafana 7.1 的新功能:可以选择你想要使用的语言,InfluxQL 或 Flux
如果你选择 InfluxQL,你将看到下面的配置页面。在填写 URL 字段时,请注意,对于 InfluxDB 1.8,默认端口是 8086。对于 InfluxDB Cloud 2,这里有一些 你可以使用的 URL。更多详细信息请参阅 此文档页面。
如果你选择 Flux,以下是你要指定的内容
- 选择 InfluxDB 数据源
- 选择 Flux 语言
- 使用你的 InfluxDB Cloud 2 URL、组织、令牌 和 桶 填写连接详细信息——如下面的截图所示。
我在我的 URL 中指定了 AWS US West 2 (Oregon),但你的运行区域可能不同。你的组织名称和桶名称也可能不同。
你还可以在 Grafana 中创建多个 InfluxDB 数据源。这里有很多灵活性。例如,你可以
- 创建两个数据源,指向相同的 InfluxDB 实例,其中一个使用 Flux,另一个使用 InfluxQL。(见下面的截图。)
- 创建多个数据源以连接到不同的 InfluxDB 实例。
<figcaption> 两个数据源都连接到 AWS Oregon 上的 InfluxDB Cloud 2,但一个使用 Flux,另一个使用 InfluxQL.</figcaption>
Graphana、InfluxDB、Flux 和 InfluxQL 的演示
以下是一个演示,展示了新的 InfluxDB Grafana 插件是如何工作的,该插件由 Grafana 团队成员 Ryan McKinley 在 InfluxDays London 2020 虚拟体验 上展示。
关于写入的更多灵活性
如上所述,我们已在 InfluxDB Cloud 2 中公开了 InfluxDB 1.x 写入 API。这意味着如果你有将数据发送到 InfluxDB 1.x 的代码,你现在可以将该代码指向 InfluxDB Cloud 2 并写入你的数据。在这里你可以了解更多关于此 InfluxDB 1.x 兼容 API 的信息,包括如何对所有写入和查询进行身份验证,以及如何访问兼容端点。这种兼容性是我们 InfluxDB 2.0 开源 (OSS) 路线图的一部分。有关更多详细信息,请在本季度稍后查看。
可用性
此集成今天随 Grafana 7.1 的推出而提供。插件已集成到核心 Grafana 中,因此无需安装单独的插件。
让我们深入了解集成的细节。在所有不同的 Grafana、InfluxDB 和语言(InfluxQL/Flux)变体之间,有许多可能的组合。
新的 InfluxDB 数据源对于 Grafana 7.1 都有效,无论你是使用 Grafana 开源、Grafana 企业版 还是 Grafana 云,并支持
- 使用 Flux 运行的 Grafana 7.1 仪表板,针对 InfluxDB Cloud 2、InfluxDB OSS 2.0 或 InfluxDB 1.8+(企业版、Cloud 1 或 OSS)
- 使用 InfluxQL 运行的 Grafana 7.1 仪表板,针对 InfluxDB Cloud 2 或 InfluxDB 1.8+(企业版、Cloud 1 或 OSS)
或者如果你更喜欢表格视图
InfluxDB 产品 | 版本 | InfluxQL? | Flux? |
开源 | 1.8 | 是 | 是 |
企业版 | 1.8 | 是 | 是 |
云 | 1.8 | 是 | 是 |
云 | 2.0 | 是 | 是 |
开源 | 2.0 | 不,将在今年晚些时候推出 | 是 |
我想坦率地谈一下一个目前不存在的集成——但我们计划在今年晚些时候交付
使用 InfluxQL 的 Grafana 7.1 仪表板,运行在 InfluxDB OSS 2.0 上。
Grafana + InfluxDB 集成的价格是多少?
新的 InfluxDB 数据源已内置到 Grafana 7.1 中。无需安装或单独购买任何插件。以下是 Grafana Cloud 和 InfluxDB Cloud 的定价信息。
开始使用 Grafana 和 InfluxDB
Grafana 和 InfluxDB 可提供多种不同的形态。以下是您可以找到 Grafana 版本 和 InfluxDB 版本 的位置。
一旦您已将 Grafana 和 InfluxDB 启动并运行,请参阅本指南了解如何 将 InfluxDB 1.8 集成到 Grafana,以及本文档关于 将 InfluxDB 2.0 集成到 Grafana 的说明。然后加入我们始终乐于助人的 InfluxDB 社区 和 Slack 询问问题。
其他 Grafana 资源: 如何将 Grafana 与 Home Assistant 集成