blog.iankulin.com

Monitoring

JSONata in Uptime Kuma

After a BOINC workload change pushed a homelab container’s memory usage past its monitoring threshold, I switched from keyword-based checks in Uptime Kuma to its JSON query feature, which applies JSONata expressions to fetched JSON metrics. I walk through the setup, and show a conditional query combining memory and CPU values...

Detecting front-end client errors

Client-side JavaScript errors go unnoticed by keyword-based uptime checks like Uptime Kuma’s, which is how a broken weather widget slipped past monitoring on one of my sites. I walk through building Faultsy, a lightweight alternative to Sentry: a browser script captures uncaught errors and unhandled promise rejections, reports them to a small Node server via sendBeacon(), and exposes per-site error counts as JSON that Uptime Kuma can monitor. The project is on GitHub and still under active development...

Fly.io, Uptime Kuma & scraping a status page

Because my Uptime Kuma monitoring instance runs on a home network sharing the same flaky 4G connection as the VPS sites it watches, I consider Uptime Robot before deploying a second instance on Fly.io’s free tier. Setting it up as a Docker container proves simple, and to fold the remote status back into my local instance I discover Uptime Kuma already exposes an SVG status badge usable with keyword monitoring, avoiding a custom scraping endpoint...

Simple API endpoint in Go

A small Go utility exposes a lightweight JSON endpoint on each node or VM indicating whether RAM and disk usage are okay. Uptime Kuma watches the endpoint with its HTTP keyword check and sends an ntfy push notification when a machine gets into trouble. I include brief impressions of writing in Go and link to the GitHub repo...

Lightweight Web Servers

After a couple of homelab incidents that Uptime Kuma didn’t catch, including a vanished USB mount and an NVMe drive filling up, I consider adding custom checks for things like disk space, memory use, and mount status via a small metrics endpoint. Weighing Node/Express against Python, C, and Golang, I conclude that C’s benchmark edge isn’t worth the hassle for endpoints polled only every few minutes...

Uptime Kuma & NTFY

I walk through setting up Uptime Kuma, a self-hosted monitoring tool, in a Docker container to watch network devices and web services, with notifications pushed to a phone via NTFY. I cover basic monitor types like ping and HTTP checks, how NTFY’s topic-based subscriptions work, and the security trade-offs of its open public topics...