Grafana 9.0.0 版本说明
特性与增强功能
- API: 添加 GET /api/annotations/:annotationId 端点。 #47739, @scottbock
- API: 添加根据 UID 更新数据源的端点。 #49396, @papagian
- AccessControl: 为 RBAC 权限缓存添加仅企业版设置。 #49006, @kalleep
- AccessControl: 记录基本角色变更和预配 V2。 #48910, @gamab
- AccessControl: 默认启用 RBAC。 #48813, @IevaVasiljeva
- AddDataSourceConfig: 移除已弃用的 checkHealth 属性。 #50296, @kaydelaney
- Alerting: 向 Microsoft Teams 通知器添加图片 URL。 #49385, @joeblubaugh
- Alerting: 为预配 API 路由添加 RBAC 操作和角色。 #50459, @yuri-tceretian
- Alerting: 向 Pagerduty 通知器添加截图 URL。 #49377, @joeblubaugh
- Alerting: 为告警实例添加“原因”以显示状态的根本原因。 #49259, @joeblubaugh
- Alerting: 添加通用截图服务和告警专用图片服务。 #49293, @joeblubaugh
- Alerting: 为电子邮件通知添加图片 URL 或文件附件。 #49381, @joeblubaugh
- Alerting: 向 OpsGenie 通知详情添加 image_urls。 #49379, @joeblubaugh
- Alerting: 添加通知策略流程图。 #49405, @peterholmberg
- Alerting: 在 Webhook 通知器格式中为告警附加图片 URL。 #49378, @joeblubaugh
- Alerting: 为 Discord 通知附加图片 URL 或上传文件。 #49439, @alexweav
- Alerting: 为 Google Chat 通知附加图片 URL。 #49445, @alexweav
- Alerting: 将截图数据附加到统一告警通知。 #49374, @joeblubaugh
- Alerting: 从零开始时创建告警文件夹。 #48866, @yuri-tceretian
- Alerting: 修改 alertmanager 端点,以便使用数据源 UID 进行代理。 #47978, @papagian
- Alerting: 修改端点,以便使用 UID 测试数据源规则。 #48070, @papagian
- Alerting: 修改 prometheus 端点,以便使用数据源 UID 进行代理。 #48052, @papagian
- Alerting: 状态管理器截取屏幕截图。 #49338, @joeblubaugh
- Alerting: 使用 UID 范围进行文件夹授权。 #48970, @yuri-tceretian
- Alerting: 修改 ruler 端点,以便使用数据源 UID 进行代理。 #48046, @papagian
- Angular: 添加回仍被剩余 Angular 部分和插件使用的两个 Angular 指令。 #50380, @torkelo
- Azure Monitor: 将资源选择器添加到指标查询。 #49029, @sarahzinger
- Azure Monitor: 向资源选择器添加搜索功能。 #48234, @sarahzinger
- AzureMonitor: 使用 equals 和 not equals 维度过滤器时,添加对选择多个选项的支持。 #48650, @aangelisc
- AzureMonitor: 移除已弃用代码。 #48328, @andresmgot
- Build: 将名称更改为 PascalCase 以匹配。 #48949, @zuchka
- Chore: 移除已弃用的 DataSourceAPI 方法。 #49313, @ifrost
- Chore: 将 typescript 升级到 4.6.4。 #49016, @kaydelaney
- Cloud Monitoring: 使用新的标注 API。 #49026, @kevinwcyu
- CloudMonitoring: 允许设置自定义值或禁用 graph_period。 #48646, @andresmgot
- CloudWatch: 将通用过滤器组件添加到变量编辑器。 #47907, @iwysiu
- CloudWatch: 添加了缺失的 AWS/AppRunner 指标。 #49174, @Aton-Kish
- CloudWatch: 启用对迁移的别名模式支持动态标签。 #49173, @sunker
- Cloudwatch: 在深层链接中传递标签。 #49160, @sunker
- Cloudwatch: 使用新的标注 API。 #48102, @sunker
- Dashboard: 保存时根据 schema 验证仪表盘。 #48252, @sdboyer
- DashboardPickerByID: 添加排除仪表盘的选项。 #49211, @Clarity-89
- DashboardPickerById: 添加 optionLabel 属性。 #47556, @Clarity-89
- Dashboards: 以配置的小数位数显示值为 0 的数据。 #48155, @wx1322
- Data: 从 valueMappings 中移除已弃用的类型和函数。 #50035, @kaydelaney
- Elasticsearch: 移除浏览器访问模式。 #49014, @gabor
- Elasticsearch: 移除对其生命周期结束(<7.10.0)后的版本的支持。 #48715, @ivanahuckova
- Encryption: 添加对每天多个数据密钥的支持。 #47765, @joanlopez
- Encryption: 默认启用信封加密。 #49301, @joanlopez
- Explore: 移除对旧版、紧凑格式 URL 的支持。 #49350, @gelicia
- Explore: 禁用 Angular 支持时跳过 Angular 错误处理。 #49311, @ifrost
- Explore: 简化对多个查询编辑器的支持。 #48701, @Elfo404
- FeatureToggles: 支持使用 URL 参数更改功能开关。 #50275, @ryantxu
- FileUpload: 使组件可通过键盘导航访问。 #47497, @tolzhabayev
- Formatting: 使 SI 数字格式更健壮。 #50117, @kaydelaney
- Graph: 弃用旧版 Graph,使其不再是新面板的可视化选项。 #48034, @torkelo
- IconButton: IconButton 在 Safari 中现已正确对齐。 #48759, @ashharrison90
- Logger: 默认启用新的日志格式。 #47584, @ying-jeanne
- Loki: 添加更多查询模式。 #50248, @ivanahuckova
- Loki: 默认启用新的可视化查询构建器。 #48346, @ivanahuckova
- Loki: 对实时查询和普通查询使用相同的 dataframe 格式。 #47153, @gabor
- OAuth: 使允许的电子邮件域不区分大小写。 #49252, @Jguer
- Panels: 显示无数据消息时使用“无值”选项。 #47675, @torkelo
- Plugins: 移除插件列表面板。 #46914, @tolzhabayev
- Query History: 默认启用新的查询历史。 #49407, @ifrost
- QueryEditorRow: 在 Grafana 中以一致的方式在查询旁边显示查询错误。 #47613, @torkelo
- SAML: 为 assertion_attribute_name 选项实现名称模板。 #48022, @mmandrus
- Service accounts: 不显示分配给团队的服务账号。 #48995, @eleijonmarck
- Settings: 使用 Grafana Azure SDK 为外部插件传递 Azure 环境变量。 #48954, @kostrse
- Shortcuts: 在快捷键列表中添加显示快捷键的快捷方式。 #48395, @ivanahuckova
- Traces Panel: 添加新的追踪面板可视化。 #47534, @joey-grafana
- Traces: 在 Tempo 和 Jaeger 中按服务/span 名称和操作进行过滤。 #48209, @joey-grafana
- Transformations: 在“按 regex 重命名”中允许更复杂的 regex 表达式。 #48179, @ashharrison90
- grafana/ui: 为
Bug 修复
- Alerting: 修复数据库不可用导致调度器移除规则的问题。 #49874, @grobinson-grafana
- AzureMonitor: 修复指标时间粒度自动选择问题。 #49278, @aangelisc
- DataSources: 修复表达式未被查询的问题。 #50446, @JoaoSilvaGrafana
- GraphNG: 修复按颜色划分的阈值不随数据更新的问题。 #48571, @zoltanbedi
- Jaeger: 更新操作下拉菜单。 #49329, @joey-grafana
- Login: 修复用户列表中 auth_module 的标签不匹配问题。 #49177, @Jguer
- Playlists: 保存按钮现可正确创建新的播放列表。 #50381, @ashharrison90
- RBAC: 修复迁移顺序错误导致企业版继承问题。 #50452, @gamab
- RBAC: 修复迁移顺序错误问题。(Enterprise 版)
- ServiceAccounts: 为服务账号 token 添加可识别的 token 前缀。 #49011, @Jguer
- Traces: 修复 KeyValueTables 缺少复制按钮以及面板重叠问题。 #49271, @svennergr
重大变更
@grafana/ui 包中用于前端测试的辅助函数 selectOptionInTest 已被移除,因为它会导致测试库被打包到 Grafana 的生产代码中。如果您在测试中使用了此辅助函数,请相应地更新您的代码。
// before
import { selectOptionInTest } from '@grafana/ui';
// ...test usage
await selectOptionInTest(selectEl, 'Option 2');
// after
import { select } from 'react-select-event';
// ...test usage
await select(selectEl, 'Option 2', { container: document.body });
Issue #50442
从 @grafana/e2e 的 addDataSource 配置中移除了已弃用的 checkHealth 属性。之前此值默认为 false,自 Grafana 8.0.3 起已不在端到端测试中使用。Issue #50296
从 grafana-data 中移除了已弃用的 LegacyBaseMap、LegacyValueMapping、LegacyValueMap 和 LegacyRangeMap 类型,以及 getMappedValue 函数。迁移如下
旧版 | 新版 |
---|---|
LegacyBaseMap | MappingType |
LegacyValueMapping | ValueMapping |
LegacyValueMap | ValueMap |
LegacyRangeMap | RangeMap |
getMappedValue | getValueMappingResult |
此更改修复了 Grafana 中的一个 bug,该 bug 会导致当数据库、Grafana 和数据库之间的网络出现间歇性故障或查询数据库出错时,Grafana 中的所有告警规则被取消调度。此更改后,除非查询成功,否则不会更新已调度的告警规则。
get_alert_rules_duration_seconds 指标已重命名为 schedule_query_alert_rules_duration_seconds。Issue #49874
使用 Grafana v9.0 创建或修改的任何密钥(数据源凭证、警报管理器凭证等等)将无法(默认情况下)由任何先前版本解密,因为加密密钥在数据库中的存储方式已更改。然而,使用先前版本创建或修改的密钥仍可由 Grafana v9.0 解密。
如果需要(尽管通常不建议),可以在更新到 Grafana v9.0 后启用
disableEnvelopeEncryption
特性开关,以保持信封加密处于禁用状态。如果出于任何原因需要回滚到较早版本的 Grafana(即 Grafana v8.x),在通过 Grafana v9.0 创建或修改任何密钥后,需要启用
envelopeEncryption
特性开关以保持向后兼容性(仅从v8.3.x
开始,略不稳定;从8.5.x
开始稳定)。作为处理上述情况相关问题的最后尝试,设计了
grafana-cli admin secrets-migration rollback
命令,用于将所有使用信封加密的 Grafana 密钥回退到传统加密方式。因此,运行该命令后,禁用信封加密和/或回滚到先前版本的 Grafana 应该是安全的。或者作为上述所有要点的补充,更新前备份 Grafana 数据库是预防灾难的好办法(尽管一些密钥损坏的风险仅适用于更新到 Grafana v9.0 后更新/创建的密钥)。相关 Issue #49301
根据动态标签文档,每个标签最多可以使用五个动态值。目前在别名模式系统中没有此限制,因此如果使用了超过 5 个模式,GetMetricData API 将返回错误。
动态标签只允许每个查询使用一次 ${LABEL}。在别名模式系统中没有此限制,因此如果使用了不止一个,GetMetricData API 将返回错误。
当用户未提供别名时,Grafana 将不再使用自定义规则来命名图例。
如果使用了搜索表达式且未返回数据,Grafana 将不再展开维度值,例如在使用多值模板变量或在维度值字段中使用星号通配符
*
时。参考 https://github.com/grafana/grafana/issues/20729时间序列的显示顺序可能会不同。例如,使用动态标签
${PROP('MetricName')}
可能会导致返回的时间序列顺序与使用别名模式{{metric}}
时不同。
相关 Issue #49173
在 Elasticsearch 中,浏览器访问模式在 Grafana 7.4.0 中已弃用,并在 9.0.0 中移除。如果您使用了此模式,请在数据源配置页面切换到服务器访问模式。相关 Issue #49014
从 Grafana 传递给外部 Azure 插件的环境变量已重命名
AZURE_CLOUD
重命名为GFAZPL_AZURE_CLOUD
AZURE_MANAGED_IDENTITY_ENABLED
重命名为GFAZPL_MANAGED_IDENTITY_ENABLED
AZURE_MANAGED_IDENTITY_CLIENT_ID
重命名为GFAZPL_MANAGED_IDENTITY_CLIENT_ID
没有已知插件依赖这些变量。未来插件应仅通过 Grafana Azure SDK 读取 Azure 设置,该 SDK 能正确处理新旧环境变量。相关 Issue #48954
移除了对已结束生命周期的 ElasticSearch 版本的支持,目前是版本 < 7.10.0。要继续使用 ElasticSearch 数据源,请将 ElasticSearch 升级到 7.10.0+ 版本。相关 Issue #48715
Azure Monitor 中的 Application Insights 和 Insight Analytics 查询在 Grafana 8.0 中已弃用,并在 9.0 中最终移除。弃用的查询将不再执行。有关此更改的更多信息,请参阅文档。
相关 Issue #48328
grafana/ui: Button 现在指定默认的 type="button"
@grafana/ui 提供的 Button
组件现在在未提供 type 时指定默认的 type="button"
。在以前的版本中,如果与 <form>
关联的按钮未指定此属性,则根据规范,默认值为 submit
。
您可以通过显式设置 type 属性来保留旧行为:<Button type="submit" />
Github Issue #41863。相关 Issue #48183
Rename by regex
转换已改进,允许使用形式为 /<stringToReplace>/g
的全局模式。根据使用的正则表达式匹配,这可能会导致一些转换行为略有不同。您可以通过将 match
字符串用斜杠 (/
) 包裹来确保与之前相同的行为,例如 (.*)
将变为 /(.*)/
。相关 Issue #48179
<Select />
菜单现在默认会 portal 到文档 body。这使得定位和叠加时的行为更一致。如果您之前设置了 menuShouldPortal={true}
,现在可以安全地移除该 prop,行为将保持不变。如果您没有显式设置该 prop,则行为上不应有可见变化,但您的测试可能需要更新。请参阅原始 PR (https://github.com/grafana/grafana/pull/36398) 以获取迁移指南。如果您设置了 menuShouldPortal={false}
,这将继续阻止菜单 portal。
相关 Issue #48176
Grafana 警报端点前缀为 api/v1/rule/test
,该端点用于针对 Cortex/Loki 数据源测试规则,现在期望数据源 UID 作为路径参数,而非数据源数字标识符。相关 Issue #48070
Grafana 警报端点前缀为 api/prometheus/
,该端点代理请求到 Cortex/Loki 数据源,现在期望数据源 UID 作为路径参数,而非数据源数字标识符。相关 Issue #48052
Grafana 警报端点前缀为 api/ruler/
,该端点代理请求到 Cortex/Loki 数据源,现在期望数据源 UID 作为路径参数,而非数据源数字标识符。相关 Issue #48046
Grafana 警报端点前缀为 api/alertmanager/
,该端点代理请求到 Alertmanager,现在期望数据源 UID 作为路径参数,而非数据源数字标识符。相关 Issue #47978
日志消息的格式已更新,lvl
现在变为 level
,eror
和 dbug
已分别替换为 error
和 debug
。时间戳的精度已提高。为了平滑过渡,可以通过启用特性开关 oldlog
来选择不使用新的日志格式。此选项将在未来的次要版本中移除。相关 Issue #47584
在 Loki 数据源中,用于表示 Loki 日志数据的 dataframe 格式已更改为更高效的格式。查询结果由一个包含“labels”列的单个 dataframe 表示,而不是每个标签值对应一个单独的 dataframe。在 explore 中显示此类数据,或在仪表板的日志面板中显示,仍无需更改即可工作,但如果数据加载到不同的仪表板面板或使用了 Transforms,则可能需要进行调整。例如,如果您在日志数据中使用了“labels to fields”转换,请切换到“extract fields”转换。相关 Issue #47153
弃用
setExploreQueryField
、setExploreMetricsQueryField
和 setExploreLogsQueryField
现已弃用,并将在未来版本中移除。如果您需要为 Explore 设置不同的查询编辑器,请在常规查询编辑器中根据 props.app
进行条件渲染。更多信息请参阅我们的文档。相关 Issue #48701
插件开发修复与更改
- Chore: 从 bundles 中移除 react-testing-lib。 #50442, @jackw
- Select: 菜单默认 Portal。 #48176, @ashharrison90