如何使用 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 云 2 用户,Grafana 已更新 InfluxDB 数据源以支持 Flux,而无需您单独安装 Flux 插件。
如果您是 InfluxDB 1.x 用户,现在您可以在 Grafana 仪表板中使用 Flux 查询,以及 InfluxQL。使用 Grafana 7.1 创建新的 InfluxDB 数据源,并选择 Flux 作为语言。正如以下解释的那样,Flux 允许您编写超出 InfluxQL 限制的查询。当然,您现有的 InfluxQL 查询将继续像往常一样工作。
在 Grafana 7.1 中利用 InfluxQL 和 InfluxDB 云 2
如果您一直在使用 InfluxDB 1.x,并且考虑使用 InfluxDB 云 2,我们有一些令人兴奋的消息要分享。InfluxDB 云 2 现在支持 InfluxQL 以及 InfluxDB 1.x 写入 API(详情如下)。这意味着您可以注册 InfluxDB 云 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 点的所有数据点
- 透视,能够指定您的行键、列键和值列。
- 直方图,特别是累积直方图。
- 协方差,在列之间或两个数据流之间。
- 将布尔值转换为整数,作为 Flux 转换函数集的一部分。
- 字符串操作和数据整形,使用 Flux 的 string 包进行清理和规范化。
- 处理地理时空数据,使用 Flux 的 地理时空查询包。
- Visual Studio Code 集成,具有语法突出显示、自动完成等功能
- vim 集成,具有语法突出显示和自动完成功能
- 复杂的异常检测,使用 中位数绝对偏差 (MAD) 和 平衡迭代减少和聚类 (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 云 2,以下是 您可以使用的 URL。更多详细信息请参见 此文档页面。
如果您选择 Flux,则需要指定以下内容
- 选择 InfluxDB 数据源
- 选择 Flux 语言
- 填写连接详细信息,包括您的 InfluxDB 云 2 URL、组织、令牌 和 存储桶 — 如下面的屏幕截图所示。
在这里,我在我的 URL 中指定了 AWS 美西 2 (俄勒冈),但您可能在不同的区域运行。您的组织名称和存储桶名称也可能不同。
您还可以在 Grafana 中创建多个 InfluxDB 数据源。您在这里有很多灵活性。例如,您可以
- 创建两个指向同一 InfluxDB 实例的数据源,其中一个使用 Flux,另一个使用 InfluxQL。(见下面的屏幕截图。)
- 创建多个数据源以连接到不同的 InfluxDB 实例。
<figcaption> 两个数据源都连接到 AWS 俄勒冈上的 InfluxDB 云 2,但一个使用 Flux,另一个使用 InfluxQL。</figcaption>
Grafana、InfluxDB、Flux 和 InfluxQL 演示
这是一个演示,展示了新的 Grafana InfluxDB 插件的工作原理,Grafana 团队成员 Ryan McKinley 在 InfluxDays London 2020 Virtual Experience 上进行了演示
写入方面更灵活
如上所述,我们在 InfluxDB 云 2 中公开了 InfluxDB 1.x 写入 API。这意味着如果您有代码向 InfluxDB 1.x 发送数据,您现在可以将该代码指向 InfluxDB 云 2 并写入您的数据。您可以在这里了解更多关于 InfluxDB 1.x 兼容性 API 的信息,包括如何验证您的所有写入和查询,以及如何访问兼容性端点。这种级别的兼容性是我们 InfluxDB 2.0 开源 (OSS) 路线图的一部分。请关注本季度晚些时候的更多详细信息。
可用性
此集成今天随 Grafana 7.1 的发布而推出。该插件内置于核心 Grafana 中,因此无需单独安装插件。
让我们深入了解集成的细节。在 Grafana、InfluxDB 和语言(InfluxQL/Flux)的所有不同变体之间,有很多可能的组合。
新的 Grafana InfluxDB 数据源适用于 Grafana 7.1,无论您使用的是 Grafana 开源版、Grafana 企业版 还是 Grafana 云,并支持
- 使用 Flux 的 Grafana 7.1 仪表板,针对 InfluxDB 云 2、InfluxDB OSS 2.0 或 InfluxDB 1.8+(企业版、云 1 或 OSS)运行
- 使用 InfluxQL 的 Grafana 7.1 仪表板,针对 InfluxDB 云 2 或 InfluxDB 1.8+(企业版、云 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 云 和 InfluxDB 云的定价。
开始使用 Grafana 和 InfluxDB
Grafana 和 InfluxDB 以多种不同的形式提供。您可以在这里找到各种 Grafana 版本和 InfluxDB 版本。
一旦您启动并运行了 Grafana 和 InfluxDB,请参阅本指南,了解如何 将 InfluxDB 1.8 与 Grafana 集成,以及本文件,了解如何 将 InfluxDB 2.0 与 Grafana 集成。然后加入我们乐于助人的 InfluxDB 社区 和 Slack 提出问题。
其他 Grafana 资源: 如何将 Grafana 与 Home Assistant 集成