uptime mongers: (mostly) usable without javascript

welcome to uptime mongers

uptime monitoring with DNS, HTTP, ping, and push checks. powerful validations, flexible integrations. $15/year. no account required. many examples.

after more than 12 years of providing an uptime calculation service at uptime.is (and a little bit before that at oppetid.info), i am finally happy to announce availability 🥁 of an uptime monitoring service which i always wished had existed.

uptime mongers is not supposed to be used for all your monitoring, but for the one or two weird checks, such as getting notified when parent changes NS delegation or when a signed zone for some reason fails to propogate from hidden primary to the public servers, or to monitor your own monitoring.

nerdy stats

about

uptime mongers is pyng checks as a hosted service. pyng is a monitoring system i built after using NodePing for almost a decade. i was happy with NodePing, but i needed more powerful DNS checks (and i was not very happy knowing that Node.js was running my checks). so in 2023 i wrote a replacement in about 1 350 lines of Python using just the standard Python library and otherwise a bit of boring technology (ping, drill, curl, nc) that just works. kode24 wrote about it.

about a year later when evaluating Twisted for some other unrelated tasks, i ported pyng to Twisted, wrote documentation and published everything. writing documentation has taken a lot of time!

about another year later, at a conference in november 2025, a friend tried to show me his new app and it was down! "i really need to add some monitoring," he muttered. i pulled out my laptop, added a pyng check for him right there. when the app came up again, he was paged on his phone. i and asked: "would you pay for this?" "heck, yes," he said. he said 15 USD was a fair price. and here we are.

i am certainly expecting "i could build that in a weekend" reactions, and they are fair, as the initial prototype was done quite quickly. but then it took me two years to go from an idea to a proof-of-concept service, running the thing for my own monitoring during that time. if uptime mongers turns out to be a popular service, i might build a proper service around pyng. for now uptime mongers is a proof-of-concept and should be treated as such.

boring technology

technical stack

pyng is written in Python and tries hard not to reinvent the wheel, but rather using tested command-line utilities: ping for ICMP checks, drill for DNS queries, curl for HTTP requests. pyng orchestrates them with Python, handling scheduling, alerting, and result validation. the small tools that do one thing well are composed together to solve a complex problem and create an elegant service.

uptime mongers is developed primarily on OpenBSD, and running in production on a mix of OpenBSD, FreeBSD and Alpine Linux. there are no containers (not for now, but i think they could be useful to deploy command runners, as those require no configuration and no state), no exotic dependencies and no trendy frameworks that'll be abandoned next year — just solid, boring technology that's been working for decades. the only exception here might be htmx, but it's used only as a convenience tool for more user-friendly dashboards.

infrastructure

the entire service is self-hosted on the infrastructure provided by Hetzner on two VMs: one runs the master, another one runs all the commands. uptime mongers is monitored by a pyng instance running on my main server.

some useful, non-essential features provided by some other nice folks:

integrations everywhere

all monitoring data is available in multiple formats. every check provides an atom feed for the feed readers, and raw JSON endpoints for programmatic access to results data, events and runtimes. average runtimes may be fetched periodically to build own RRD graphs, pipe results into your logging infrastructure or integrate with existing tools.

live check status data are also queryable via DNS, and optional push alerts are provided through ntfy.sh — a simple HTTP-based pub/sub notification service. actually, ntfy.sh allows to subscribe to receive events in real time as JSON stream, SSE stream or raw stream.

fair pricing

the pricing is simple and straightforward: a basic check which alerts of checks going down and up costs 15 USD per year (+ any applicable taxes). a check that also notifies about changes in output costs 20 USD per year (+ any applicable taxes). both kinds of checks provide access to raw JSON data, atom feed and ntfy push alerts.

subscriptions are managed entirely through Paddle, so you get proper invoices and can cancel or update payment methods through their system. when your subscription renews, your check keeps monitoring. when it expires, the check stops and gets purged.

full refunds may be requested within 14 days of payment.

simple onboarding

there are no accounts to create: you configure your check and complete payment at the end — that creates your subscription. your check starts running and keeps running as long as the subscription is active.

please be sure to bookmark the page you are being redirected to after the payment, though.

open chat

please join the uptime matrix room if you'd like to chat about uptime mongers, for example about which mon to use for a certain task or how to configure it, or uptime.is. there's also a channel on IRC, for those who prefer a lighter option.

create new check

below you'll find an overview of the different check types which are called "mons". pick the one that matches your need, or browse the examples to see what's possible.

reach out on matrix or IRC if you need help.

ping

ping is the simplest and most common way to monitor remote systems.

ping mon is powered by the PING pyng check.

dns

dns was the motivation for creating pyng, and has a number of very powerful facilities for DNS monitoring, such as checking age and expiration time of DNSSEC signatures.

dns mon has a number of special-purpose incarnations:

dns mon is powered by the DNS pyng check.

http

http provides full-featured monitoring with complete control over every request parameter.

http mon has a number of special-purpose incarnations:

for privacy-conscious monitoring or testing services over Tor, specialized variants are available:

http mon is powered by the HTTP pyng check and uses Mullvad SOCKS5 in order to enable changing location for the connection.

push

i have wanted a push check ever since pyng was created, but it took me about a year to figure out an simple and elegant architecture. push inverts traditional monitoring: instead of actively checking your systems, it receives heartbeats from external processes and may detect silent failures in cron jobs, batch operations, and scheduled tasks.

push mon is powered by the PUSH pyng check.

examples


uptime mongersterms of serviceprivacy policyrefund policycontact information