Skip to content

Commit

Permalink
add blog post about the release v0.50.0
Browse files Browse the repository at this point in the history
Signed-off-by: Augustin Husson <husson.augustin@gmail.com>
  • Loading branch information
Nexucis committed Jan 15, 2025
1 parent 6ff89d4 commit 28c31ba
Show file tree
Hide file tree
Showing 7 changed files with 91 additions and 0 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/images/blog/v050/reorder-columns.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file added docs/blog/index.md
Empty file.
88 changes: 88 additions & 0 deletions docs/blog/posts/v0.50.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
---
date: 2025-01-15
categories:
- release
---

# Release v0.50.0

## Migration

One of the greatest content of this release is the migration that has been drastically improved.

Since the beginning of the project, we have been willing to provide an easy way to migrate dashboards from Grafana to
Perses. As a reminder you can migrate a Grafana dashboard using the HTTP endpoint `/api/migrate` or the UI or the CLI
that consumes this endpoint.

The big issue with this feature was the memory leak that was hidden and not that easy to trigger.
(See [issue #2039](https://github.com/perses/perses/issues/2039))

This was a big blocker for the migration and one of the main reasons why Amadeus was not able to migrate to Perses.
Amadeus has a huge amount of dashboards, and the memory leak was too important to be ignored.
To give you an idea, the memory leak was about **40GB** after migrating **3000 dashboards**. (~ 3MB per dashboard)

![Memory leak](../../assets/images/blog/v050/migration-memory-leak.png)

As you may know, we are using Cuelang for the Perses plugin validation, and at first we implemented a complete way to
migrate using Cuelang only.
The idea behind was to append every migration script (one for each panel, variable, queries) to the main one.
Then the Grafana JSON was converted to a Cuelang value, and we were applying the migration script to this value.

With the v0.50.0, we are changing deeply and only internally the way it's working. It doesn't change anything for the
user, but it's a huge improvement for the maintainability and the performance of the migration.

We have entirely rewritten the migration process. It is now using a hybrid system partially written in Golang and the
rest in Cuelang when the plugins are involved. Thanks to this new system, the Cuelang files written to migrate the
panels, the variables and the queries can be validated and tested before the migration is applied.

Thanks to this change, we are happy to announce the memory leak has been fixed and the migration is now working
perfectly. We perform some benchmarks through the Amadeus infrastructure, now we are able to migrate their 3000
dashboards **without exceeding 1.5GB of memory**

![no more Memory leak](../../assets/images/blog/v050/migration-without-memory-leak.png)

Finally, we’ve also addressed numerous updates to the migration process itself, incorporating fixes and enhancements to
better cover use cases raised by the community - thank you for your contributions!

## Status History panel

Thanks to [Alexander Belyakin](https://github.com/abelyakin) from the community, Perses is supporting a new Panel: the
Status History Panel.

The Status History panel provides a visual representation of the status of various metrics over time.
It allows users to track changes in the status of different metrics, making it easier to identify patterns, trends, and
anomalies.
This panel is particularly useful for monitoring the health and performance of systems, as it can display status changes
in a clear and concise manner.
The panel can be customized to show different statuses, such as up, down, warning, or any other user-defined states, and
it supports various visualization options to enhance the readability of the data.

And of course, this panel is fully compatible with the migration process.

![Status History panel](../../assets/images/blog/v050/status-history-panel.png)

## General Improvements

### UI

We have finally added the redirection to the initial URL after you are authenticated. This was definitely a missing
feature annoying for the users.

This release also introduces various improvements to the **Table Panel**, such as debounced text fields in the
editor, default column sorting, custom column ordering, default column width setting, and cell focus on hover.

![Table Panel reordering columns](../../assets/images/blog/v050/reorder-columns.gif)

### CLI

First, we have fixed the login command not working if you were using the CLI to log in to different Perses server.

Then, based on the community feedback, we also have improved the DAC (Dashboard as Code) sub-command.
We hope the experience with our DAC framework will be better.

We are also introducing new commands for the plugin development.
That's something that comes along with the new plugin architecture we are working on since last year.
These commands cannot be used currently as we are still working on the plugin architecture.

But stay tuned as we are really closed to finish this intense work! **V0.51.0** is going to be incredible with a lot of
changes!
3 changes: 3 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ extra:
# Multi repo support
plugins:
- search
- blog
- multirepo:
# (optional) tells multirepo to cleanup the temporary directory after site is built.
cleanup: true
Expand All @@ -93,6 +94,8 @@ plugins:
imports: [docs/*]
nav:
- 'Home': 'index.md'
- 'Blog':
- blog/index.md
- 'Docs':
- 'API':
- 'Introduction': 'perses/docs/api/README.md'
Expand Down

0 comments on commit 28c31ba

Please sign in to comment.