14
digitalocean.com Managing Grafana Dashboards With grafonnet and git Adam Wolfe Gordon DigitalOcean PromCon 2019 Munich

Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

  • Upload
    others

  • View
    33

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

Managing Grafana DashboardsWith grafonnet and git

Adam Wolfe GordonDigitalOcean

PromCon 2019 Munich

Page 2: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

How many of you use Grafana?

Page 3: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

Is Grafana important to you?

Page 4: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

How many of you do code review?For your application/service/whatever?

Page 5: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

How many of you run CI tests?How many do some kind of CD?

For your application/service/whatever?

Page 6: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

How many of you do

code reviewCI testing

continuous deployment

on your Grafana dashboards?

Page 7: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

We should!

● Grafana dashboards are important.● We should apply good engineering practices.

○ Version control○ Code review○ Continuous integration and deployment○ Component re-use

Page 8: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

How?

● Grafana has an API - so this should be easy.● But:

○ Grafana’s JSON model isn’t pretty.○ Dashboards are inherently visual - hard to test/verify.

Page 9: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

Solution 1jsonnet and grafonnet

local grafana = import 'grafonnet/grafana.libsonnet';local dashboard = grafana.dashboard;

dashboard.new('My Cool Dashboard')

● jsonnet: JSON templating language.● grafonnet: Grafana jsonnet library.

● Human-friendly.● Allows for libraries.

{

"__inputs": [ ],

"__requires": [ ],

"annotations": {

"list": [ ]

},

"editable": false,

"gnetId": null,

"graphTooltip": 0,

"hideControls": false,

"id": null,

"links": [ ],

"refresh": "",

"rows": [ ],

"schemaVersion": 14,

"style": "dark",

"tags": [ ],

"templating": {

"list": [ ]

},

"time": {

"from": "now-6h",

"to": "now"

},

"timepicker": {

"refresh_intervals": [

"5s",

"10s",

"30s",

"1m",

"5m",

"15m",

"30m",

"1h",

"2h",

"1d"

],

"time_options": [

"5m",

"15m",

"1h",

"6h",

"12h",

"24h",

"2d",

"7d",

"30d"

]

},

"timezone": "browser",

"title": "My Cool

Dashboard",

"version": 0

}

Page 10: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

Solution 2Grafana’s Snapshot API

● Grafana can create snapshots.○ Point-in-time copy of a dashboard.○ Immutable.

● Not only for existing dashboards!

local grafana = import 'grafonnet/grafana.libsonnet';local dashboard = grafana.dashboard;local text = grafana.text;dashboard.new('My Cool Dashboard').addPanel( text.new( title="Oh Hi", content="Welcome to my dashboard.", ), gridPos={x: 0, y: 0, w: 24, h: 10},)

Page 11: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

Putting Together the Pieces

● git repository of jsonnet dashboard definitions.● Script to generate previews.● CI job to find changes and run the script.● CD job to publish dashboards on merge.

Page 12: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

digitalocean.com

Demo Time!https://github.com/adamwg/grafana-dashboards

Page 13: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous

Questions?

Adam Wolfe [email protected]

https://github.com/adamwg/grafana-dashboards

Page 14: Managing Grafana Dashboards With grafonnet and git PromCon … · Grafana dashboards are important. We should apply good engineering practices. Version control Code review Continuous