Diagnosi Linux in 60 secondi con Nix e LLM

Nel 2015, Brendan Gregg pubblicò sul blog tecnico di Netflix una guida chiamata “60-second Linux Performance Analysis”, una sequenza di comandi pensata per diagnosticare rapidamente lo stato di un server Linux. Comandi come uptime, vmstat, iostat, pidstat, mpstat, sar, top e dmesg permettono di identificare colli di bottiglia su CPU, memoria, disco e rete. Tuttavia, nella pratica, molti di questi strumenti non sono installati di default su tutte le distribuzioni, e durante un’interruzione di servizio, installarli può essere complicato o impossibile.

È qui che entra in gioco gradient-engineer, un progetto open source sviluppato da Quesma che automatizza l’intera analisi in un solo comando. Lo script scarica tutti gli strumenti necessari in una directory temporanea usando il package manager Nix, esegue la sequenza diagnostica e, facoltativamente, invia l’output a un LLM per generare una sintesi leggibile e azionabile. Il tutto senza richiedere privilegi di root, Docker o modifiche permanenti al sistema.

Diagnostica senza installazione, grazie a Nix

Uno dei problemi principali durante il troubleshooting è la mancanza di strumenti. Comandi come iostat o mpstat possono non essere disponibili, e installarli con apt o yum richiede tempo, accesso root e una connessione stabile. Gradient-engineer risolve questo problema sfruttando Nix, un package manager che tratta software e dipendenze come definizioni funzionali e isolate. I pacchetti Nix sono indipendenti dalla distribuzione Linux in uso e non interferiscono con il sistema host.

Lo script crea una “toolbox” temporanea contenente tutti gli strumenti necessari, utilizzando PRoot per redirigere i percorsi e garantire che i binari funzionino correttamente. Al termine dell’analisi, tutto viene rimosso, lasciando il sistema pulito. Questo approccio è ideale per ambienti cloud, server remoti o sistemi con filesystem immutabili.

Sintesi intelligente con LLM

Interpretare l’output dei comandi diagnostici può essere difficile, soprattutto sotto pressione. Gradient-engineer offre la possibilità di inviare l’intero output a un LLM (Large Language Model) come GPT o Gemini, che lo analizza e restituisce una sintesi comprensibile. Il modello evidenzia i problemi principali, suggerisce possibili cause e propone azioni correttive.

Poiché gli strumenti utilizzati sono standard e ben documentati, i LLM riescono a interpretarne l’output con precisione, riducendo il rischio di “hallucinations”. L’utente mantiene il controllo completo: la sintesi è solo un supporto, non una diagnosi automatica.

Diagnosi Linux: Un esempio pratico

Durante un test su un server con problemi di I/O, lo script è stato eseguito con il comando:

In meno di un minuto, il report generato dal LLM ha identificato un grave collo di bottiglia sul disco, con iowait tra il 60% e l’80% e un carico medio ben oltre il numero di core disponibili. La memoria e lo swap risultavano invece stabili. Questo tipo di analisi, normalmente riservata a sysadmin esperti, è stata resa accessibile e immediata.

Espandibilità e futuro del progetto

Gradient-engineer è ancora in fase prototipale, ma il potenziale è enorme. Il progetto è disponibile su GitHub e può essere esteso con nuovi strumenti diagnostici, come bpftrace, perf, tcpdump, iftop e persino strumenti per Kubernetes. L’idea è quella di costruire playbook intelligenti che i LLM possano eseguire e interpretare, trasformando il troubleshooting Linux in un processo guidato e automatizzato.

In futuro, il team Quesma ipotizza anche l’integrazione con protocolli come MCP (Model Context Protocol), in cui il toolbox diventa un contesto operativo per il modello AI. In questo scenario, il LLM non solo interpreta, ma suggerisce comandi, esegue workflow e interagisce con il sistema in modo sicuro e controllato.

Home gradient-engineer

Lascia un commento