Jag ville ha koll på mina servrar utan att behöva logga in på varje enskild maskin. Och utan att betala för tjänster som Datadog eller Zabbix. Lösningen blev SkyNode — ett egenutvecklat system där en liten agent på varje server rapporterar sin status, och en HTML-sida samlar ihop allt i en live-dashboard.
Projektet tog ungefär ett år att växa fram till vad det är idag — med idéer, omskrivningar, testande och lärande längs vägen. Det är inte perfekt, men det är mitt — och det funkar.
Windows + Linux
lyssnar på
bygga systemet
Varje server kör en liten agent-process som samlar ihop information om sig själv. Dashboarden (en HTML-fil) frågar sedan varje agent och ritar upp resultatet i realtid.
kör agenten
/status
hämtar data
i webbläsaren
Dashboarden behöver inte ligga på samma maskin som agenterna — den är bara en HTML-fil som kan öppnas i vilken webbläsare som helst, var som helst på nätverket. Den frågar agenterna direkt via HTTP.
Agenten är ett litet program som startar automatiskt när servern startar och sedan bara sitter och lyssnar. När dashboarden frågar, svarar agenten med ett JSON-paket fyllt med info om servern.
Agenten behöver inga externa bibliotek eller beroenden — den är avsiktligt enkel och portabel.
🪟 Windows-agenten
- Skriven i PowerShell
- Kör som Administrator
- Autostart via Task Scheduler
- Hämtar CPU, RAM, diskar
- Övervakar Windows-tjänster
- Kopplar mot SQL Server / MySQL
- Skapar brandväggsregel automatiskt
🐧 Linux-agenten
- Skriven i Python 3
- Kör som root (sudo)
- Autostart via systemd
- Läser /proc för CPU + RAM
- Kör df för diskinformation
- Kollar systemctl-tjänster
- Stöd för MySQL + PostgreSQL
Varje gång dashboarden frågar agenten returnerar den ett JSON-objekt med all relevant serverinformation. Det ser ut ungefär så här:
{
"name": "PROD-SERVER-01",
"os": "Windows Server 2022 Standard",
"online": true,
"cpu": 23, // procent (0-100)
"ramGB": 32.0, // totalt RAM i GB
"ramUsed": 14.2, // använt RAM i GB
"disks": [
{ "letter": "C:", "total": 120, "used": 67 },
{ "letter": "D:", "total": 500, "used": 312 }
],
"services": [
{ "name": "W3SVC", "status": "ok" },
{ "name": "Spooler", "status": "stop" }
],
"ts": "2025-04-26 14:22:01"
}{"ok": true} om agenten är igång.Dashboarden är en vanlig HTML-fil som du öppnar i webbläsaren. Inget Node.js, inga npm-paket, inget backend. Allt JavaScript är inbyggt i filen och kommunicerar direkt med agenterna via fetch().
öppnar HTML-fil
varje 30 sek
svarar med JSON
vyn automatiskt
I dashboardens CONFIG-objekt listar man sina servrar med IP och port. Dashboarden frågar sedan alla servrar parallellt, ritar upp ett kort per server och uppdaterar sig automatiskt var 30:e sekund. Om en server inte svarar visas den som offline.
const CONFIG = { refreshSeconds: 30, servers: [ { name: "Webb-server", url: "http://192.168.1.10:9191" }, { name: "Databas-server", url: "http://192.168.1.20:9191" }, { name: "NAS", url: "http://192.168.1.30:9191" }, ] };
Agenten är designad att starta automatiskt och köra i bakgrunden utan att störa det övriga systemet.
# Kopiera agenten: sudo cp agent-linux.py /opt/monitor/agent-linux.py # /etc/systemd/system/monitor-agent.service [Unit] Description=Server Monitor Agent After=network.target [Service] ExecStart=/usr/bin/python3 /opt/monitor/agent-linux.py Restart=always User=root [Install] WantedBy=multi-user.target # Aktivera och starta: sudo systemctl daemon-reload sudo systemctl enable --now monitor-agent
# Kör install-skriptet som Administrator: powershell -ExecutionPolicy Bypass -File install-windows.ps1 # Skriptet sköter automatiskt: ✓ Kopierar agenten till C:\Monitor\ ✓ Skapar brandväggsregel för port 9191 ✓ Skapar schemalagd uppgift som kör som SYSTEM ✓ Startar agenten direkt
X-Monitor-Token-headern.
Projektet — ungefär ett år av byggande
Vad du får med SkyNode
- Windows-agent skriven i PowerShell
- Linux-agent i Python 3
- Live-dashboard som körs direkt i webbläsaren
- Automatisk uppdatering
- Stöd för MySQL, MariaDB och PostgreSQL
- Inga molntjänster, inga externa beroenden
- Designad för internt nätverk med valfritt token-skydd
Bildgalleri
Nyfiken på att bygga något liknande?
Hör av dig — jag berättar gärna mer om hur det är uppbyggt och vad jag lärt mig längs vägen.
Kontakta mig

