惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
T
Threatpost
C
CERT Recently Published Vulnerability Notes
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Security Archives - TechRepublic
Security Archives - TechRepublic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
K
Kaspersky official blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
Project Zero
Project Zero
H
Heimdal Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Know Your Adversary
Know Your Adversary
Google Online Security Blog
Google Online Security Blog
W
WeLiveSecurity
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Schneier on Security
Schneier on Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
N
News | PayPal Newsroom
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Hacker News: Front Page
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
Cloudbric
Cloudbric
V
Vulnerabilities – Threatpost
Hacker News: Ask HN
Hacker News: Ask HN
S
Securelist
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
TaoSecurity Blog
TaoSecurity Blog
NISL@THU
NISL@THU
N
News and Events Feed by Topic
S
Security Affairs
The Last Watchdog
The Last Watchdog
T
Tor Project blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
The Exploit Database - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
P
Palo Alto Networks Blog
AWS News Blog
AWS News Blog
P
Proofpoint News Feed
C
Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tenable Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security

Kyle Redelinghuys

How I Got the UK Global Talent Visa as a Software Engineer Claude Cowork: Closing the Gap Between Coding and Knowledge Work Teaching a Transformer to Read DNA: How EabhaSeq Works Claude Code Agents & Subagents: What They Actually Unlock AI Agent Context Management: What I Built in Cont3xt Claude Agent SDK: Subagents, Sessions and Why It's Worth It I Built a Claude Code Cost Tracker - Was Max Worth It? Claude Code Pricing Guide: Which Plan Saves You Money OpenClaw: How I Built a Personal AI Operations Centre on Linux Claude Code Hooks: Automate Your AI Coding Workflow Have Anthropic Already Won the AI Race? Sonde: An AI Tool for Solving Complex Organisational Problems Open Sourcing EabhaSeq: Synthetic cfDNA for NIPT Research SoupaWhisper: Free SuperWhisper Alternative for Linux (Open Source)
SrvMon: Self-Hosted Server Monitoring Built in Go
Kyle Redelinghuys · 2026-03-28 · via Kyle Redelinghuys

Server monitoring has always felt like a solved problem that nobody actually solved for the people who need it most. The options split into two extremes and neither is right for a solo developer running side projects. On one side you have Datadog, New Relic, and the rest of the SaaS stack, somewhere in the range of $15-30 per host per month, which sounds reasonable until you have five servers and you're looking at a $150 monthly bill for infrastructure that generates exactly zero revenue. On the other side you have the self-hosted route - Prometheus, Grafana, Alertmanager, node_exporter, all bolted together - and you spend a weekend configuring something that's more operationally complex than the infrastructure it's supposed to be watching. For a company with a dedicated platform team the second option makes sense. For a solo developer it really doesn't.

I've been in this situation for a while. Several projects, a handful of servers, and I just couldn't justify the cost for things that only I care about. The open source stack was always sitting there as a theoretical option but every time I got close I'd think about the maintenance burden and close the tab. So for longer than I'd like to admit I just didn't have any monitoring, which is its own kind of uncomfortable - you find out something's wrong when someone messages you, not when it starts going wrong.

I decided to build something instead.

What I Wanted

The requirements were simple: CPU, memory, disk, and network metrics per server, alerts when something crosses a threshold, a dashboard I could look at without it feeling like a chore, and installation that doesn't consume half a day. I also needed it to work across different networks without firewall configuration, because I run servers in a few different places and the last thing I wanted was to open inbound ports everywhere just to scrape metrics.

The result is SrvMon - a self-hosted server monitoring platform with a 6MB static agent binary, a Go API server backed by PostgreSQL, and a Vue 3 dashboard. No per-host pricing, no external service dependencies, no complex stack to maintain. It's open source and free to deploy yourself, or you can sign up at srvmon.dev and use the hosted version.

Why I Didn't Just Use Prometheus

This is probably the obvious question, and the honest answer is setup complexity and maintenance overhead. Prometheus is genuinely excellent for what it does, but what it does assumes you have certain things already in place. It's pull-based, which means it needs to reach your servers, which means firewall rules or service discovery or both. You then need Grafana to actually see anything useful, and Alertmanager if you want notifications, and node_exporter on every host you want to monitor. Each of those is a dependency you own and need to keep running.

I've done this before on projects where it made sense - where there was a team and the monitoring stack was worth the investment. For a handful of personal servers it felt like using a crane to hang a picture frame. What I wanted was something I could deploy once, forget about, and trust to tell me when things go wrong.

The other thing worth saying is that Prometheus's pull model is genuinely the wrong architecture for monitoring servers across different networks. You'd need either a central Prometheus server with network access to everything, or a push gateway, or a federation setup - and at that point you're deep into configuration work that has nothing to do with actually monitoring your servers.

The Build

I built SrvMon almost entirely with Claude Code over a few days, working through a structured 13-phase plan where each phase was designed to produce a complete deployable feature rather than a pile of partial implementations. Claude Code handled around 98% of the implementation. The pace was fast enough that the thing that surprised me most wasn't how quickly the code came together, but how well the one-line agent installation worked - run a script, it detects your platform, downloads the binary, writes a config to /etc/srvmon/agent.env, creates a hardened systemd service unit, and starts it. That whole flow just worked.

I'm currently running SrvMon on four of my own servers and the agents have been quietly doing their job since I deployed them.

Deployment uses Ansible, which I reach for on almost every project at this point - agentless, idempotent, no orchestration infrastructure required. Caddy sits in front handling TLS automatically via Let's Encrypt, and GitHub Actions runs the Ansible playbook on every push to main. The whole server side is a single static Go binary and a PostgreSQL database.


The rest of this article covers how SrvMon works under the hood - the push-based architecture and why it beats pull for this use case, the Go backend design decisions, the database schema and query patterns, the alerting engine, and a full walkthrough of getting it running on your own server. Sign up free to keep reading.


This post is for subscribers only

Sign up to read the post and as well as all other member only posts. Subscribing only takes a few seconds and will give you immediate access.

Subscribe now

Already have an account? Log in