Member post originally published on Logz.io’s blog by Dotan Horovits
In the vibrant atmosphere of PromCon during the last week of September, attendees were treated to a plethora of exciting updates from the Prometheus universe. A significant highlight of the event has been the unveiling of the Perses project. With its innovative approach of dashboard as code, GitOps, and Kubernetes native features, Perses promises a revolutionary experience for Prometheus users, which gained a lot of traction at the conference.
In this episode of OpenObservability Talks, I had the pleasure of sitting down with Augustin Husson, the creator of the Perses project. Augustin is also a Prometheus maintainer, as well as a principal engineer at Amadeus. During our conversation, Augustin provided an insightful introduction to this intriguing metrics visualization tool, which I will recap on this post.
For additional updates, check out the PromCon recap and PrometheusDay recap posts.
Dashboard as Code and GitOps in Metrics Visualization
In the realm of Prometheus and monitoring, there has been an intriguing development that has caught the attention of the community: Perses. This innovative project emerged from an internal project at Amadeus travel tech juggernaut, to address the common challenges faced by heavy users of open source Grafana who found themselves grappling with issues arising from managing a vast number of dashboards at scale.
With over 5,000 dashboards in use at Amadeus, tracking their functionality became a daunting task. Upgrading Grafana often broke dashboards, due to schema changes. To mitigate these challenges, the idea of Perses was conceived.
Augustin joined Amadeus with the task of creating a new internal monitoring system based on Prometheus. Rather than merely addressing the issues at hand, Perses aimed to revolutionize the approach by enabling ‘dashboard as code’ in a GitOps-friendly fashion. Having a clear data model of the different visualizations and the dashboard, separate from the UI, would allow users to store and revise them as code alongside the monitored application, in a GitOps fashion.
This, however, is extremely difficult to achieve with Grafana. Augustin said they realized that the data model of Grafana is not made for dashboard as code, and the engineers find themselves struggling: “Basically, what some developers were doing, they were changing in the UI a dashboard to see how the data model was changing.”
The dashboard-as-code approach allows for the rapid creation and modification of dashboards, essential in high-pressure situations like on-call incidents. Moreover, Persers aims to provide a complete static validation of the dashboard format, so users could validate dashboards in a CI/CD pipeline using the Perses CLI.
When it comes to deployment, the natural way for Kubernetes folks to deploy a dashboard would be through a Custom Resource (CR), alongside the application being monitored, at the same time and in the same namespace. As intuitive as this dashboard-as-code sounds, this is very hard to pull off with Grafana, and this is the approach that Perses champions.
Granular Embedded UI Components with Plugins
Perses didn’t stop at just being a standalone tool; it introduced embedding capabilities with NPM packages. Perses’ architecture supports plugins, where a plugin could be a datasource, a variable, a query, or a panel, if to use the equivalents from Grafana. This has sparked significant interest, as it enables users to embed individual charts and visualizations in their UI, underscoring Perses’ flexibility and suitability for a wide array of applications.
This embedding functionality also meant that Perses could seamlessly integrate within larger platforms, such as Red Hat OpenShift. Both Red Hat and Chronosphere, recognizing Perses’ potential, embedded it within their respective platforms, demonstrating the project’s versatility and adaptability, and have joined as contributors to the project alongside Amadeus. Augustin would like to see these packages used to improve the display of the data in the Prometheus UI itself, to provide more visualization capabilities out of the box in Prometheus.
Perses, with its granular embedding options, offers a novel approach to data visualization and dashboard management. Its journey, originating from the challenges faced by real-world users, showcases the power of community-driven solutions.
A Linux Foundation Open Source, Aiming at the CNCF
An important aspect of Perses strategy is the foundational open source path. Perses is already a project under the Linux Foundation, which means it does not belong to Amadeus or any of the other contributing companies, but to the vendor-neutral foundation, and under its governance. Furthermore, Perses’s end goal is to join the Cloud Native Computing Foundation, joining Prometheus, Kubernetes and numerous other popular cloud-native open source projects.
The foundational open source strategy is of particular importance to the community in light of Grafana’s relicensing last year from Apache 2.0 to the more restrictive and copyleft open source license AGPLv3, and the uncertainty of what other changes the future holds. This community concern around the Grafana relicensing triggered the foundation of CoreDash Project under the CNCF, seeking Apache 2.0 foundational open source alternatives. As a CNCF Ambassador, I’m particularly excited to see Perses targeting joining the CNCF to fill in this gap in the CNCF observability stack.
“We’ve joined a working group under the CNCF umbrella,” Augustin says “We already started something with Perses, so anyone who is willing to join and help us, we can work together, it’s totally open. We want to provide it to CNCF.”
What the Future Holds for Perses
Perses bears a great promise. Julius Volz, the creator of Prometheus, called it “a new OSS dashboard builder project with a GitOps-first approach and the goal of making it a Cloud Native Computing Foundation alternative to Grafana.” Yet it’s important to remember that Perses is a very young project, and still far from providing the functionality and maturity equivalent to the popular Grafana. The project’s roadmap looks promising, with a Kubernetes-native mode, datasource auto-discovery, and Authentication & Authorization support. Augustin even stated the ambitious goal of going beyond metrics and into visualization for logs and traces.
Having the project under the Linux Foundation, and with three companies actively contributing to it, combining both end-users and vendors, is a good health indicator for a young open source project as well. And the support among the Prometheus community and maintainers is evident. It will be interesting to see who else joins the project, and the project’s adoption as it reaches general availability.
Want to learn more? Check out the OpenObservability Talks latest episode PromCon Recap: Unveiling Perses and Prometheus Ecosystem Updates.