km's comments

km | 3 months ago | on: Show HN: Uptime mongers – monitoring with powerful DNS checks and boring tech

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)

* 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.

km | 1 year ago | on: Show HN: Pyng – flexible self-hostable service monitoring and alerting

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.

km | 4 years ago | on: Show HN: SLA / Uptime Calculator

I made initial version some 12 years ago.

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.

EDIT: add info about the technical stack.

km | 4 years ago | on: BCHS: OpenBSD, C, httpd and SQLite web stack

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.

km | 18 years ago | on: What do you think about newLISP, a scripting language that claims to be a LISP dialect?

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.

Good luck.

page 1