@akobor

Kuvasz Uptime 2.0.0

Cover Image for Kuvasz Uptime 2.0.0
Adam Kobor
Adam Kobor
| 4 min read

It's been a huge effort, and I'm excited to announce that Kuvasz Uptime 2.0.0 has landed! This release delivers significant improvements and a refined foundation, setting the stage for more features coming in the near future.

Disclaimer

Five years ago, I started this project to have fun and make something open-source finally. It was stable, so I released 1.0.0 in 2020, but I think nobody really used it, not even me, because it wasn't fun to use. It was primarily a REST API in front of an uptime & SSL monitoring service. While it was flexible, it didn't provide a good user experience, let's be honest.

And then nothing much happened for a while. Pretty much for 5 years.

A Transformed Experience

Now I had again a good amount of topics that I wanted to try out, and Kuvasz looked like a good candidate for that. It's not a complete rewrite for sure, but a lot of - fundamental - things have changed under the hood, new features have been added, and the user experience has been completely transformed.

The most significant change you'll notice in version 2 is the introduction of a brand-new, modern Web UI. Managing your monitors, viewing stats, and configuring settings is a seamless and user-friendly experience right out of the box.

Kuvasz Uptime 2.0.0 UI

Beyond the UI, this release brings some pivotal changes and powerful new features:

  • Reworked Integrations: A major enhancement allows you to set up multiple integrations per type (like Slack or email) via YAML configuration. You can then apply these globally or assign them on a per-monitor basis, giving you a lot of flexibility in how you receive alerts.
  • YAML Configuration for Monitors: Embracing an "infrastructure as code" approach, you can now configure your monitors directly via YAML files, offering an alternative to the UI and API for management.
  • New Monitor Attributes: I've added several new attributes, including the request's HTTP method, following redirects, and a threshold for SSL expiry, giving you finer-grained control over how your checks are performed and when you're notified.
  • Optimized Performance & Robustness: Significant work has gone into optimizing the check scheduling logic and making the uptime & SSL checks more robust. This includes improved error handling, a better retry logic, and a better redirect management.

Show me your stack!

Most of the things remained the same: Kotlin, Micronaut, jOOQ, and PostgreSQL, I've only updated them.

However, I've spent a significant amount of time to:

  • Make the codebase more modular by introrducing a multi-module project layout, which I should have done at the very beginning 🤦
  • Try to make R2DBC with coroutines work in this setup, but let's say that I've encountered some problems. When I tried to bridge together Micronaut's scheduling logic, the coroutines, and R2DBC (don't even ask about testing it E2E in an elegant way!) I've hit a wall with some weird performance issues after a while, so I decided that I put it aside, and I'll focus on the more important things, because the database access was never a bottleneck anyway.

New stuff

  • SSR for the Web UI with kotlinx.html + Alpine.js and htmx for the interactivity
  • Tabler as the UI component library (didn't know it before, but it's really good!)
  • mkdocs-material for the documentation (unbelievable, I love it!)
  • Relying more on flexible YAML configs
  • E2E uptime tests with mockserver
  • Using kover for code coverage instead of jacoco
  • and many more...

Looking Ahead

Version 2 represents a considerable step forward in both functionality and stability, so this is hopefully something that I would like to use too. (Joking, already using it for months now). Furthermore, I also hope that in the future I can regularly dedicate time to the improvements and new features.

Wanna try it out? Head over to the brand new kuvasz-uptime.dev to get started or upgrade your existing instance (I would be surprised if somebody would have an existing instance, if you do, please let me know somehow).

Anyhow, your feedback is always valuable, so please don't hesitate to reach out if you have any questions (use GitHub's discussions) or encounter any problems (create an issue).

Happy monitoring!

Buy Me a Coffee at ko-fi.com

Comments