Release Notes v5.0.x

Grafana v5.0 is going to be the biggest and most foundational release Grafana has ever had, coming with a ton of UX improvements, a new dashboard grid engine, dashboard folders, user teams and permissions. Checkout out this video preview of Grafana v5 and the What’s New section in the docs for an overview of new features.

New Major Features

  • Dashboards Dashboard folders, #1611
  • Teams User groups (teams) implemented. Can be used in folder & dashboard permission list.
  • Dashboard grid: Panels are now layed out in a two dimensional grid (with x, y, w, h). #9093.
  • Templating: Vertical repeat direction for panel repeats.
  • UX: Major update to page header and navigation
  • Dashboard settings: Combine dashboard settings views into one with side menu, #9750
  • Persistent dashboard url’s: New url’s for dashboards that allows renaming dashboards without breaking links. #7883

New Dashboard Grid

The new grid engine is a major upgrade for how you can position and move panels. It enables new layouts and a much easier dashboard building experience. The change is backward compatible. So you can upgrade your current version to 5.0 without breaking dashboards, but you cannot downgrade from 5.0 to previous versions. Grafana will automatically upgrade your dashboards to the new schema and position panels to match your existing layout. There might be minor differences in panel height. If you upgrade to 5.0 and for some reason want to rollback to the previous version you can restore dashboards to previous versions using dashboard history. But that should only be seen as an emergency solution.

Dashboard panels and rows are positioned using a gridPos object {x: 0, y: 0, w: 24, h: 5}. Units are in grid dimensions (24 columns, 1 height unit 30px). Rows and Panels objects exist (together) in a flat array directly on the dashboard root object. Rows are not needed for layouts anymore and are mainly there for backward compatibility. Some panel plugins that do not respect their panel height might require an update.

5.0.4 (2018-03-28)

  • Docker Can’t start Grafana on Kubernetes 1.7.14, 1.8.9, or 1.9.4 #140 in grafana-docker repo thx @suquant

  • Dashboard Fixed bug where collapsed panels could not be directly linked to/renderer #11114 & #11086 & #11296

  • Dashboard Provisioning dashboard with alert rules should create alerts #11247

  • Snapshots For snapshots, the Graph panel renders the legend incorrectly on right hand side #11318

  • Alerting Link back to Grafana returns wrong URL if root_path contains sub-path components #11403

  • Alerting Incorrect default value for upload images setting for alert notifiers #11413

5.0.3 (2018-03-16)

Introduces two new configuration settings:

  • database section - conn_max_lifetime
  • session section - conn_max_lifetime

Sets the maximum amount of time a connection may be reused. The default is 14400 (which means 14400 seconds or 4 hours). For MySQL, this setting should be shorter than the wait_timeout variable.

  • Mysql: Mysql panic occurring occasionally upon Grafana dashboard access (a bigger patch than the one in 5.0.2) #11155

5.0.2 (2018-03-14)

  • Mysql: Mysql panic occurring occasionally upon Grafana dashboard access #11155
  • Dashboards: Should be possible to browse dashboard using only uid #11231
  • Alerting: Fixes bug where alerts from hidden panels where deleted #11222
  • Import: Fixes bug where dashboards with alerts couldn’t be imported #11227
  • Teams: Remove quota restrictions from teams #11220
  • Render: Fixes bug with legacy url redirection for panel rendering #11180

5.0.1 (2018-03-08)

  • Postgres: PostgreSQL error when using ipv6 address as hostname in connection string #11055, thanks @svenklemm
  • Dashboards: Changing templated value from dropdown is causing unsaved changes #11063
  • Prometheus: Fixes bundled Prometheus 2.0 dashboard #11016, thx @roidelapluie
  • Sidemenu: Profile menu “invisible” when gravatar is disabled #11097
  • Dashboard: Fixes a bug with resizeable handles for panels #11103
  • Alerting: Telegram inline image mode fails when caption too long #10975
  • Alerting: Fixes silent failing validation #11145
  • OAuth: Only use jwt token if it contains an email address #11127

5.0.0-stable (2018-03-01)


  • oauth Fix Github OAuth not working with private Organizations #11028 @lostick
  • kiosk white area over bottom panels in kiosk mode #11010
  • alerting Fix OK state doesn’t show up in Microsoft Teams #11032, thx @manacker

5.0.0-beta5 (2018-02-26)


  • Orgs Unable to switch org when too many orgs listed #10774
  • Folders Make it easier/explicit to access/modify folders using the API #10630
  • Dashboard Scrollbar works incorrectly in Grafana 5.0 Beta4 in some cases #10982
  • ElasticSearch Custom aggregation sizes no longer allowed for Elasticsearch #10124
  • oauth Github OAuth with allowed organizations fails to login #10964
  • heatmap Heatmap panel has partially hidden legend #10793
  • snapshots Expired snapshots not being cleaned up #10996

5.0.0-beta4 (2018-02-19)


  • Dashboard Fixed dashboard overwrite permission issue #10814
  • Keyboard shortcuts Fixed Esc key when in panel edit/view mode #10945
  • Save dashboard Fixed issue with time range & variable reset after saving #10946

5.0.0 - Beta3


5.0.0 - Beta2


  • Permissions Fixed search permissions issues #10822
  • Permissions Fixed problem issues displaying permissions lists #10864
  • PNG-Rendering Fixed problem rendering legend to the right #10526
  • Reset password Fixed problem with reset password form #10870
  • Light theme Fixed problem with light theme in safari, #10869
  • Provisioning Now handles deletes when dashboard json files removed from disk #10865
  • MySQL Fixed issue with schema migration on old mysql (index too long) #10779
  • Github OAuth Fixed fetching github orgs from private github org #10823
  • Embedding Fixed issues embedding panel #10787

5.0.0 - Beta1

Breaking changes

  • [dashboard.json] have been replaced with dashboard provisioning.
    Config files for provisioning datasources as configuration have changed from /conf/datasources to /conf/provisioning/datasources.
    From /etc/grafana/datasources to /etc/grafana/provisioning/datasources when installed with deb/rpm packages.

  • Pagerduty The notifier now defaults to not auto resolve incidents. More details at #10222


    • GET /api/alerts property dashboardUri renamed to url and is now the full url (that is including app sub url).

New Features

  • Alerting: Add support for internal image store #6922, thx @FunkyM
  • Data Source Proxy: Add support for whitelisting specified cookies that will be passed through to the data source when proxying data source requests #5457, thanks @robingustafsson
  • Postgres/MySQL: add __timeGroup macro for mysql #9596, thanks @svenklemm
  • Text: Text panel are now edited in the ace editor. #9698, thx @mtanda
  • Teams: Add Microsoft Teams notifier as #8523, thx @anthu
  • Datasources: Its now possible to configure datasources with config files #1789
  • Graphite: Query editor updated to support new query by tag features #9230
  • Dashboard history: New config file option versions_to_keep sets how many versions per dashboard to store, #9671
  • Dashboard as cfg: Load dashboards from file into Grafana on startup/change #9654 #5269
  • Prometheus: Grafana can now send alerts to Prometheus Alertmanager while firing #7481, thx @Thib17 and @mtanda
  • Table: Support multiple table formated queries in table panel #9170, thx @davkal
  • Security: Protect against brute force (frequent) login attempts #7616


  • Graph: Don’t hide graph display options (Lines/Points) when draw mode is unchecked #9770, thx @Jonnymcc
  • Prometheus: Show label name in paren after by/without/on/ignoring/group_left/group_right #9664, thx @mtanda
  • Alert panel: Adds placeholder text when no alerts are within the time range #9624, thx @straend
  • Mysql: MySQL enable MaxOpenCon and MaxIdleCon regards how constring is configured. #9784, thx @dfredell
  • Cloudwatch: Fixes broken query inspector for cloudwatch #9661, thx @mtanda
  • Dashboard: Make it possible to start dashboards from search and dashboard list panel #1871
  • Annotations: Posting annotations now return the id of the annotation #9798
  • Systemd: Use systemd notification ready flag #10024, thx @jgrassler
  • Github: Use organizations_url provided from github to verify user belongs in org. #10111, thx
  • Backend: Fixed bug where Grafana exited before all sub routines where finished #10131
  • Azure: Adds support for Azure blob storage as external image stor #8955, thx @saada
  • Telegram: Add support for inline image uploads to telegram notifier plugin #9967, thx @rburchell


  • Sensu: Send alert message to sensu output #9551, thx @cjchand
  • Singlestat: suppress error when result contains no datapoints #9636, thx @utkarshcmu
  • Postgres/MySQL: Control quoting in SQL-queries when using template variables #9030, thanks @svenklemm
  • Pagerduty: Pagerduty dont auto resolve incidents by default anymore. #10222
  • Cloudwatch: Fix for multi-valued templated queries. #9903

Deprecation notes


The following operations have been deprecated and will be removed in a future release:

  • GET /api/dashboards/db/:slug -> Use GET /api/dashboards/uid/:uid instead
  • DELETE /api/dashboards/db/:slug -> Use DELETE /api/dashboards/uid/:uid instead

The following properties have been deprecated and will be removed in a future release:

  • uri property in GET /api/search -> Use new url or uid property instead
  • meta.slug property in GET /api/dashboards/uid/:uid and GET /api/dashboards/db/:slug -> Use new meta.url or dashboard.uid property instead
1 Like

In view of the obvious Beta tag - is this “release candidate” worthy with respect to any major database changes expected before 5.0? We have 100s of dashboards that we want to get the jump on moving over to 5.0 ASAP.

Again - very excited and grateful to your team for the 5.0 release. This one will be “foundational” for our organization too!

We are not expecting to make any major changes to the database. There will be some changes to the HTTP API before the stable release but probably not any breaking changes.

Some general advice is to make a backup before upgrading. Dashboards will not be automatically converted back to the old format if rolling back to 4.6.3.

See below for advice on upgrading to 5.0 (from the Dashboard grid section of the release notes):

Thanks! Backups notwithstanding, after playing with the nightly builds for the past month, there is a less than zero chance of us rolling back to 4.6.3.

5.0 and beyond! Thanks again!

1 Like

Under new dashboard grid design, how we can set or access the panel height? It is no more having panel.height.

What do you mean access? From a panel plugin code? then it’s ctrl.height as before (not ctrl.panel.height that does not exist).

If you want to set panel height from json you set the gridPos object,

Is there a place to submit bug reports? With the new release, MySQL queries are no longer wrapping $variables in quotes properly (first variable in a select is wrapped in single quotes, second one is wrapped in 2 single quotes).

EDIT: seems to be working properly now. Maybe something got updated?

Thanks @torkel, I meant from panel plugin code only.

If you find any more bugs or have feature requests you’re welcome to submit those to Grafana’s GitHub repository.

Dashboard panels and rows are positioned using a gridPos object {x: 0, y: 0, w: 24, h: 5}. Units are in grid dimensions (24 columns, 1 height unit 30px).

Actually 1 height unit 30px only for first-row (header of panel), then 40px for other rows

Beta3 fixes the “panel wants to jump to the next row” issue. We did notice that we needed to re-save the dashboard before this fix took effect.

Thanks for the great work - Beta3 is showing continued improvement!

I am curious if there is an estimated release date?


Beginning of March.


1 Like

How to rebuild frontend assets on source change in Grafana v5.0.0 . npm run watch is not working.

npm run watch should still work but you might to need delete your node_modules directory first and then run yarn install --pure-lockfile first. A lot has changed in the frontend code since 4.6.

Grafana 5.0.0. issue.

t=2018-03-20T08:28:03+0000 lvl=eror msg=“cant read datasource provisioning files from directory” logger=provisioning.datasources path=/etc/grafana/provisioning/datasources

Also I cannot’ expose metrics to prometheus.

If you think it is a bug in Grafana (and not a problem with your file permissions or that the filepath is incorrect) then open an issue on GitHub. Otherwise, could you open a separate question here on the community site. Thanks!

1 Like

Thank you, I’ve solved.

How to “active” brute force protection?
I see that I am missing those lines in my grafana.ini

#disable protection against brute force login attempts
;disable_brute_force_login_protection = false

I installed my Grafana when the version was 4.x so maybe those lines are not being added because of my upgrades and now new installation.
I added the lines and still it doesn’t protect against brute force

I now understand, it is always active but if you want to disable brute force you need to add those two lines.
Anyway it should have been added between upgrades, but I think that is not possible to do because then it will overwrite other settings in grafana.ini.
Everything is fine now :slight_smile: