After running uptime.is for 12+ years, I finally built a monitoring service I always wished existed. It's powered by pyng, a monitoring system that started with just using Python standard library but now uses a bit more (mostly Twisted, though). It's still all boring tech, though, and mostly usable without JavaScript.
Key features:
* Powerful DNS monitoring (traces NS/DS records from root, DNSSEC validation, DNS-based blacklists)
* HTTP checks with full control (GET/HEAD/PUT/POST, custom headers, JSON parsing, multi-location via Mullvad)
* Tor network monitoring
* Push checks (inverted monitoring for cron jobs/batch tasks)
The tech stack is boring: Python + Twisted + SQLite, boring CLI tools (ping, drill, curl, nc), no containers, no exotic dependencies. The setup runs on a mix of OpenBSD/FreeBSD/Alpine Linux.
Pricing is simple: $15/year for basic checks, $20/year for checks that notify on output changes. No account creation – configure your check, pay, and it starts running.
This is still a proof-of-concept, but it's been monitoring my own infrastructure reliably. I realise that there are probably that many potential users, but the 'net is big, so I might get some anyway.
Yesterday I finally completed writing the documentation, and published my own reinvented wheel: Pyng.
Pyng is a daemon which runs checks and sends alerts on certain events. It is written in Python and uses Twisted event-driven networking engine for scheduling and retries, but uses existing command line tools for the dirty work.
I started on the project last year, primarily due to NodePing's DNS check limitations, and have been happily using Pyng ever since. I hope that others might find Pyng useful.
I consider Pyng finished software, i.e. it now has all the features I wanted from it.
The goal was to have easier discussions about SLA uptime requirements during negotiations for a client of mine. I also wanted an ability to make easy links to calculations when commenting on documents (under different domain initially).
The current stack is rather boring: OpenBSD, httpd, slowcgi and newLISP. httpd replaced Apache some years ago.
I kept adding small features here and there, most recently adding an ability to encode monitoring duration for complex and reverse calculations in the URL as a sequence of 7 letters (a=0, b=1 etc) to make URLs shorter and nicer.
Public API powered by Cloudflare Workers will be announced soon-ish. It wont’t use newLISP, but will be my very first JavaScript program.
Writing C might be challenging for some, but as others have mentioned, one can use some other language which gives a statically linked binary to place in the httpd chroot. It won’t be BCHS then.
For uptime.is I’ve used a stack which I’ve started calling BLAH because of LISP instead of C.
Depends on what you want it to do. Do you want to learn LISP or do you want newLISP to do a particular task? As a scripting language it does it's job very nice. I first started to use it when I needed a small, but flexible language that worked well on Windows. newLISP does the job just right.
A nice feature is the ability to compile a newLISP script to a standalone executable that does not require a newLISP interpreter. I hacked together a quick and dirsty script that my colleages at work like a lot - a script that cleans up crap in their windows profile directory. :-)
I have no experience with other LISPs though, and thus am not competent to say whether newLISP is a "true" LISP. To me that really does not matter - as long as the tool does the job.
Key features:
* Powerful DNS monitoring (traces NS/DS records from root, DNSSEC validation, DNS-based blacklists)
* HTTP checks with full control (GET/HEAD/PUT/POST, custom headers, JSON parsing, multi-location via Mullvad)
* Tor network monitoring
* Push checks (inverted monitoring for cron jobs/batch tasks)
* Multiple integrations (Atom feeds, JSON data, DNS-queryable status, ntfy.sh push alerts)
The tech stack is boring: Python + Twisted + SQLite, boring CLI tools (ping, drill, curl, nc), no containers, no exotic dependencies. The setup runs on a mix of OpenBSD/FreeBSD/Alpine Linux.
Pricing is simple: $15/year for basic checks, $20/year for checks that notify on output changes. No account creation – configure your check, pay, and it starts running.
This is still a proof-of-concept, but it's been monitoring my own infrastructure reliably. I realise that there are probably that many potential users, but the 'net is big, so I might get some anyway.
I'd love feedback from the HN community.