.changelog-archive/CHANGELOG.09.md
skip_org_role_sync with Env variables. #68375, @eleijonmarckinstant queries (#67271). #67275, @svennergrnewPanelChromeUI by default. #65593, @axelavargasunpack query builder hint. #65608, @svennergrDataSourcePicker visible on small screens. #65149, @abdulhdr1default named retention policies won't be used to query. Users who have a default named retention policy in their influxdb database, have to rename it to something else. Having default named retention policy is not breaking anything. We will make sure to use the actual default retention policy under the hood. To change the hardcoded retention policy in the dashboard.json, users must they select the right retention policy from dropdown and save the panel/dashboard. Issue #66466
Grafana Alerting rules with NoDataState configuration set to Alerting will now respect "For" duration. Issue #65574
Users who use LDAP role sync to only sync Viewer, Editor and Admin roles, but grant Grafana Server Admin role manually will not be able to do that anymore. After this change, LDAP role sync will override any manual changes to Grafana Server Admin role assignments. If grafana_admin is left unset in LDAP role mapping configuration, it will default to false. Issue #58820
The InfluxDB backend migration feature toggle (influxdbBackendMigration) has been reintroduced in this version as issues were discovered with backend processing of InfluxDB data. Unless this feature toggle is enabled, all InfluxDB data will be parsed in the frontend. This frontend processing is the default behavior. In Grafana 9.4.4, InfluxDB data parsing started to be handled in the backend. If you have upgraded to 9.4.4 and then added new transformations on InfluxDB data, those panels will fail to render. To resolve this either:
time field as Time in panel.json or dashboard.json Issue #64842no logs found text more visible in Explore. #61651, @svennergrInter font by default. #59544, @ashharrison90actionMeta not available in onChange callback. #62339, @svennergrRemoves the non-functional feature toggle influxdbBackendMigration. InfluxDB is working %100 with server access mode. You can keep using your dashboards, and data sources as you have been using. This won't affect them. If you are upgrading from older versions of Grafana please be sure to check your dashboard config and check for warnings. Issue #61308
Removes support for "detected fields" in the details of a log line, however all supported interactions (filter, statistics, visibility) are now supported for all fields. If you are using Loki you can get those fields back by using a parser operation like logfmt or json.
Issue #60448
In the elasticsearch data source, the "Raw document" display mode is deprecated. We recommend using the "Raw Data" mode instead. Issue #62236
Sentry frontend logging provider will be removed with next major version. Issue #60165
role property based on the severity. #61242, @leventebaloghhome. #59874, @ashharrison90merge-pull-request.md regarding backport policies. #59239, @dsotirakisDownload logs button to log log-browser. #55163, @svennergrgzip compression to resource calls. #59059, @svennergrAnnoListPanel. #58971, @ashharrison90Collapse. #59022, @ashharrison90GettingStarted panel. #58966, @ashharrison90FilterPill. #58976, @ashharrison90options to .get|post|patch... methods. #51316, @leventebalogh<AppRootPage>. #57771, @leventebaloghskip_org_role_sync configuration option. #56792, @grafanabotskip_org_role_sync configuration option. #56679, @gamabshow context modal on click. #55989, @svennergrshow context modal on click. #55405, @svennergrpluginId to standalone plugin page NavLinks. #57769, @leventebaloghPage/PluginPage. #58465, @ashharrison90renderKey lifetime. #57339, @WillenaRemoves the unused close-milestone command from @grafana/toolkit. Issue #57062
@grafana/toolkit cherrypick command was removed. Issue #56114
EmotionPerfTest is no longer exported from the @grafana/ui bundle. Issue #56100
Removing the unused changelog command in @grafana/toolkit. Issue #56073
The interface type LogsParser in grafana-data is deprecated. Issue #56242
The following functions and classes related to logs are deprecated in the grafana-ui package: getLogLevel, getLogLevelFromKey, addLogLevelToSeries, LogsParsers, calculateFieldStats, calculateLogsLabelStats, calculateStats, getParser, sortInAscendingOrder, sortInDescendingOrder, sortLogsResult, sortLogRows, checkLogsError, escapeUnescapedString. Issue #56077
plugin:update-circleci command. #57743, @academoplugin:github-publish command. #57726, @academoplugin:bundle-managed command and move its functionality to a bash script. #57719, @academocomponent:create command. #56086, @academoSubscription to the channel already exists live streaming error. #61420, @grafanabotSubscription to the channel already exists live streaming error. #61419, @grafanabotSubscription to the channel already exists live streaming error. #61406, @ArturWierzbickiSelect placeholder contrast to be WCAG AA compliant. #58034, @ashharrison90X-ID-Token header. #57878, @siiimooonshow context icon in light theme. #57427, @svennergrWe added some components a bit too early to @grafana/ui in 9.2 so we are moving them back to @grafana/experimental. If you used any of these components
Please use them from grafana/experimental from now on. Issue #57436
<!-- 9.2.2 END --> <!-- 9.2.1 START -->Cannot use import statement outside... error in tests. #57071, @jackwnotfound. #53949, @bergquistoauth_skip_org_role_update_sync or saml skip_org_role_sync is enabled. #55182, @JguerDashboards: Remove the ability to open dashboard settings while panel edit is still open. Issue #54746
In InfluxDB, browser access mode was deprecated in Grafana 8.0.0 and removed in 9.2.0. If you used this mode, please switch to server access mode on the datasource configuration page. Issue #53529
In Prometheus, browser access mode was deprecated in Grafana 7.4.0 and removed in 9.2.0. If you used this mode, please switch to server access mode on the datasource configuration page. Issue #50162
Password reset links sent before the upgrade will no longer work and have to be resent. Since the duration of those links are only two hours we decided to not support both token formats. Issue #42334
Google Analytics 'Universal Analytics' is deprecated by Google in favor of Google Analytics 4. See Google's deprecation notice for more details. After July 2023, Grafana's Google Analytics 'Universal Analytics' integration will be removed, along with the analytics.google_analytics_ua_id server config property. Configure Google Analytics 4 using the analytics.google_analytics_4_id server config property.
Issue #55446
The following components and functions related to logs are deprecated in the grafana-ui package: LogLabels, LogMessageAnsi, LogRows, getLogRowStyles.
Issue #55364
CustomScrollbar. #54705, @ashharrison90error no resolver found. #55676, @gamaberror no resolver found. (Enterprise)live-service-web-worker feature flag enabled. #55528, @ArturWierzbickigrafana_database_conn_* metrics, and add new go_sql_stats_* metrics as eventual replacement. #54405, @hairyhendersonData type field is set to random. #54298, @CrypticSignalThe grafana_database_conn_* metrics are deprecated, and will be removed in a future version of Grafana. Use the go_sql_stats_* metrics instead. Issue #54405
Alert notifications to Microsoft Teams now use Adaptive Cards instead of Office 365 Connector Cards. Issue #53532
Starting at 9.1.0, existing heatmap panels will start using a new implementation. This can be disabled by setting the useLegacyHeatmapPanel feature flag to true. It can be tested on a single dashbobard by adding ?__feature.useLegacyHeatmapPanel=true to any dashboard URL. Please report any heatmap migration issues.. The most notable changes are:
modifyQuery method to add filters in Explore. #52313, @svennergrStarred dashboards in the Navbar. #51038, @ashharrison90For. #50992, @yuri-tceretianDashboards/Starred items from navbar when unauthenticated. #53051, @ashharrison90Some swagger operations and responses have been renamed to match the respective handler names in order to better highlight their relation. If you use the Swagger specification for generating code, you have to re-generate it and make the necessary adjustments. Issue #52643
The following metrics have been converted to histograms:
In Elasticsearch versions 7.x, to specify the interval-value we used the interval property. In Grafana 9.1.0 we switched to use the fixed_interval property. This makes it to be the same as in Elasticsearch versions 8.x, also this provides a more consistent experience, fixed_interval is a better match to Grafana's time invervals. For most situations this will not cause any visible change to query results. Issue #50297
grafana_Labels prefixed with grafana_ are reserved by Grafana for special use. If a manually configured label is added beginning with grafana_ it may be overwritten in case of collision.
The current list of labels created by Grafana and available for use anywhere manually configured labels are:
| Label | Description | | -------------- | ----------------------------------------- | --------------------------------------------------------------- | | grafana_folder | Title of the folder containing the alert. | Issue #50262 |
In Prometheus, browser access mode was deprecated in Grafana 7.4.0 and removed in 9.0.0. If you used this mode, please switch to server access mode on the datasource configuration page. Issue #50162
show context not working in some occasions. #52458, @svennergrSupport for compact Explore URLs is deprecated and will be removed in a future release. Until then, when navigating to Explore using the deprecated format the URLs are automatically converted. If you have existing links pointing to Explore update them using the format generated by Explore upon navigation.
You can identify a compact URL by its format. Compact URLs have the left (and optionally right) url parameter as an array of strings, for example &left=["now-1h","now"...]. The standard explore URLs follow a key/value pattern, for example &left={"datasource":"test"...}. Please be sure to check your dashboards for any hardcoded links to Explore and update them to the standard URL pattern. Issue #50873
Rename by regex. #48179, @ashharrison90The @grafana/ui package helper function selectOptionInTest used in frontend tests has been removed as it caused testing libraries to be bundled in the production code of Grafana. If you were using this helper function in your tests please update your code accordingly:
// 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
Removed deprecated checkHealth prop from the @grafana/e2e addDataSource config. Previously this value defaulted to false, and has not been used in end-to-end tests since Grafana 8.0.3. Issue #50296
Removes the deprecated LegacyBaseMap, LegacyValueMapping, LegacyValueMap, and LegacyRangeMap types, and getMappedValue function from grafana-data. Migration is as follows:
| Old | New |
|---|---|
LegacyBaseMap | MappingType |
LegacyValueMapping | ValueMapping |
LegacyValueMap | ValueMap |
LegacyRangeMap | RangeMap |
getMappedValue | getValueMappingResult |
This change fixes a bug in Grafana where intermittent failure of database, network between Grafana and the database, or error in querying the database would cause all alert rules to be unscheduled in Grafana. Following this change scheduled alert rules are not updated unless the query is successful.
The get_alert_rules_duration_seconds metric has been renamed to schedule_query_alert_rules_duration_seconds. Issue #49874
Any secret (data sources credential, alert manager credential, etc, etc) created or modified with Grafana v9.0 won't be decryptable from any previous version (by default) because the way encrypted secrets are stored into the database has changed. Although secrets created or modified with previous versions will still be decryptable by Grafana v9.0.
If required, although generally discouraged, the disableEnvelopeEncryption feature toggle can be enabled to keep envelope encryption disabled once updating to Grafana v9.0.
In case of need to rollback to an earlier version of Grafana (i.e. Grafana v8.x) for any reason, after being created or modified any secret with Grafana v9.0, the envelopeEncryption feature toggle will need to be enabled to keep backwards compatibility (only from v8.3.x a bit unstable, from 8.5.x stable).
As a final attempt to deal with issues related with the aforementioned situations, the grafana-cli admin secrets-migration rollback command has been designed to move back all the Grafana secrets encrypted with envelope encryption to legacy encryption. So, after running that command it should be safe to disable envelope encryption and/or roll back to a previous version of Grafana.
Alternatively or complementarily to all the points above, backing up the Grafana database before updating could be a good idea to prevent disasters (although the risk of getting some secrets corrupted only applies to those updates/created with after updating to Grafana v9.0). Issue #49301
According to the dynamic labels documentation, you can use up to five dynamic values per label. There’s currently no such restriction in the alias pattern system, so if more than 5 patterns are being used the GetMetricData API will return an error.
Dynamic labels only allow ${LABEL} to be used once per query. There’s no such restriction in the alias pattern system, so in case more than 1 is being used the GetMetricData API will return an error.
When no alias is provided by the user, Grafana will no longer fallback with custom rules for naming the legend.
In case a search expression is being used and no data is returned, Grafana will no longer expand dimension values, for instance when using a multi-valued template variable or star wildcard * in the dimension value field. Ref https://github.com/grafana/grafana/issues/20729
Time series might be displayed in a different order. Using for example the dynamic label ${PROP('MetricName')}, might have the consequence that the time series are returned in a different order compared to when the alias pattern {{metric}} is used
Issue #49173
In Elasticsearch, browser access mode was deprecated in grafana 7.4.0 and removed in 9.0.0. If you used this mode, please switch to server access mode on the datasource configuration page. Issue #49014
Environment variables passed from Grafana to external Azure plugins have been renamed:
AZURE_CLOUD renamed to GFAZPL_AZURE_CLOUDAZURE_MANAGED_IDENTITY_ENABLED renamed to GFAZPL_MANAGED_IDENTITY_ENABLEDAZURE_MANAGED_IDENTITY_CLIENT_ID renamed to GFAZPL_MANAGED_IDENTITY_CLIENT_IDThere are no known plugins which were relying on these variables. Moving forward plugins should read Azure settings only via Grafana Azure SDK which properly handles old and new environment variables. Issue #48954
Removes support for for ElasticSearch versions after their end-of-life, currently versions < 7.10.0. To continue to use ElasticSearch data source, upgrade ElasticSearch to version 7.10.0+. Issue #48715
Application Insights and Insight Analytics queries in Azure Monitor were deprecated in Grafana 8.0 and finally removed in 9.0. Deprecated queries will no longer be executed. Please refer to the documentation for more information about this change.
Issue #48328
grafana/ui: Button now specifies a default type="button"
The Button component provided by @grafana/ui now specifies a default type="button" when no type is provided. In previous versions, if the attribute was not specified for buttons associated with a <form> the default value was submit per the specification
You can preserve the old behavior by explicitly setting the type attribute: <Button type="submit" />
Github Issue #41863. Issue #48183
The Rename by regex transformation has been improved to allow global patterns of the form /<stringToReplace>/g. Depending on the regex match used, this may cause some transformations to behave slightly differently. You can guarantee the same behaviour as before by wrapping the match string in forward slashes (/), e.g. (.*) would become /(.*)/ Issue #48179
<Select /> menus will now portal to the document body by default. This is to give more consistent behaviour when positioning and overlaying. If you were setting menuShouldPortal={true} before you can safely remove that prop and behaviour will be the same. If you weren't explicitly setting that prop, there should be no visible changes in behaviour but your tests may need updating. Please see the original PR (https://github.com/grafana/grafana/pull/36398) for migration guides. If you were setting menuShouldPortal={false} this will continue to prevent the menu from portalling.
Issue #48176
Grafana alerting endpoint prefixed with api/v1/rule/test that tests a rule against a Corte/Loki data source now expects the data source UID as a path parameter instead of the data source numeric identifier. Issue #48070
Grafana alerting endpoints prefixed with api/prometheus/ that proxy requests to a Cortex/Loki data source now expect the data source UID as a path parameter instead of the data source numeric identifier. Issue #48052
Grafana alerting endpoints prefixed with api/ruler/ that proxy requests to a Cortex/Loki data source now expect the data source UID as a path parameter instead of the data source numeric identifier. Issue #48046
Grafana alerting endpoints prefixed with api/alertmanager/ that proxy requests to an Alertmanager now expect the data source UID as a path parameter instead of the data source numeric identifier. Issue #47978
The format of log messages have been updated, lvl is now level and erorand dbug has been replaced with error and debug. The precision of timestamps has been increased. To smooth the transition, it is possible to opt-out of the new log format by enabling the feature toggle oldlog. This option will be removed in a future minor release. Issue #47584
In the Loki data source, the dataframe format used to represent Loki logs-data has been changed to a more efficient format. The query-result is represented by a single dataframe with a "labels" column, instead of the separate dataframes for every labels-value. When displaying such data in explore, or in a logs-panel in the dashboard will continue to work without changes, but if the data was loaded into a different dashboard-panel, or Transforms were used, adjustments may be necessary. For example, if you used the "labels to fields" transformation with the logs data, please switch to the "extract fields" transformation. Issue #47153
setExploreQueryField, setExploreMetricsQueryField and setExploreLogsQueryField are now deprecated and will be removed in a future release. If you need to set a different query editor for Explore, conditionally render based on props.app in your regular query editor. Please refer to https://grafana.com/developers/plugin-tools/create-a-plugin/extend-a-plugin/add-support-for-explore-queries for more information.
Issue #48701
1.17.11. #50253, @dsotirakislabelKey contains special characters. #49887, @svennergrRemoves support for storing/using datasource password and basicAuthPassword unencrypted which was deprecated in Grafana v8.1.0. Please use secureJsonData.password and secureJsonData.basicAuthPassword. Issue #49987
Removes the option to instrument HTTP request in Grafana using summaries instead of histograms. Issue #49985
Removes support for deprecated dataproxy.max_idle_connections_per_host setting. Please use max_idle_connections instead. Issue #49948
Removes the deprecated getFormStyles function from grafana-ui.
Prefer using GrafanaTheme2 and the useStyles2 hook. Issue #49945
The configuration options auth.login_maximum_inactive_lifetime_days and auth.login_maximum_lifetime_days were deprecated in Grafana v7.2.0 and have now been removed. Use login_maximum_inactive_lifetime_duration and login_maximum_lifetime_duration to customize the maximum lifetime of a login session. Issue #49944
Removed the deprecated isFocused and isInvalid props from the InlineLabel component. These props haven't done anything for a while, so migration is just a matter of removing the props. Issue #49929
Removed the deprecated onColorChange prop from ColorPicker. Moving forward the onChange prop should be used. Issue #49923
/api/tsdb/query API has been removed. Use /api/ds/query instead.
Issue #49916
onClipboardCopy and onClipboardError APIs have been changed such that the callback's argument is just the text that's been copied rather than the old ClipboardEvent interface.
Migration should just be a matter of going from
<ClipboardButton
onClipboardCopy={(e) => {
console.log(`Text "${e.text}" was copied!`);
}}
/>
to
<ClipboardButton
onClipboardCopy={(copiedText) => {
console.log(`Text "${copiedText}" was copied!`);
}}
/>
Issue #49847
The following RBAC action renames have been carried out:
users.authtoken:update -> users.authtoken:write;users.password:update -> users.password:write;users.permissions:update -> users.permissions:write;users.quotas:update -> users.quotas:write;org.users.role:update -> org.users:write;alert.instances:update -> alert.instances:write;alert.rules:update -> alert.rules:write;users.authtoken:list -> users.authtoken:read;users.quotas:list -> users.quotas:read;users.teams:read -> replaced by users.read + teams:readWe've added a migration from the old action names to the new names and have updated our documentation. But you will have to update any scripts and provisioning files that are using the old action names. Issue #49730
The following RBAC action renames have been carried out:
reports.admin:write -> reports:write;reports.admin:create -> reports:create;licensing:update -> licensing:write;roles:list -> roles:read;teams.roles:list -> teams.roles:read;users.roles:list -> users.roles:read;users.permissions:list -> users.permissions:readWe've added a migration from the old action names to the new names and have updated our documentation. But you will have to update any scripts and provisioning files that are using the old action names. Issue #3372
surface prop from IconButton. #49715, @kaydelaneyDrop support for deprecated setting ldap_sync_ttl under [auth.proxy] Only sync_ttl will work from now on Issue #49902
Removes support for deprecated heading and description props. Moving forward, the Card.Heading and Card.Description components should be used. Issue #49885
Removes the deprecated link variant from the Button component.
To migrate, replace any usage of variant="link" with fill="text". Issue #49843
Removes the deprecated surface prop from the IconButton component. This prop hasn't actually done anything for a while, so it should be safe to just remove any instances of its usage.
Issue #49715
Removes the deprecated TextDisplayOptions export from @grafana/data in favor of VizTextDisplayOptions from @grafana/schema. To migrate, just replace usage of TextDisplayOptions with VizTextDisplayOptions. Issue #49705
Removed support for the deprecated getColorForTheme(color: string, theme: GrafanaTheme) function in favor of the
theme.visualization.getColorByName(color: string) method. The output of this method is identical to the removed function, so migration should just be a matter of rewriting calls of getColorForTheme(myColor, myTheme) to myTheme.visualization.getColorByName(myColor).
Issue #49519
In the Prometheus data source, for consistency and performance reasons, we changed how we represent NaN (not a number) values received from Prometheus. In the past versions, we converted these to null in the frontend (for dashboard and explore), and kept as NaN in the alerting path. Starting with this version, we will always keep it as NaN. This change should be mostly invisible for the users. Issue #49475
Plugins using custom Webpack configs could potentially break due to the changes between webpack@4 and webpack@5. Please refer to the official migration guide for assistance.
Webpack 5 does not include polyfills for node.js core modules by default (e.g. buffer, stream, os). This can result in failed builds for plugins. If polyfills are required it is recommended to create a custom webpack config in the root of the plugin repo and add the required fallbacks:
// webpack.config.js
module.exports.getWebpackConfig = (config, options) => ({
...config,
resolve: {
...config.resolve,
fallback: {
os: require.resolve('os-browserify/browser'),
stream: require.resolve('stream-browserify'),
timers: require.resolve('timers-browserify'),
},
},
});
Please refer to the webpack build error messages or the official migration guide for assistance with fallbacks.
Which issue(s) this PR fixes:
<!-- - Automatically closes linked issue when the Pull Request is merged. Usage: "Fixes #<issue number>", or "Fixes (paste link of issue)" -->Fixes #
Special notes for your reviewer:
It does not bump the following dependencies to the very latest due to the latest versions being ES modules:
We have changed the internals of backendSrv.fetch() to throw an error when the response is an incorrect JSON.
// PREVIOUSLY: this was returning with an empty object {} - in case the response is an invalid JSON
return await getBackendSrv().post(`${API_ROOT}/${id}/install`);
// AFTER THIS CHANGE: the following will throw an error - in case the response is an invalid JSON
return await getBackendSrv().post(`${API_ROOT}/${id}/install`);
When is the response handled as JSON?
"Content-Type: application/json" header, ORBackendSrvRequest) specify the response as JSON: { responseType: 'json' }How does it work after this change?
{}How to migrate?
Make sure to handle possible errors on the callsite where using backendSrv.fetch() (or any other backendSrv methods). Issue #47493
In the Loki data source, for consistency and performance reasons, we changed how we represent NaN (not a number) values received from Loki. In the past versions, we converted these to null in the frontend (for dashboard and explore), and kept as NaN in the alerting path. Starting with this version, we will always keep it as NaN. This change should be mostly invisible for the users. Issue #45389
The dependency to grafana/aws-sdk is moved from grafana/ui to the plugin. This means that any plugin that use SIGV4 auth need to pass a SIGV4 editor component as a prop to the DataSourceHttpSettings component. Issue #43559