managing grafana dashboards with grafonnet and git promcon … · grafana dashboards are important....
TRANSCRIPT
![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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/12.jpg)
digitalocean.com
Demo Time!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](https://reader036.vdocuments.us/reader036/viewer/2022081622/613d36a2984e1626b65771f6/html5/thumbnails/14.jpg)