Uptime monitoring with Healthchecks.io (is possible!)
Besides this blog, I operate a small set of web services:
- Jawanndenn
- linuximages.de
- …and a few others.
Until recently, I have been monitoring their availability using Cabot. Cabot is Open Source, self-hostable, written in Python, based on Django, sends e-mail when things start to appear offline — not too bad. But its maker stopped maintaining it over four years ago and it is still using Python 2.7; forking the project was not an option to me, so it was time to look for alternatives to Cabot.
I remembered Healthchecks(.io) from briefly seeing it in the past but it never came up in the results when googling for "uptime monitoring" and page Healthchecks.io Compared to Cronitor eventually made it clear — website monitoring is not supported.

But if that's the answer — am I asking the right question?
What if the task of uptime monitoring — sending e-mail when things go offline — could be solved with Healthchecks but not inside of it?
It turned out that all it takes is a small external ingerient: a small tool checking the websites frequently and reporting to Healthchecks about whether that worked: Healthchecks would treat it like any other cron job and alert me whenever pings would stop coming in — cool!
Long story short: For that added piece I ended up writing
a simple container cron
— pytocron —
with native Healthchecks integration. Given a crontab
file like this…
# hc-ping: https://hc-ping.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 1/30 * * * * * * online https://blog.hartwork.org/ 'Hartwork Blog' # hc-ping: https://hc-ping.com/yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy 2/30 * * * * * * online https://jawanndenn.de/ 'Create a new poll' # hc-ping: https://hc-ping.com/zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz 3/30 * * * * * * online https://linuximages.de/ 'openstack'
…pytocron will now check these three websites every 30 seconds and use the URLs
from the # hc-ping: <URL>
comment lines to report to Healthchecks
whether these checks succeeded. Just one small container more in my herd.
Command online
in this is /usr/local/bin/online
and this simple custom-made script:
#! /usr/bin/env bash # Copyright (c) 2025 Sebastian Pipping <sebastian@pipping.org> # SPDX-License-Identifier: 0BSD set -e -u if [[ "${#}" -ne 2 ]]; then echo "usage: online URL NEEDLE" >&2 exit 1 fi url="${1}" needle="${2}" wget -qO- -T3 "${url}" | grep -qF "${needle}"
Combined with the Healthchecks dashboard, I even have a simple status page now at status.pipping.org.
That's all it takes to do uptime monitoring with Healthchecks.
Was that interesting and/or helpful to you? Please let me know.
Best, Sebastian