1+++
2title = "What's New in Grafana v7.4"
3description = "Feature and improvement highlights for Grafana v7.4"
4keywords = ["grafana", "new", "documentation", "7.4", "release notes"]
5weight = -31
6aliases = ["/docs/grafana/latest/guides/whats-new-in-v7-4/"]
7[_build]
8list = false
9+++
10
11# What's new in Grafana v7.4
12
13This topic includes the release notes for Grafana v7.4. For all details, read the full [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md).
14
15Check out the [New Features in 7.4](https://play.grafana.org/d/nP8rcffGk/1-new-features-in-v7-4?orgId=1) dashboard on Grafana Play!
16
17## Grafana OSS features
18
19These features are included in the Grafana open source edition.
20
21### Time series panel visualization (Beta)
22
23Grafana 7.4 adds a beta version of the next-gen graph visualization. The new graph panel, the _Time series_ visualization, is high-performance visualization based on the uPlot library. This new graph visualization uses the new panel architecture introduced in Grafana 7.0 and integrates with field options, overrides, and transformations.
24
25The Time series beta panel implements the majority of the functionalities available in the current Graph panel. Our plan is to have close to full coverage of the features in Grafana 8.0, coming later this year.
26
27Apart from major performance improvements, the new Time series panel implements new features like line interpolation modes, support for more than two Y-axes, soft min and max axis limits, automatic points display based on data density, and gradient fill modes.
28
29{{< figure src="/static/img/docs/v74/timeseries_panel.png" max-width="900px" caption="Time series panel" >}}
30
31The following documentation topics were added for this feature:
32
33- [Time series panel]({{< relref "../visualizations/time-series/_index.md" >}})
34- [Graph time series as lines]({{< relref "../visualizations/time-series/graph-time-series-as-lines.md" >}})
35- [Graph time series as bars]({{< relref "../visualizations/time-series/graph-time-series-as-bars.md" >}})
36- [Graph time series as points]({{< relref "../visualizations/time-series/graph-time-series-as-points" >}})
37- [Change axis display]({{< relref "../visualizations/time-series/change-axis-display.md" >}})
38
39### Node graph panel visualization (Beta)
40
41_Node graph_ is a new panel type that can visualize directed graphs or network in dashboards, but also in Explore. It uses directed force layout to effectively position the nodes so it can help with displaying complex infrastructure maps, hierarchies, or execution diagrams.
42
43All the information and stats shown in the Node graph beta are driven by the data provided in the response from the data source. The first data source that is using this panel is AWS X-Ray, for displaying their service map data.
44
45For more details about how to use the X-Ray service map feature, see the [X-Ray plugin documentation](https://grafana.com/grafana/plugins/grafana-x-ray-datasource).
46
47For more information, refer to [Node graph panel]({{< relref "../visualizations/node-graph.md" >}}).
48
49### New transformations
50
51The following transformations were added in Grafana 7.4.
52
53#### Sort by transformation
54
55The _Sort by_ transformation allows you to sort data before sending it to the visualization.
56
57For more information, refer to [Sort by]({{< relref "../panels/transformations/types-options.md#sort-by" >}}) in [Transformation types and options]({{< relref "../panels/transformations/types-options.md" >}}).
58
59#### Filter data by value transform
60
61The new _Filter data by value_ transformation allows you to filter your data directly in Grafana and remove some data points from your query result.
62
63This transformation is very useful if your data source does not natively filter by values. You might also use this to narrow values to display if you are using a shared query.
64
65For more information, refer to [Filter data by value]({{< relref "../panels/transformations/types-options.md#filter-data-by-value" >}}) in [Transformation types and options]({{< relref "../panels/transformations/types-options.md" >}}).
66
67### New override option
68
69On the Overrides tab, you can now set properties for fields returned by a specific query.
70
71For more information, refer to [Field overrides]({{< relref "../panels/field-overrides.md" >}}).
72
73### Exemplar support
74
75Grafana graphs now support Prometheus _exemplars_. They are displayed as diamonds in the graph visualization.
76
77> **Note:** Support for exemplars will be added in version Prometheus 2.25+.
78
79{{< figure src="/static/img/docs/v74/exemplars.png" max-width="900px" caption="Exemplar example" >}}
80
81For more information, refer to [Exemplars]({{< relref "../datasources/prometheus.md#exemplars" >}}).
82
83### Trace to logs
84
85You can now navigate from a span in a trace view directly to logs relevant for that span. This feature is available for the Tempo, Jaeger, and Zipkin data sources.
86
87The following topics were updated as a result of this feature:
88
89- [Explore]({{< relref "../explore/trace-integration.md" >}})
90- [Jaeger]({{< relref "../datasources/jaeger.md#trace-to-logs" >}})
91- [Tempo]({{< relref "../datasources/tempo.md#trace-to-logs" >}})
92- [Zipkin]({{< relref "../datasources/zipkin.md#trace-to-logs" >}})
93
94### Server-side expressions
95
96_Server-side expressions_ is an experimental feature that allows you to manipulate data returned from backend data source queries. Expressions allow you to manipulate data with math and other operations when the data source is a backend data source or a **--Mixed--** data source.
97
98The main use case is for [multi-dimensional]({{< relref "../basics/timeseries-dimensions.md" >}}) data sources used with the upcoming next generation alerting, but expressions can be used with backend data sources and visualization as well.
99
100> **Note:** Queries built with this feature might break with minor version upgrades until Grafana 8 is released. This feature does not work with the current Grafana alerting.
101
102For more information, refer to [Expressions]({{< relref "../panels/expressions.md" >}}). [Queries]({{< relref "../panels/queries.md" >}}) was also updated as a result of this feature.
103
104### Alert notification query label interpolation
105
106You can now provide detailed information to alert notification recipients by injecting alert label data as template variables into an alert notification. Labels that exist from the evaluation of the alert query can be used in the alert rule name and in the alert notification message fields using the `${Label}` syntax. The alert label data is automatically injected into the notification fields when the alert is in the alerting state. When there are multiple unique values for the same label, the values are comma-separated.
107
108{{< figure src="/static/img/docs/alerting/alert-notification-template-7-4.png" max-width="700px" caption="Variable support in alert notifications" >}}
109
110For more information, refer to the [alert notification docs]({{< relref "../alerting/old-alerting/notifications.md#notification-templating" >}}).
111
112### Content security policy support
113
114We have added support for [Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP), a layer of security that helps detect and mitigate certain types of attacks, including Cross Site Scripting (XSS) and data injection attacks.
115
116CSP support is disabled by default, to enable it you must set `content_security_policy = true` in the Grafana configuration. If enabling it, you should also review, and potentially tweak, the CSP header template, via the configuration setting `content_security_policy_template`.
117
118You can lock down what can be done in the frontend code. Lock down what can be loaded, what JavaScript is executed. Not compatible with some plugins.
119
120[content_security_policy]({{< relref "../administration/configuration.md#content_security_policy" >}}) and [content_security_policy_template]({{< relref "../administration/configuration.md#content_security_policy_template" >}}) were added to [Configuration]({{< relref "../administration/configuration.md" >}}) as a result of this change.
121
122### Hide users in UI
123
124You can now use the `hidden_users` configuration setting to hide specific users in the UI. For example, this feature can be used to hide users that are used for automation purposes.
125
126[Configuration]({{< relref "../administration/configuration.md#hidden_users" >}}) has been updated for this feature.
127
128### Elasticsearch data source updates
129
130Grafana 7.4 includes the following enhancements
131
132- Added support for serial differencing pipeline aggregation.
133- Added support for moving function pipeline aggregation.
134- Added support to the terms aggregation for ordering by percentiles and extended stats.
135- Updated date histogram auto interval handling for alert queries.
136
137> **Note:** We have deprecated browser access mode. It will be removed in a future release.
138
139For more information, refer to the [Elasticsearch docs]({{<relref "../datasources/elasticsearch.md">}}).
140
141### Azure Monitor updates
142
143The Azure Monitor query type was renamed to Metrics and Azure Logs Analytics was renamed to Logs to match the service names in Azure and align the concepts with the rest of Grafana.
144
145[Azure Monitor]({{< relref "../datasources/azuremonitor/_index.md" >}}) was updated to reflect this change.
146
147### MQL support added for Google Cloud Monitoring
148
149You can now use Monitoring Query Language (MQL) for querying time-series data. MQL provides an expressive, text-based interface to retrieve, filter, and manipulate time-series data.
150
151Unlike the visual query builder, MQL allows you to control the time range and period of output data, create new labels to aggregate data, compute the ratio of current values to past values, and so on.
152
153MQL uses a set of operations and functions. Operations are linked together using the common pipe mechanism, where the output of one operation becomes the input to the next. Linking operations makes it possible to build up complex queries incrementally.
154
155Once query type Metrics is selected in the Cloud Monitoring query editor, you can toggle between the editor modes for visual query builder and MQL. For more information, refer to the [Google Cloud Monitoring docs]({{< relref "../datasources/google-cloud-monitoring/_index.md#out-of-the-box-dashboards" >}}).
156
157Many thanks to [mtanda](https://github.com/mtanda) this contribution!
158
159## Curated dashboards for Google Cloud Monitoring
160
161Google Cloud Monitoring data source ships with pre-configured dashboards for some of the most popular GCP services. These curated dashboards are based on similar dashboards in the GCP dashboard samples repository. In this release, we have expanded the set of pre-configured dashboards.
162
163{{< figure src="/static/img/docs/google-cloud-monitoring/curated-dashboards-7-4.png" max-width= "650px" >}}
164
165If you want to customize a dashboard, we recommend that you save it under a different name. Otherwise the dashboard will be overwritten when a new version of the dashboard is released.
166
167For more information, refer to the [Google Cloud Monitoring docs]({{< relref "../datasources/google-cloud-monitoring/_index.md/#out-of-the-box-dashboards" >}}).
168
169### Query Editor Help
170
171The feature previously referred to as DataSource Start Pages or Cheat Sheets has been renamed to Query Editor Help, and is now supported in panel query editors (depending on the data source), as well as in Explore.
172
173[Queries]({{< relref "../panels/queries.md" >}}) was updated as a result of this feature.
174
175For more information on adding a query editor help component to your plugin, refer to [Add a query editor help component]({{< relref "../developers/plugins/add-query-editor-help.md" >}}).
176
177### Variable inspector
178
179The variables list has an additional column indicating whether variables are referenced in queries and panel names or not. The dependencies graph provides an easy way to check variable dependencies. You can click on a variable name within the graph to make updates to the variable as needed.
180
181For more information, refer to [Inspect variables and their dependencies]({{< relref "../variables/inspect-variable.md">}}).
182
183## Grafana Enterprise features
184
185These features are included in the Grafana Enterprise edition.
186
187### Licensing changes
188
189When determining a user’s role for billing purposes, a user who has the ability to edit and save dashboards is considered an Editor. This includes any user who is an Editor or Admin at the Org level, and who has granted Admin or Edit permissions via [Dashboard and folder permissions]({{< relref "../permissions/dashboard-folder-permissions.md">}}).
190
191After the number of Viewers or Editors has reached its license limit, only Admins will see a banner in Grafana indicating that the license limit has been reached. Previously, all users saw the banner.
192
193Grafana Enterprise license tokens update automatically on a daily basis, which means you no longer need to manually update your license, and the process for adding additional users to a license is smoother than it was before.
194
195Refer to [Licensing restrictions]({{< relref "../enterprise/license/license-restrictions.md" >}}) for more information.
196
197### Export usage insights to Loki
198
199You can now export usage insights logs to Loki and query them from Grafana. Usage insights logs include dashboard visits, data source views, queries and errors, and more.
200
201For more information, refer to [Export logs of usage insights]({{< relref "../enterprise/usage-insights/export-logs.md" >}}).
202
203### New audit log events
204
205New log out events are logged based on when a token expires or is revoked, as well as [SAML Single Logout]({{< relref "../enterprise/saml.md#single-logout" >}}). A `tokenId` field was added to all audit logs to help understand which session was logged out of.
206
207Also, a counter for audit log writing actions with status (success / failure) and logger (loki / file / console) labels was added.
208
209[Auditing]({{< relref "../enterprise/auditing.md" >}}) was updated to reflect these changes.
210
211### Reports support Unicode
212
213You can now select a font, other than the default, for Unicode-based scripts. As a result, an automatically generated PDF of a dashboard, which contains for example Chinese or Cyrillic text, can display them. Because the size of a report increases as additional fonts are added, this feature is not on by default.
214
215[Reporting]({{< relref "../enterprise/reporting.md#rendering-configuration" >}}) was updated as a result of this change.
216
217### Request security
218
219Request security introduces ways to limit requests from the Grafana server, and it targets requests that are generated by users.
220
221For more information, refer to [Request security]({{< relref "../enterprise/request-security.md" >}}).
222
223## Breaking changes
224
225The following Grafana 7.4 changes might break previous functionality.
226
227### Plugin compatibility
228
229We have upgraded AngularJS from version 1.6.6 to 1.8.2. Due to this upgrade some old angular plugins might stop working and will require a small update. This is due to the deprecation and removal of pre-assigned bindings. So if your custom angular controllers expect component bindings in the controller constructor you need to move this code to an $onInit function. For more details on how to migrate AngularJS code open the migration guide and search for pre-assigning bindings.
230
231In order not to break all angular panel plugins and data sources we have some custom angular inject behavior that makes sure that bindings for these controllers are still set before constructor is called so many old angular panels and data source plugins will still work.
232
233### Fixes Constant variable persistence confusion
234
235In order to minimize the confusion with Constant variable usage, we've removed the ability to make Constant variables visible. This change will also migrate all existing visible Constant variables to Textbox variables because which we think this is a more appropriate type of variable for this use case.
236
237## Upgrading
238
239See [upgrade notes]({{< relref "../installation/upgrading.md" >}}).
240
241## Changelog
242
243Check out [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) for a complete list of new features, changes, and bug fixes.
244