Documentation: v4.2.0 - kuvasz-uptime.dev
docker pull kuvaszmonitoring/kuvasz:4.2.0
Important
There is a short questionnaire about Kuvasz in general, which you can fill out anonymously. It takes only a few minutes, and your feedback is highly appreciated as it helps me to focus on the most important features and improvements in the future. You can find it here.
Thanks, Adam
Features
TCP and DNS monitors are here!
-
You can now create TCP monitors that check whether a TCP service is accepting connections — a database, an SMTP or SSH server, a message broker, a game server, or any other
host:portendpoint — by periodically opening a TCP connection to it. For each check Kuvasz measures reachability and connect latency, and marks the monitor as DOWN (notifying you through your configured channels) if the connection can't be established within the configured timeout or, when set, exceeds the optional latency threshold. -
DNS monitors arrived as well! They check whether a name resolves, and you can assert on the records it resolves to. A monitor holds a list of record matchers (
A,AAAA,CNAME,MX,NS,TXT,SOA,SRV,CAA,PTR) matched asEXACT,CONTAINSorREGEX, can expect a specific response code (so "this name must not resolve" checks work too), and can query a custom nameserver overUDPorTCP. On top of that, an opt-in drift detection notifies you when the resolved records change, without flipping the monitor to DOWN. See the Managing DNS monitors section for further details.
Both new types are fully integrated across Kuvasz: they're manageable via the Web UI, REST API, or YAML, participate in incidents, uptime & latency stats, notifications (including generic webhook templating), the metrics exporter, YAML import/restore, and are exposed to AI assistants through the MCP server.
Enhancements
-
The UI got a facelift:
- the dashboard was cleaned up and its stat cards now use conditional colors, so a glance is enough to tell whether everything is fine.
- the columns of the monitor lists were streamlined with consistent sizing.
- fixed the positioning of the loading spinners on the UI.
-
Nicer empty states everywhere: the dashboard, the monitor lists, the incidents, the integrations, the maintenance windows and the status pages all have a proper empty state now.
-
The Settings page was revamped: the read-only flags of your resources moved to their own "Editability" card, and the SMTP settings got a dedicated card as well, instead of being the only entry under the old integration settings.
-
Faster status page details: the uptime statistics of the status pages (and of the
GET /api/v2/status-pages/{statusPageId}/detailsendpoint) are calculated with batched queries now, instead of querying the uptime events of every monitor one by one. The bigger your status page is, the more noticeable it is.
Fixes
- ICMP latest-latency metric: the
icmp-latest-latencyexporter now also updates when a monitor goes DOWN due to partial packet loss while some replies still arrived, instead of freezing on the last successful check. The exported gauge now stays consistent with the recorded latency history in this degraded state. - Case-insensitive sorting across the UI: monitors, maintenance windows, status pages and integrations were sorted by their name in a case-sensitive way, which pushed every lowercase name after the uppercase ones. They are ordered case-insensitively from now on.
Docs
- Documented the SMTP related environment variables (
SMTP_CONFIG_HOST,SMTP_CONFIG_PORT, and the rest): the SMTP configuration doesn't have to be provided via YAML, it can be set through environment variables as well. - Added a new recipe about keeping secrets out of your configuration file, covering both the
${VARIABLE_NAME}placeholders (with default values) inside the YAML, and splitting your configuration into multiple files viaMICRONAUT_CONFIG_FILES, so your secrets can come from a Docker secret.
Full Changelog: 4.1.0...4.2.0