Grafana dashboards and customer alerts as code for an energy SaaS company
Grafana across three AWS environments in Pulumi: 25 dashboards built from templates, alerts routed to each customer, and a move from Cognito to Auth0.
Client and industry
Onu Energy
Energy procurement SaaS, Germany
The problem
The client's product is Grafana: their customers log in to see energy prices, positions and consumption. Every new customer meant copying dashboards and alert rules by hand, and a mistake could send one customer's alert to another.
What we did
- Grafana on AWS as code. Three environments defined in Pulumi, with a separate alerting-only Grafana instance in production reachable only through a bastion host. Changes ship through GitHub Actions.
- Dashboards from templates. We built 25 dashboards. A pipeline watches template dashboards and deploys a copy for each customer folder with the right data source and variables.
- Customer alerts as code. Alert rules are SQL files. The pipeline reads the customer table and creates contact points, notification policies and mute timings per customer for electricity, gas and futures alerts. In development every alert goes to the internal team, never to a real customer.
- Data and reports. Pipelines load data from customer APIs into PostgreSQL, where dbt models shape it for the panels. Dashboards export to PDF reports.
- Login. We migrated 15 customers from Amazon Cognito to Auth0 single sign-on.
Stack used
Grafana, Pulumi, AWS, GitHub Actions, PostgreSQL, dbt, Amazon Cognito and Auth0.
Duration
24 months
Outcome
Grafana became the client's product: a per-customer dashboard and alert platform that let them ship fast and win their first paying customers. It ran in production for over two years, until the company moved to its own website
Start with an Observability Audit
In one to two weeks we review your monitoring, logs and alerts and tell you what to fix first.
Related case studies
SLA reporting and a managed Grafana migration for a building operations company
We turned incident records and monitoring data into monthly and quarterly SLA reports, and moved Grafana dashboards to Amazon Managed Grafana.
- Grafana
- Amazon Managed Grafana
- PostgreSQL
- Datadog
- Python
Live plant data from Modbus controllers into Grafana for a geothermal company
Telegraf reads cogeneration units, heat pumps and meters over Modbus at three sites. Energy monitors and market prices sit beside them in Grafana.
- Telegraf
- InfluxDB
- Grafana
- Modbus
- Python
AWS platform and fleet monitoring for a commercial coffee roaster manufacturer
Cut monitoring costs by about 80 percent by moving from Logz.io to managed Grafana, then automated equipment onboarding and fleet updates.
- Grafana
- Prometheus
- Terraform
- AWS IoT Core
- AWS Lambda
- Amazon ECS
- OpenTelemetry
- Ansible
- Python