Retour à l'accueil

Diagnostics eBPF des serveurs en 60 s : melisai

Melisai automatise les diagnostics serveurs Linux : collecte de métriques eBPF/BCC, procfs, sysfs en 60 secondes vers JSON. Détecte 37 anomalies, génère des commandes sysctl, intègre avec l’IA via MCP. Économise la routine sur les incidents.

Diagnostics Linux eBPF en 60 secondes : outil melisai
Advertisement 728x90

Diagnostic Automatisé des Serveurs Linux : Des Vérifications Manuelles à l'Analyse eBPF en Quelques Minutes

Les développeurs et administrateurs système expérimentés avec Linux connaissent la routine : une plainte de « serveur lent » implique de lancer les outils habituels — top, vmstat, iostat, ss. C'est le diagnostic de niveau 1, qui prend 20–40 minutes. Vient ensuite l'exploration d'outils eBPF comme runqlat, biolatency, tcpretrans de Brendan Gregg. Le problème : les incidents rares effacent la mémoire, donc on passe son temps à googliser les fichiers /proc, les paramètres sysctl et la syntaxe des outils BCC.

L'IA (ChatGPT, Claude) simplifie l'analyse des logs mais ne gère pas la collecte de données. Les réseaux de neurones ne lancent pas les outils tout seuls ni ne relient les métriques comme PruneCalled et la mémoire TCP. Il faut un collecteur de données structuré à alimenter en IA.

Melisai : Collecte de Données en un Seul JSON

Melisai est un binaire statique Go sans dépendances. Lancez-le avec :

Google AdInline article slot
sudo melisai collect --profile quick -o report.json

Mode rapide : 10 secondes, mode approfondi : 60 secondes. Sortie : JSON avec métriques CPU, mémoire, disque, réseau, processus, conteneurs et GPU.

Ce qu'il collecte :

  • Niveau 1 : procfs, sysfs, ss, ethtool, nvidia-smi (pas besoin de root).
  • Niveau 2 : 67 outils BCC/eBPF (runqlat, biolatency, tcpretrans, etc., nécessite root + bcc-tools).
  • Niveau 3 : eBPF natif via cilium/ebpf (root + noyau ≥5.8 avec BTF).

Plan B : Si niveau 2/3 indisponible, il exécute le niveau 1.

Google AdInline article slot

Collecte en Deux Phases et Métriques de Taux

Pour éviter l'effet d'observateur, la collecte est scindée :

  • Base : métriques niveau 1 (CPU, mémoire, E/S, réseau).
  • eBPF : outils BCC lancés après la base.

Calculs basés sur les taux : écarts entre mesures. Pas de compteurs cumulés (uptime de 200 jours = softnet_dropped=5000 est normal), mais des taux (softnet_drop_rate=50/sec signale une anomalie).

37 règles d'anomalies basées sur Gregg et pratiques de production :

Google AdInline article slot

| Catégorie | Exemples de Seuils |

|-----------|---------------------|

| CPU | util>95%, PSI>5%, runqlat p99>50ms |

| Mémoire | reclaim direct>10/s, splits THP>1/s, miss NUMA>5% |

| Disque | util>90%, latence>50ms |

| Réseau | retransmissions>50/s, conntrack>90% |

| GPU | incohérence NUMA GPU-NIC |

Étude de Cas : Panne en Cascade sur un Hôte Docker

Configuration production : 8 cœurs, 32 Go RAM, RAID HDD. Symptômes : ralentissement général.

sudo melisai collect --profile deep --ai-prompt -o report.json

Résultats (60 s) :

Score de Santé : 46/100
Anomalies :
[CRITIQUE] tcp_retransmits 134/sec
[AVERTISSEMENT] disk_util 80.5%
[AVERTISSEMENT] cpu_psi 17.6%
[AVERTISSEMENT] io_psi 12.8%
[AVERTISSEMENT] disk_latency 12.1ms
[AVERTISSEMENT] tcp_close_wait 1 socket

Cascade :

  • HDD p99=49ms → Latence E/S bloc (biolatency).
  • PruneCalled=105 → Tampon TCP rogné (pression mémoire).
  • TCP retransmits=31/s → Perte de paquets à l'intérieur du serveur.
  • WireGuard tx_dropped=226k → Tunnel VPN impacté.

Cause racine : goulet d'étranglement HDD. Recommandation : sysctl -w net.ipv4.tcp_mem='1048576 2097152 4194304'.

Intégration IA via MCP

Serveur MCP intégré pour Claude Desktop/Cursor :

{
  "mcpServers": {
    "melisai": {
      "command": "ssh",
      "args": ["root@server", "/usr/local/bin/melisai", "mcp"]
    }
  }
}

Appels IA :

  • get_health — score + anomalies.
  • explain_anomaly — cause racine + commandes de correction.
  • collect_metrics — rapport complet avec histogrammes.

Le JSON inclut ai_context.prompt avec 27 anti-patterns.

Recommandations et Limites

Les recommandations sont des commandes prêtes à exécuter :

{
  "type": "fix",
  "title": "Pression mémoire TCP (PruneCalled)",
  "commands": ["sysctl -w net.ipv4.tcp_mem='1048576 2097152 4194304'"],
  "evidence": "PruneCalled=105"
}

Limites :

  • Pas de monitoring (instantanés, pas Prometheus).
  • Pas d'alerting (à la demande/cron uniquement).
  • Pas de profilage applicatif (pprof pour ça).
  • GPU NVIDIA uniquement (ROCm en projet).

Installation et Compilation

curl -sSL https://melisai.dev/install | sh

Compilation :

GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o melisai ./cmd/melisai/

Apache 2.0.

Points Clés

  • Collecte 67 outils eBPF + niveau 1 en 10–60 s en JSON structuré.
  • Métriques de taux éliminent les faux positifs sur serveurs longuement actifs.
  • 37 règles d'anomalies + commandes sysctl prêtes.
  • Intégration MCP : l'IA analyse directement, sans copier-coller.
  • Collecte en deux phases minimise l'effet d'observateur.

— Editorial Team

Advertisement 728x90

Lire ensuite