Quickly monitor servers. Lightweight, cross-platform, performant server monitoring tool, based on the ZeroMQ protocol.
I self-host custom software under multiple machines (old laptops, raspberry pis) and needed a tool to supervision these machines state remotely. I couldn’t find a tool that allowed me to drop a binary and silently connect the machine to a dashboard where I could monitor it. So I built this tool, which does just that.
The tool is distributed in the form of two binaries: master and node. The master binary deploys the supervisor agent by opening up an http and zeromq server, allowing monitoring agents to connect via zeromq channel and interacting with the dashboard via the browser. The node binary does all the data collection magic and connects to the supervisor.
Both these binaries are lightweight (15MB for master, 8MB for node) and are generally available in major OS and CPU architectures (Linux, Windows, macOS - x86/64, arm8, arm64). These are built and distributed using GitHub actions thanks to Go cross-compilation. The tool itself follows a simple embedded stack:
- Go for deploying fast and lightweight embedded applications
- ZeroMQ to form a network of embedded nodes
- HTML templates + Websockets for instantly rendering web pages on the server
- BoltDB for storing data in-memory