The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
AGPL-3.0 License
Bot releases are visible (Hide)
Published by grafanabot over 2 years ago
Download page
What's new highlights
Published by grafanabot over 2 years ago
Download page
What's new highlights
Published by grafanabot over 2 years ago
Download page
What's new highlights
Published by grafanabot over 2 years ago
Download page
What's new highlights
Support 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
Published by grafanabot over 2 years ago
Download page
What's new highlights
Published by grafanabot over 2 years ago
Download page
What's new highlights
Rename by regex
. #48179, @ashharrison90
The @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_CLOUD
AZURE_MANAGED_IDENTITY_ENABLED
renamed to GFAZPL_MANAGED_IDENTITY_ENABLED
AZURE_MANAGED_IDENTITY_CLIENT_ID
renamed to GFAZPL_MANAGED_IDENTITY_CLIENT_ID
There 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 eror
and 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/docs/grafana/latest/developers/plugins/add-support-for-explore-queries/ for more informations.
Issue #48701
Published by grafanabot over 2 years ago
Download page
What's new highlights
Published by grafanabot over 2 years ago
Download page
What's new highlights
1.17.11
. #50253, @dsotirakis
labelKey
contains special characters. #49887, @svennergr
Removes 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
{/*other props... */}
onClipboardCopy={(e) => {
console.log(`Text "${e.text}" was copied!`);
}}
/>
to
<ClipboardButton
{/* other props... */}
onClipboardCopy={(copiedText) => {
console.log(`Text "${copiedText}" was copied!`);
}}
/>
Related 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:read
We'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:read
We'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
Published by grafanabot over 2 years ago
Download page
What's new highlights
surface
prop from IconButton. #49715, @kaydelaney
Drop 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:
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
Published by grafanabot over 2 years ago
Download page
What's new highlights
Upload file
button now opens the modal correctly. #48766, @ashharrison90
For a data source query made via /api/ds/query :
DatasourceQueryMultiStatus
feature is enabled and
DataResponse
, the resulting HTTP status code is now 207 Multi Status
instead of 400 Bad gateway
DatasourceQueryMultiStatus
feature is not enabled and
DataResponse
, the resulting HTTP status code is 400 Bad Request
(no breaking change)Published by grafanabot over 2 years ago
Download page
What's new highlights
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
Published by grafanabot over 2 years ago
Published by xlson over 2 years ago
Published by grafanabot over 2 years ago
Download page
What's new highlights
Published by grafanabot over 2 years ago
Download page
What's new highlights
Published by grafanabot over 2 years ago
Download page
What's new highlights
/api/v1/rules
. #45969, @gotjosh
For a proxied request, e.g. Grafana's datasource or plugin proxy:
499 Client closed request
instead of 502 Bad gateway
504 Gateway timeout
instead of 502 Bad gateway
. Issue #47473
The change in behavior is that negative-valued series are now stacked downwards from 0 (in their own stacks), rather than downwards from the top of the positive stacks. We now automatically group stacks by Draw style, Line interpolation, and Bar alignment, making it impossible to stack bars on top of lines, or smooth lines on top of stepped lines. Issue #47373
The meaning of the default data source has now changed from being a persisted property in a panel. Before when you selected the default data source for a panel and later changed the default data source to another data source it would change all panels who were configured to use the default data source. From now on the default data source is just the default for new panels and changing the default will not impact any currently saved dashboards. Issue #45132
The Tooltip component provided by @grafana/ui
is no longer automatically interactive (that is you can hover onto it and click a link or select text). It will from now on by default close automatically when you mouse out from the trigger element. To make tooltips behave like before set the new interactive
property to true.
Issue #45053
/api/tsdb/query
API has been deprecated and will be removed in a future release. Use /api/ds/query instead. Issue #45238
Published by grafanabot over 2 years ago
Download page
What's new highlights
Published by grafanabot over 2 years ago
Download page
What's new highlights
Published by grafanabot over 2 years ago
Download page
What's new highlights
When user is using Github OAuth, GitHub login is showed as both Grafana login and name. Now the GitHub name is showed as Grafana name, and GitHub login is showed as Grafana Login. Issue #45438
The meaning of the default data source has now changed from being a persisted property in a panel. Before when you selected the default data source for a panel and later changed the default data source to another data source it would change all panels who were configured to use the default data source. From now on the default data source is just the default for new panels and changing the default will not impact any currently saved dashboards. Issue #45132
Published by grafanabot over 2 years ago
Download page
What's new highlights