Hacker News new | ask | show | jobs
by Spidler 2424 days ago
Grafana seems amazing at first.

Variables to abstract out some, a bit of "repeat" to loop over something, and you get pretty drop-downs that you can combine to show nice graphs.

Then you think "I'll add it to a playlist". and you do so.

Then you think "my kiosk can't scroll this much for all, let's have one screen each for the apps" and you do.

And then you realize you cannot use variables from playlists, and you cannot template screens.

So you make eight copies of your screen, one for each variable configuration.

And you edit each copy of your screen to set the variables, and save it.

And then you realize that there was a typo in one panel.

So you go in and edit in eight different screens to fix that typo.

Then you realize that it doesn't look good on the TN panel, so you need to change a few colours to get better contrast.

So you do that on eight different copies, by the means of clicking in every pane, navigating through the point-n-click and then pressing.

But you realized that you learned this, so you're fast, and use the keyboard. Except then the change doesn't take.

Because grafana requires you to click in another field after you've edited, or your change doesn't hold if you press "Escape" or other key to navigate back.

And that's how I learned how Grafana is best of breed in GUI dashboard tools. Sort of how a pug is best of breed in a dog competition.

3 comments

I use Ansible + Jinja2 templates to create and update my dashboards. Minor tweaks and changes can be pushed to hundreds of dashboards using the grafana API
This sounds really interesting. Do you have anything public you can share on this?
I don't have an easy way of sharing this but I'm free to answer any questions about it.

My process is 1. identify services that benefit from a generated dashboard (a service that I am running hundreds of instances of, for instance) 2. create the first dashboard by manually 3. export the dashboard to JSON and turn it into a jinja2 template 4. use ansible to access the cloud provider api to get whatever metadata I need to populate the now templated dashboard 5. store the updated dashboard as code and also push it to Grafana via API with Ansible

This is all automated and you can skip all the way to step 4/5 if you plumb this to your service build/delivery automation.

The dashboards are JSON files. You can automate/script them and generate any way you want them.

At one point I used a script that ran before grafana in the docker container, and that script ran a query on AWS to populate the dashboard.

Amazing UX feedback, thanks!!