Automatisierte Linux-Server-Diagnose: Von manuellen Checks zu eBPF-Analyse in Minuten
Entwickler und Sysadmins mit Linux-Erfahrung kennen das: Eine Beschwerde über einen "zögerlichen Server" bedeutet, die üblichen Verdächtigen zu starten — top, vmstat, iostat, ss. Das ist Stufe-1-Diagnose, die 20–40 Minuten dauert. Danach taucht man in eBPF-Tools wie runqlat, biolatency, tcpretrans von Brendan Gregg ein. Der Haken: Seltene Vorfälle verblassen im Gedächtnis, also googelt man ständig nach /proc-Dateien, sysctl-Parametern und BCC-Tools-Syntax.
KI (ChatGPT, Claude) vereinfacht die Log-Analyse, sammelt aber keine Daten. Neuronale Netze starten keine Tools selbstständig oder verbinden Metriken wie PruneCalled mit TCP-Speicher. Man braucht einen strukturierten Datensammler für die KI.
Melisai: Datensammlung in einem JSON
Melisai ist ein statisches Go-Binary ohne Abhängigkeiten. Starten Sie es mit:
sudo melisai collect --profile quick -o report.json
Quick-Modus dauert 10 Sekunden, deep-Modus 60 Sekunden. Ausgabe: JSON mit CPU-, Speicher-, Festplatten-, Netzwerk-, Prozess-, Container- und GPU-Metriken.
Was es sammelt:
- Stufe 1: procfs, sysfs,
ss,ethtool,nvidia-smi(kein Root nötig). - Stufe 2: 67 BCC/eBPF-Tools (
runqlat,biolatency,tcpretransetc., erfordert Root + bcc-tools). - Stufe 3: natives eBPF via cilium/ebpf (Root + Kernel ≥5.8 mit BTF).
Fallback: Bei fehlender Stufe 2/3 läuft Stufe 1.
Zwei-Phasen-Sammlung und Rate-Metriken
Um den Beobachtereffekt zu vermeiden, ist die Sammlung geteilt:
- Basislinie: Stufe-1-Metriken (CPU, Speicher, I/O, Netzwerk).
- eBPF: BCC-Tools nach der Basislinie.
Rate-basierte Berechnungen: Deltas zwischen Messungen. Keine kumulativen Zähler (200-Tage-Uptime = softnet_dropped=5000 ist normal), sondern Raten (softnet_drop_rate=50/s signalisiert Anomalie).
37 Anomalie-Regeln basierend auf Gregg und Produktionspraktiken:
| Kategorie | Beispiel-Schwellenwerte |
|-----------|-------------------------|
| CPU | Auslastung>95%, PSI>5%, runqlat p99>50ms |
| Speicher | direct reclaim>10/s, THP splits>1/s, NUMA miss>5% |
| Festplatte | Auslastung>90%, Latenz>50ms |
| Netzwerk | Retransmits>50/s, conntrack>90% |
| GPU | NUMA-Fehlanpassung GPU-NIC |
Fallstudie: Kaskadenfehler auf einem Docker-Host
Produktionssetup: 8 Kerne, 32GB RAM, HDD-RAID. Symptome: Allgemeine Verlangsamung.
sudo melisai collect --profile deep --ai-prompt -o report.json
Ergebnisse (60 Sek.):
Health Score: 46/100
Anomalien:
[KRITISCH] tcp_retransmits 134/s
[WARNUNG] disk_util 80,5%
[WARNUNG] cpu_psi 17,6%
[WARNUNG] io_psi 12,8%
[WARNUNG] disk_latency 12,1ms
[WARNUNG] tcp_close_wait 1 Socket
Kaskade:
- HDD p99=49ms → Block-I/O-Latenz (
biolatency). - PruneCalled=105 → TCP-Buffer gekürzt (Speicherdruck).
- TCP retransmits=31/s → Paketverlust im Server.
- WireGuard tx_dropped=226k → VPN-Tunnel leidet.
Ursache: HDD-Engpass. Empfehlung: sysctl -w net.ipv4.tcp_mem='1048576 2097152 4194304'.
KI-Integration via MCP
Integrierter MCP-Server für Claude Desktop/Cursor:
{
"mcpServers": {
"melisai": {
"command": "ssh",
"args": ["root@server", "/usr/local/bin/melisai", "mcp"]
}
}
}
KI-Aufrufe:
get_health— Score + Anomalien.explain_anomaly— Ursache + Fix-Befehle.collect_metrics— Vollbericht mit Histogrammen.
JSON enthält ai_context.prompt mit 27 Anti-Patterns.
Empfehlungen und Grenzen
Empfehlungen sind sofort ausführbare Befehle:
{
"type": "fix",
"title": "TCP-Speicherdruck (PruneCalled)",
"commands": ["sysctl -w net.ipv4.tcp_mem='1048576 2097152 4194304'"],
"evidence": "PruneCalled=105"
}
Grenzen:
- Kein Monitoring (Snapshots, kein Prometheus).
- Kein Alerting (nur on-demand/cron).
- Kein App-Profiling (
pprofdafür). - Nur NVIDIA GPU (ROCm geplant).
Installation und Build
curl -sSL https://melisai.dev/install | sh
Build:
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o melisai ./cmd/melisai/
Apache 2.0.
Wichtige Erkenntnisse
- Sammelt 67 eBPF-Tools + Stufe 1 in 10–60 Sek. in strukturiertes JSON.
- Rate-Metriken vermeiden Fehlalarme bei Langzeit-Servern.
- 37 Anomalie-Regeln + fertige sysctl-Befehle.
- MCP-Integration: KI analysiert direkt, kein Copy-Paste.
- Zwei-Phasen-Sammlung minimiert Beobachtereffekt.
— Editorial Team
Noch keine Kommentare.