Zautomatyzowana diagnostyka serwerów Linux: od ręcznego zbierania do analizy eBPF w minutę
Programiści i administratorzy systemów z doświadczeniem w Linuxie wiedzą: skarga „serwer spowalnia” wymaga standardowego zestawu poleceń — top, vmstat, iostat, ss. Ta diagnostyka Tier 1 zajmuje 20–40 minut. Dalej — zagłębianie się w narzędzia eBPF takie jak runqlat, biolatency, tcpretrans od Brendan Gregg. Problem: rzadkie incydenty zacierają wiedzę, za każdym razem trzeba wyszukiwać pliki w /proc, parametry sysctl i składnię BCC-tools. AI (ChatGPT, Claude) ułatwia analizę logów, ale nie rozwiązuje kwestii zbierania danych. Sieci neuronowe nie uruchamiają narzędzi samodzielnie, nie budują połączeń między metrykami takimi jak PruneCalled i pamięć TCP. Potrzebny jest strukturalny zbieracz danych do przekazania do AI.
Melisai: zbieranie danych do jednego JSON
Narzędzie melisai — statyczny binarnik Go bez zależności. Uruchomienie:
sudo melisai collect --profile quick -o report.json
Tryb quick — 10 sekund, deep — 60 sekund. Wyjście: JSON z metrykami CPU, pamięci, dysku, sieci, procesów, kontenerów, GPU.
Co zbiera:
- Tier 1: procfs, sysfs,
ss,ethtool,nvidia-smi(bez root). - Tier 2: 67 narzędzi BCC/eBPF (
runqlat,biolatency,tcpretransi inne, root + bcc-tools). - Tier 3: natywny eBPF via cilium/ebpf (root + kernel ≥5.8 z BTF).
Fallback: jeśli Tier 2/3 niedostępne, działa Tier 1.
Dwufazowe zbieranie i rate-metryki
Aby uniknąć efektu obserwatora, zbieranie podzielone:
- Baseline: Tier 1 metryki (CPU, pamięć, I/O, sieć).
- eBPF: uruchomienie BCC-tools po baseline.
Rate-based obliczenia: delta między pomiarami. Nie cumulative liczniki (uptime 200 dni = softnet_dropped=5000 — normalne), ale rates (softnet_drop_rate=50/sec — anomalia).
37 reguł anomalii na podstawie Gregg i praktyk produkcyjnych:
| Kategoria | Przykłady progów |
|-----------|-----------------|
| CPU | util>95%, PSI>5%, runqlat p99>50ms |
| Pamięć | direct reclaim>10/s, THP splits>1/s, NUMA miss>5% |
| Dysk | util>90%, latency>50ms |
| Sieć | retransmits>50/s, conntrack>90% |
| GPU | NUMA-rozbieżność GPU-NIC |
Przypadek: kaskadowa degradacja na hoście Docker
Produkcja: 8 rdzeni, 32GB RAM, HDD RAID. Symptomy — ogólne spowolnienie.
sudo melisai collect --profile deep --ai-prompt -o report.json
Wynik (60 sek):
Health Score: 46/100
Anomalies:
[CRITICAL] tcp_retransmits 134/sec
[WARNING] disk_util 80.5%
[WARNING] cpu_psi 17.6%
[WARNING] io_psi 12.8%
[WARNING] disk_latency 12.1ms
[WARNING] tcp_close_wait 1 socket
Kaskad:
- HDD p99=49ms → Block I/O latency (
biolatency). - PruneCalled=105 → TCP-bufery obcinane (nacisk na pamięć).
- TCP retransmits=31/s → straty pakietów wewnątrz serwera.
- WireGuard tx_dropped=226k → tunel VPN cierpi.
Korzeń: wąskie gardło HDD. Rekomendacja: sysctl -w net.ipv4.tcp_mem='1048576 2097152 4194304'.
Integracja z AI przez MCP
Wbudowany serwer MCP dla Claude Desktop/Cursor:
{
"mcpServers": {
"melisai": {
"command": "ssh",
"args": ["root@server", "/usr/local/bin/melisai", "mcp"]
}
}
}
AI wywołuje:
get_health— score + anomalie.explain_anomaly— root cause + fix-polecenia.collect_metrics— pełny raport z histogramami.
JSON zawiera ai_context.prompt z 27 anty-wzorcamii.
Rekomendacje i ograniczenia
Rekomendacje — polecenia:
{
"type": "fix",
"title": "TCP memory pressure (PruneCalled)",
"commands": ["sysctl -w net.ipv4.tcp_mem='1048576 2097152 4194304'"],
"evidence": "PruneCalled=105"
}
Ograniczenia:
- Nie monitoring (snapshot, nie Prometheus).
- Nie alerting (na żądanie/cron).
- Nie app-profiling (
pprofdo tego). - Tylko NVIDIA GPU (ROCm w roadmap).
Instalacja i kompilacja
curl -sSL https://melisai.dev/install | sh
Kompilacja:
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o melisai ./cmd/melisai/
Apache 2.0.
Co ważne
- Zbieranie 67 eBPF-tools + Tier 1 za 10–60 sek do strukturalnego JSON.
- Rate-metryki eliminują fałszywe alarmy na serwerach z long-uptime.
- 37 reguł anomalii + gotowe sysctl-polecenia.
- Integracja MCP: AI bezpośrednio analizuje bez copy-paste.
- Dwufazowe zbieranie minimalizuje efekt obserwatora.
— Editorial Team
Brak komentarzy.