Grafana v10.0 中的重大变更
以下是在升级到 Grafana v10.0 时需要注意的重大变更。
在我们看来,重大变更是指任何需要用户或操作人员进行操作的变更。这包括
- 系统某个部分的变更可能导致其他组件失效
- 功能的弃用或移除
- API 的变更可能破坏自动化
- 影响 Grafana 部分插件或功能的变更
- 无法回滚的迁移
对于每个变更,提供的信息将
- 帮助您确定是否受到影响
- 描述变更或相关背景信息
- 指导您如何缓解变更或进行迁移
- 提供更多学习资源
有关版本亮点和弃用信息,请参阅我们的v10.0 最新功能。有关升级到 v10.0 时我们推荐的具体步骤,请查看我们的升级指南。
一般重大变更
Angular 已弃用,并且默认在新 Grafana Cloud Stack 中关闭
如果您满足以下条件,则会受到影响
您创建新的 Grafana Cloud Stack 并打算使用任何使用 Angular.js JavaScript 框架编写的面板或数据源插件。请参阅Angular 插件列表。
背景
AngularJS 是一个旧的前端框架,多年前已停止活跃开发。因此,它存在安全风险。AngularJS 还需要在CSP(内容安全策略)设置中启用 unsafe-eval,这也会降低 JavaScript 在浏览器中执行的安全性级别。
Grafana 对 Angular 插件的支持已被弃用,这意味着它将在未来版本中移除。仍然有一些使用 Angular 构建的社区和私有插件。从 v9.0 开始,Grafana 有一个名为angular_support_enabled的服务器配置选项,用于控制是否支持 Angular 插件。
Grafana v10 中的变更
对于所有新的 Grafana Cloud Stack,Angular 默认禁用。Grafana Cloud、Grafana Enterprise 本地部署实例和 Grafana OSS 实例中的现有 Stack 不会自动受到影响。
如何缓解
如果您在 Grafana 中使用 Angular 插件,请尝试不使用 Angular 的替代面板或数据源。这个检测到的Angular 插件列表提供了现有替代方案。
如果您是维护使用 Angular 的插件的开发者,我们建议您重构或使用 React.js 重写其前端。Grafana 团队随时准备提供帮助和指导;您可以在Slack或我们的论坛上联系我们。
了解更多
Grafana 遗留告警已弃用,不再接受内部或外部贡献
如果您满足以下条件,则会受到影响
您使用 Grafana 遗留告警并请求了新功能或对其进行了更改。
描述
Grafana 遗留告警(仪表盘告警)自 Grafana v9.0 起已被弃用,取而代之的是新的、改进的 Grafana Alerting。在 Grafana v10 中,遗留告警代码库(依赖于 Angular)仍然可用,但我们将不再对其进行贡献或接受外部贡献。我们将继续为剩余需要迁移的用户提供从遗留告警到 Grafana Alerting 的迁移路径。
迁移路径
新的 Grafana Alerting 在 Grafana 8 中引入,是遗留告警的超集。请在告警升级文档中了解如何迁移您的告警。
API 密钥正在迁移到服务账户
如果您满足以下条件,则会受到影响
您使用 Grafana API 密钥且尚未迁移到服务账户
描述
在 Grafana v8.5 中,我们引入了服务账户,它是支持令牌轮换和基于角色的访问控制 (RBAC) 的 API 密钥的超集。它们在 v9.1 中升级为通用版本 (GA),并且自那时起可以通过 UI 和 API 手动迁移 API 密钥到服务账户。当您升级到 Grafana v10 时,Grafana 将自动将所有 API 密钥迁移到服务账户,并隐藏位于“管理员”部分下的 API 密钥屏幕。
这是一个“重大”变更,因为如果用户习惯于查看和使用 API 密钥,他们将不再在导航中看到该页面,而需要导航到“服务账户”页面。但是,您现有的 API 令牌将保持完全可用并已迁移到服务账户,因此不会破坏任何自动化。如果您回滚到 Grafana 的先前版本,您的 API 密钥将保持不变。
Grafana 用于生成和管理 API 密钥的HTTP API 端点仍然可用,但我们建议您开始使用服务账户 HTTP API来代替生成和管理机器身份验证。
迁移路径
升级到 Grafana v10 时,您无需执行任何操作;您的 API 密钥将自动迁移。要在升级到 Grafana v10 之前测试或执行从 API 密钥到服务账户的迁移,请按照我们的迁移文档进行操作。
了解更多
实验性“仪表盘预览”功能已移除
如果您满足以下条件,则会受到影响
您已开启 dashboardPreviews
功能开关。
描述
由于用户权限和性能问题阻碍了我们继续开发,我们将移除实验性仪表盘预览功能。自 Grafana v9.0 以来,仪表盘预览功能一直位于功能开关后面。
迁移路径
整个功能已从 Grafana 中移除。对于启用了 dashboardPreviews
功能标志的用户,Grafana 将继续照常工作,但没有仪表盘预览。我们建议您从 Grafana 配置中移除 dashboardPreviews
功能标志。
了解更多
RBAC 在 Grafana Enterprise 中默认开启且无法禁用
如果您满足以下条件,则会受到影响
您已在 Grafana 配置中主动禁用了 RBAC。
描述
从 Grafana 9 开始,RBAC 默认启用。引入禁用 RBAC 的选项作为紧急机制,仅在极少数情况下使用。在 Grafana v10 中,我们移除了禁用 RBAC 的配置选项。这确保了 Grafana 在不同功能之间保持一致,并降低了使用 Grafana 遗留访问控制出现问题的风险。此外,Grafana v10 中某些功能的访问控制仅在 RBAC 启用时才有效,因此禁用 RBAC 已不再是选项。
迁移路径
无需操作——迁移是自动的。用户的当前角色、权限、SSO 映射和其他授权功能将继续像以前一样工作。
用户名现在默认不区分大小写
如果您满足以下条件,则会受到影响
您使用 Postgres 或 sqlite 数据库运行 Grafana,您从不同的 SSO 身份提供商(如 Google 和 Active Directory)导入用户,并且由于大小写差异(例如“ Myra@Grafana.com”与“ myra@grafana.com”)导致来自不同提供商登录的用户之前被创建了两次。
背景
当有人注册 Grafana 账户时,他们可以使用电子邮件或登录名。这些字段区分大小写,可能导致为同一用户创建两个或更多账户。此外,Grafana 允许用户设置身份验证提供商,该提供商可能会返回包含大写域名或大写和小写字母组合的个人注册电子邮件。
拥有多个账户会导致用户权限分散、注册流程混乱以及数据库中出现未使用的“僵尸”账户。此外,在身份验证提供商之间切换时,多个账户可能会引发问题。我们将用户唯一性中的这些不一致之处称为用户身份冲突。
Grafana v10 中的变更
Grafana 将开始不区分大小写匹配用户。冲突的用户将无法登录。
迁移路径
我们构建了一个CLI 工具,用户可以使用它提前解决任何潜在冲突。此重大变更已在 Grafana v9.3 中公布。
了解更多
Grafana OAuth 集成不再通过电子邮件查找工作
如果您满足以下条件,则会受到影响
- 您已将 Grafana 配置为使用多个身份提供商,并且您在多个身份提供商中拥有具有相同电子邮件地址的用户。
- 您已将 Grafana 配置为使用通用 OAuth,而该身份提供商不支持唯一的 ID 字段。
背景
Grafana 过去根据电子邮件声明验证身份提供商账户。在许多身份提供商中,电子邮件字段不是唯一的,这可能在某些场景下为执行账户接管和身份验证绕过打开一个可能的账户向量。此变更还确保 Grafana 不受CVE-2023-3128漏洞的影响。
Grafana v10 中的变更
Grafana 将不允许受影响的用户登录。
迁移路径
为了解决任何错误,我们提供了一个应急方案,允许您激活电子邮件查找。您可以在 Grafana 实例中使用以下配置恢复先前的行为。
[auth]
oauth_allow_insecure_email_lookup = true
如果您将 Azure AD 作为身份提供商并使用多租户应用,我们强烈建议不要这样做。
了解更多
CloudWatch 数据源中的“别名”字段已移除
如果您满足以下条件,则会受到影响
您在 CloudWatch 数据源中使用了“别名”字段,而不是动态标签。
描述
CloudWatch 查询编辑器中的别名模式已被功能开关后面的标签(动态标签)替换。从 Grafana v9 开始,标签默认启用。在 Grafana v10 中,我们移除了禁用标签的选项,并完全移除了别名字段。
迁移路径
打开并保存每个使用别名字段的仪表盘。当您加载仪表盘时,别名会自动迁移到标签。
了解更多
Athena 数据源插件必须更新到版本 >=2.9.3
如果您满足以下条件,则会受到影响
您已安装并正在使用 Athena 数据源插件。
描述
Grafana v10.0.0 包含了新的 React 18 升级。因此,React 18 中状态更新批处理的变更导致 Athena 插件版本 <=2.9.2 的查询编辑器中存在错误。
迁移路径
在您的 Grafana 实例管理控制台中将插件更新到 2.9.3 或更高版本。这将确保您的插件查询编辑器按预期工作。
Redshift 数据源插件必须更新到版本 >=1.8.3
如果您满足以下条件,则会受到影响
您已安装并正在使用 Redshift 数据源插件。
描述
Grafana v10.0.0 包含了新的 React 18 升级。因此,React 18 中状态更新批处理的变更导致 Redshift 插件版本 <=1.8.3 的查询编辑器中存在错误。
迁移路径
在您的 Grafana 实例管理控制台中将插件更新到 1.8.3 或更高版本。这将确保您的插件查询编辑器按预期工作。
DoiT International BigQuery 插件不再支持
如果您满足以下条件,则会受到影响
您已安装并正在使用DoiT International BigQuery 数据源插件。
描述
在 v10.0.0 中,Grafana 不再支持使用DoiT International BigQuery 数据源插件,该插件在 2022 年下半年被标记为“已弃用”,并且其 GitHub 仓库于 2022 年 12 月归档。为了使 BigQuery 数据源继续工作,您需要迁移到官方 Grafana BigQuery 数据源插件。
迁移路径
对于使用 Grafana v8.5+ 的所有用户,可以通过在受影响面板的数据源选择器中将数据源更改为 Grafana BigQuery 来导入使用 DoiT International BigQuery 社区插件创建的查询。请注意,查询将作为原始 SQL 查询导入。
了解更多
致插件开发者
升级到 React 18
如果您满足以下条件,则会受到影响
您开发了一个使用 React JS 框架的 Grafana 插件(这包括大多数应用、面板和数据源插件)。
描述
Grafana 已升级到 React 18,现在利用了新的 React 客户端渲染 API。插件作者应特别注意,因为 React 18 关于状态更新自动批处理和一致 useEffect 时机的变更可能会导致意外的副作用。
迁移路径
作为插件开发者:一旦金丝雀版本发布(9.5.0 后),请根据此处的 grafana-dev docker 构建版本之一(例如此版本)测试您的插件。由于 React 18 进行了额外的优化,可能需要进行一些更改以保持先前的行为。
了解更多
已弃用的日志相关函数和变量已从“@grafana/data”和“@grafana/ui”包中移除
如果您满足以下条件,则会受到影响
您是插件作者,并且使用了以下日志相关函数之一
grafana-data 中的接口类型 LogsParser
grafana-ui 包中以下与日志相关的函数和类:
1LogLabels
,LogMessageAnsi
,LogRows
,getLogRowStyles.
,getLogLevel
,getLogLevelFromKey
,addLogLevelToSeries
,LogsParsers
,calculateFieldStats
,calculateLogsLabelStats
,calculateStats
,getParser
,sortInAscendingOrder
,sortInDescendingOrder
,sortLogsResult
,sortLogRows
,checkLogsError
,escapeUnescapedString
.
描述
某些不常用的日志相关函数和变量已从 grafana-packages 移至核心 grafana 代码库。这些项先前已被标记为弃用,并在 grafana 更改日志中发布了弃用通知。依赖这些函数和变量可用的插件作者需要调整其代码库。
迁移路径
如果您编写了数据源或面板插件,请确保它不使用已弃用和移除的函数和变量。
了解更多
DataFrame: 使用 Array或 Vector用于字段值
如果您满足以下条件,则会受到影响
您是插件作者,并且您已为数据帧实现了自己的 Vector 版本。
描述
使用 DataFrames 比应有的更复杂,因为数据保存在 Vector 接口中而不是简单的 Array 中。在 Grafana v10 中,接口已更改,以便开发者可以使用简单数组或 Vectors。
迁移路径
任何使用 Vectors 的代码将继续正常工作。如果您已实现自己的 Vector 版本,则需要更新。最简单的方法是重构代码,使其扩展 MutableVector。这将在 Grafana v9 和 v10 中都有效。
了解更多
grafana/toolkit CLI 命令已移除并迁移到 create-plugin 包
如果您满足以下条件,则会受到影响
您使用 @grafana/toolkit CLI 命令开发插件。
描述
我们在 v9.3(2022 年 11 月)中宣布弃用 grafana/toolkit,现在有一个名为 create-plugin 的新工具作为替代方案。我们鼓励您迁移并使用我们更新的工具。Grafana v10 中移除了除 build
之外的所有 grafana/toolkit 命令。
以下是 create-plugin 的一些优点
更灵活: 使用 @grafana/create-plugin,您可以更好地控制您的插件及其依赖项,并且可以更轻松地自定义工具以满足您的特定需求。
更快的开发时间: 凭借其开箱即用的开发环境,@grafana/create-plugin 可以显著减少开发时间,相比之下使用 @grafana/toolkit 则更慢。
改进的测试能力: 使用 @grafana/create-plugin 测试插件更容易,因为它有 GitHub 工作流可以在每次更改推送到 GitHub 时自动化单元和 e2e 测试运行。
更好的文档: @grafana/create-plugin 的文档比 @grafana/toolkit 的文档更全面、更容易查找。
迁移路径
您可能已经在使用新的工具。如果您有以前使用 @grafana/toolkit 创建的现有插件,可以使用以下命令将其迁移到新的构建工具。
# Run this command from the root of your plugin
cd ./my-plugin
npx @grafana/create-plugin@latest migrate
了解更多
弃用
通过 API 更改文件夹 UID 已弃用。此功能将在未来版本中移除。