Grafana v9.0 新特性
按照传统,GrafanaCon(我们每年为 Grafana 开源用户举办的社区活动)也是我们发布 Grafana 最新软件版本的地方。秉承这一传统,我们很高兴宣布 Grafana v9.0:这是一个提升 Grafana 易用性、通过新增和改进的可视化增强数据发现能力以及提供默认 Grafana Alerting 体验的版本。
Grafana 的一个主要重点是使可观测性和数据可视化及分析对每个人都更容易、更易于访问。对于 Prometheus 和 Loki 等流行数据源,编写和理解查询可能很困难。这就是为什么我们很高兴宣布 Grafana 9 为这两种数据源带来了新的可视化查询构建器。这些可视化查询构建器将降低入门门槛,并帮助任何人构建、理解和学习底层查询语言。
该版本还包含全新的强大快速的热力图可视化、更易于访问的导航菜单、仪表盘搜索改进、高级安全和身份验证功能等。
我们在此总结了该版本的新特性。如果您想了解所有详细信息,可以查看完整的changelog。
Prometheus 查询构建器
Prometheus 查询不容易编写或理解。PromQL 查询语言非常复杂和高级。即使是相对简单的查询,对于新用户来说也难以构建和阅读。这就是为什么我们引入了一个新的 UI 查询构建器,它允许任何人构建并学习 Prometheus 查询的工作原理。

指标和标签过滤器
这个新的查询构建器允许您轻松搜索和选择指标,并构建标签过滤器。您可以选择指标或标签过滤器开始,因为它们都充当彼此的过滤器。指标选择器允许您同时搜索指标名称的多个部分,只需用空格分隔每个搜索字符串即可。
操作
所有函数、聚合和二进制操作都通过“+ 操作”按钮添加。操作按照它们的执行顺序呈现,而不是按照它们在文本查询中编写的倒序。这使得查询更容易阅读和理解,因为您现在可以清楚地看到哪个函数参数将传递给哪个函数,并且可以将参数名称和函数文档信息集成到构建器中。
带有时间序列的热力图面板
范围向量
查询构建器将自动管理并添加范围选择器。它将显示为需要范围向量(rate、delta、increase 等)的操作的参数。
二进制操作
简单的二进制操作,如乘法或除以标量,通过简单的操作框表示,就像其他函数一样。构建器还支持对嵌套查询表达式的二进制操作。
在代码和构建器之间切换
您可以在文本编辑模式(代码)和 UI 构建器模式之间切换,同时保留您的文本更改,因为可视化构建器模型是使用功能齐全的 PromQL 查询解析器从文本查询派生的。
Loki 查询构建器

Loki 在 LogQL 中也有复杂而强大的查询语言。在许多方面,它比 PromQL 更复杂,需要记住更多的语法。幸运的是,我们在 Grafana v9.0 中引入的新查询构建器将帮助您在不了解任何语法的情况下编写和理解 Loki 查询。请看这个日志查询示例。

在查询构建器中,您可以添加和编辑标签过滤器、行过滤器、解析器和函数。上面的图片显示了一个日志查询,但您也可以进行指标查询。
Loki 查询构建器支持上述 Prometheus 查询构建器列出的所有功能,包括支持嵌套二进制操作、解释模式以及在文本编辑器和构建器之间切换时保留更改。
新的热力图面板

我们将用一个使用新面板选项架构的新式面板取代旧的热力图面板。
- 与旧版本相比,新的热力图面板有许多增强功能。
- 速度提高数个数量级
- 支持显示范例(链路追踪)覆盖层
- 支持 Prometheus 稀疏直方图
- 支持更改颜色步数
- 对于未分桶的数据,它会执行更智能的自动分桶大小调整
支持过滤掉接近但不完全为零的分桶值

Grafana 9 中默认启用 Grafana Alerting
如果您从早期版本的 Grafana 升级,Grafana Alerting 现在默认启用。如果您在早期版本的 Grafana 中使用了传统告警,并升级到 Grafana 9,您的告警规则将自动迁移,并且传统告警界面将被 Grafana Alerting 界面取代。
Grafana Alerting(在 Grafana 8 中称为统一告警)自 2021 年 6 月起可用,现在与传统告警具有功能对等性,并提供了许多额外的好处。如果需要回滚到传统告警,请单击此处了解更多信息。请注意,如果您回滚(通过将 Grafana 配置标志 GF_UNIFIED_ALERTING_ENABLED 设置为 false),我们预计在下一个主要 Grafana 版本 Grafana 10 中移除传统告警。
Grafana 管理的告警的状态历史
Grafana 管理的告警的状态历史指示状态原因。当规则评估导致错误或无数据条件时,可以将告警规则配置为使用“告警”或“正常”状态。此更改会跟踪例如“告警”、“告警 (无数据)”和“告警 (错误)”之间的差异。此更改还更新了 UI 以处理新的序列化状态:过滤、排序和着色。
Grafana 管理的告警通知中的图片
Grafana Alerting 现在提供了捕获 Grafana 管理的告警图片并通过通知发送的功能。这可以通过 Grafana Alerting 的联系点标签进行配置。此功能在传统仪表盘告警中可用,但在 Grafana Alerting 中缺失。它要求告警使用“仪表盘 UID”和“面板 ID”标注关联到特定的仪表盘面板。
信封加密已全面可用并默认启用
Grafana 现在使用信封加密来加密数据库中的秘密。信封加密为加密过程增加了一层间接性。Grafana 不会使用单个密钥加密数据库中的所有秘密,而是使用一组称为数据加密密钥 (DEK) 的密钥来加密它们。这些数据加密密钥本身会使用单个密钥加密密钥 (KEK) 进行加密。这使得您可以轮换 KEK,并在密钥泄露时快速重新加密 DEK。在 Grafana Enterprise 中,您还可以将 KEK 存储在外部密钥管理服务 (KMS) 中,例如 AWS KMS 或 Azure Key Vault,以提高安全性。在数据库加密文档中了解更多关于信封加密的信息。

仪表盘预览(选择加入 Beta)
仪表盘预览最初在我们内部的Grafana Labs 黑客马拉松期间诞生,现在已准备好进行选择加入的 Beta 发布。预览提供了所有可用仪表盘的概览,并在仪表盘名称不足以帮助您快速找到所需仪表盘时提供帮助。

面板标题搜索(选择加入 Beta)
Grafana 9 具有一个功能开关 panelTitleSearch。启用后,它会告知 Grafana 使用新的搜索引擎。新搜索不是使用 SQL 查询,而是使用内存中的全文索引。这提供了更好的搜索体验,并且额外允许搜索面板标题。
展开导航栏
您可以展开导航栏,以便更好地概览 Grafana 的功能和已安装的集成。这是对 Grafana 导航的首次改进,未来的版本中将有更多改进。

导航栏中的星标仪表盘
作为 Grafana 导航即将进行的改进的一部分,您现在可以直接从导航栏访问您的星标仪表盘。这是一个目前可以选择加入的功能,通过启用 savedItems 功能标志即可访问。

从探索到仪表盘
现在可以直接从“探索”创建面板和/或仪表盘。当用户点击“探索”工具栏中的“添加到仪表盘”按钮时,他们可以在新的仪表盘或现有仪表盘中创建面板。生成的面板包含窗格中的所有查询,并自动从“探索”中当前显示的结果中选择默认的可视化。仪表盘不会自动保存,以便用户可以按照当前的保存流程进行操作。可以选择在新标签页中打开仪表盘,以保留“探索”的状态。

命令面板
使用 cmd+k (macOS) 或 ctrl+k (Linux/Windows),用户可以调出命令面板,以便更轻松地导航和执行其他任务。
带有链路追踪 ID 的错误列表
为了支持调试 Grafana 中的问题,Grafana 中出现的错误告警包含一个链路追踪 ID,这些告警可以在您的个人资料下访问。这是一个目前可以选择加入的功能,通过启用两个功能标志即可访问
tracing
- 在错误消息中启用链路追踪 IDpersistNotifications
- 在个人资料下启用告警页面

查询历史迁移
查询历史是一个面板,用于跟踪在“探索”中运行的所有查询。此前,历史记录保存在浏览器本地存储中,这导致了一些问题,例如存储空间不足或无法在不同浏览器中使用相同的查询历史记录。现在不同了!我们将所有条目从浏览器本地存储迁移到数据库。当查询历史面板打开时,迁移将在后台进行。可以使用 custom.ini 中的配置项 query_history 禁用此功能。

企业版
访问控制
RBAC 已全面可用
细粒度访问控制现在称为基于角色的访问控制(RBAC)。它现在在 Grafana Enterprise 和 Grafana Cloud 中默认启用,因此您可以为用户、团队或服务账号创建和定义自定义角色,例如 Annotations Writer、Users Viewer 和 Dashboard Permissions Writer。在文档中了解更多关于 RBAC 的信息。

报告
向单个报告添加多个仪表盘
如果您有一些信息分散在多个仪表盘中,并且希望定期发送给一组收件人,您现在可以将多个仪表盘添加到单个报告中,并通过一封电子邮件发送所有信息。在报告文档中了解更多关于报告的信息。
在报告中嵌入仪表盘图像
报告的关键在于便利性——以最快的速度将信息呈现在眼前。现在,您可以直接在报告电子邮件中嵌入仪表盘图像,这样收件人打开邮件即可看到,而无需打开附件 PDF。这对于 SLO、财务结果或其他一目了然的数据特别方便。在报告文档中了解更多关于报告的信息。

重大变更
这是部分值得注意的重大变更列表。有关完整列表,请参阅我们的版本说明。
基于角色的访问控制:全面可用版本的变更
细粒度访问控制现在称为“基于角色的访问控制”。作为 Grafana 9.0 版本的一部分,该服务已全面可用,并且有一些重大变更
- 内置角色现在称为基本角色。它们现在由权限组成,而不是角色。
- Terraform 的 builtin_role_assignment 资源将被移除。
- Grafana 配置有新的 Schema。请参阅文档获取更多信息。
- 基本角色不再支持权限继承。此前,当修改 Viewer 基本角色的权限时,该修改会传播到 Editor 和 Admin 基本角色。在 Grafana 9.0 版本中,情况已不再如此。
- 一些基于角色的访问控制操作已重命名。所有使用旧操作名称的数据库条目将迁移到使用新名称,但用户需要更新配置和脚本文件。此变更还意味着,如果 Grafana 从 9.0 降级到较低版本,一些基于角色的访问控制权限将无法正确解析。
Loki:日志数据格式已更改
在 Loki 数据源中,用于表示 Loki 日志数据的格式已更改为更高效的格式。(注意:此更改仅适用于日志数据,不适用于数字数据) 日志由一个添加了“labels”字段的单一 dataframe 表示,而不是为每个标签组合单独使用 dataframe。在 explore 中或使用日志面板在仪表盘中显示日志数据将继续正常工作,无需更改。但是,当在其他仪表盘面板(例如表格可视化)中显示日志数据时,将会有变化,并且可能需要调整配置。例如,如果使用了“Labels to fields”转换,则必须将其替换为“Extract fields”转换,其中选择“labels”字段作为源。
Loki:数字数据中的 NaN 值表示方式已更改
在 Loki 数据源中,当 Grafana 从 Loki 接收数字数据时,它可能包含 NaN(非数字)值。出于一致性和性能原因,我们更改了在 Grafana 中表示这些值的方式。在以前的版本中,告警查询与其他查询(如仪表盘查询或 explore 查询)的行为不同。告警查询保持 NaN 值不变,但其他查询将这些值转换为“null”。从 Grafana 9.0.0 开始,我们将始终保持这些值不变。换句话说,在这方面,仪表盘和 explore 中的查询将与告警查询的行为相同。
Elasticsearch:已移除对其生命周期结束后的版本的支持
已移除对其生命周期结束(基于 https://elastic.ac.cn/support/eol)的 Elasticsearch 版本的支持。这意味着 Grafana 9.0.0 将不再支持低于 Elasticseach 7.10.0 的版本。
Elasticsearch:已移除对浏览器访问模式的支持
在 Elasticsearch 数据源中,浏览器访问模式已在 Grafana 7.4.0 中被弃用,并在 9.0.0 中被移除。如果您使用了此模式,请在数据源配置页面上切换到服务器访问模式。
Prometheus:数字数据中的 NaN 值表示方式已更改
在 Prometheus 数据源中,当 Grafana 从 Prometheus 接收数字数据时,它可能包含 NaN(非数字)值。出于一致性和性能原因,我们更改了在 Grafana 中表示这些值的方式。在以前的版本中,告警查询与其他查询(如仪表盘查询或 explore 查询)的行为不同。告警查询保持 NaN 值不变,但其他查询将这些值转换为“null”。从 Grafana 9.0.0 开始,对于所有查询,我们将始终保持 NaN 值不变。
转换:允许在“按 regex 重命名”中使用更复杂的 regex 表达式
“按 regex 重命名”转换已得到改进,允许使用 /<stringToReplace>/g
形式的全局模式。根据所使用的 regex 匹配,这可能会导致某些转换的行为略有不同。您可以通过将匹配字符串用正斜杠 (/
) 包围来确保与之前相同的行为,例如,(.*)
将变为 /(.*)/
。(Github Issue #48179)
时钟面板
我们已将时钟面板更新到版本 2.0.0
,使其与 Grafana 9 兼容。以前的版本 1.3.1
在仪表盘中使用时会导致 Grafana 9 崩溃,我们建议您在升级到 Grafana 9 之前更新该面板。
Polystat 面板
我们已将polystat 面板更新到版本 1.2.10
,使其与 Grafana 9 兼容。以前的版本 1.2.8
及更低版本在 Grafana 9 中将显示为空白。我们建议您在升级到 Grafana 9 之前或之后立即更新该面板。
插件:最相关的破坏性变更
getColorForTheme
已被移除,请改用theme.visualization.getColorByName
PR #49519TextDisplayOptions
已被移除,请改用VizTextDisplayOptions
PR #49705- 我们已更改
backendSrv.fetch()
的内部实现,当响应为错误的 JSON 时将抛出错误。请确保在使用backendSrv.fetch()
(或任何其他backendSrv
方法)的调用处处理可能的错误 PR #47493 - 我们已从 grafana-ui 中移除已弃用的
getFormStyles
函数。请改用GrafanaTheme2
和useStyles2
Hook PR #49945 - 我们已移除已弃用的
/api/tsdb/query
指标端点。请改用/api/ds/query
PR #49916
您可以在下面的链接中找到破坏性变更的完整列表。请查看它们以获取更多详细信息,并了解是否有任何变更影响您的插件
- /docs/grafana/next/release-notes/release-notes-9-0-0-beta1/
- /docs/grafana/next/release-notes/release-notes-9-0-0-beta2/
- /docs/grafana/next/release-notes/release-notes-9-0-0-beta3/
- /docs/grafana/next/release-notes/release-notes-9-0-0
默认启用信封加密
Grafana v8.5 为 Grafana 数据库中存储的秘密(如数据源凭据、告警通知通道凭据、oauth 令牌等)添加了一种名为“信封加密”的新加密方式,该加密方式由一个名为 envelopeEncryption
的功能开关控制。
在 v9.0 中,envelopeEncryption
功能开关被 disableEnvelopeEncryption
取代,Grafana 默认使用信封加密机制。
因此,在 Grafana v9.0 中创建或更新的任何秘密将无法被任何以前的 Grafana 版本解密,除非该 Grafana 版本至少为 v8.5 且启用了 envelopeEncryption
功能开关。如果配置不当,这可能会在高可用性设置、逐步部署或任何涉及回滚到以前 Grafana 版本的情况中导致问题。
我们强烈建议您为旧版本启用 envelopeEncryption
以部署信封加密。您也可以在升级到 v9.0 之前配置 disableEnvelopeEncryption
功能开关;但是,此功能开关可能在未来的 Grafana 版本中被移除。
有关更多详细信息和潜在问题的解决方法,请参阅文档。
关于 Grafana Enterprise 许可的说明
当我们在 6 月 14 日发布 Grafana 9.0 时,Grafana 将不再区分 viewer 和 editor-admin 的授权。这意味着无论您的 Grafana Enterprise 许可是分层许可还是组合许可,您将在“Stats & Licensing”页面上看到的不是以下内容

您将看到以下内容

这也意味着 Grafana 将同等计数所有用户,无论其角色如何,包括组织角色(Viewer、Editor、Admin)和细粒度角色(Dashboard Editor、Reports Editor 等)。如果您达到 viewer 或 editor-admin 的限制,您将不会看到单独的警告横幅或用户被锁定,只会看到您的活动用户总数限制。
例如,如果您的 Grafana Enterprise 许可允许 10 个活动 admin 和 100 个活动 viewer,则从 v9.0 开始,您的活动用户限制将为 110 个,并且这些用户具有什么角色无关紧要,他们都将被同等计数和强制执行。
这比以前的策略更宽松。