SistemaTap - SystemTap
| Versione iniziale | 2005 |
|---|---|
| Rilascio stabile | 4.4 / 9 novembre 2020
|
| Repository |
|
| Scritto in | C , C++ |
| Sistema operativo | Linux |
| Tipo | Linguaggio di programmazione Tracing |
| Licenza | Licenza pubblica generale GNU |
| Sito web | sourceware |
In ambito informatico , SystemTap ( stap ) è un linguaggio di scripting e uno strumento per la strumentazione dinamica dei sistemi operativi basati su kernel Linux in esecuzione in produzione . Gli amministratori di sistema possono utilizzare SystemTap per estrarre, filtrare e riepilogare i dati al fine di consentire la diagnosi di prestazioni complesse o problemi funzionali.
SystemTap è costituito da software gratuito e open source e include contributi di Red Hat , IBM , Intel , Hitachi , Oracle , l'Università del Wisconsin-Madison e altri membri della comunità.
Storia
SystemTap ha debuttato nel 2005 in Red Hat Enterprise Linux 4 Update 2 come anteprima tecnologica.
Dopo quattro anni di sviluppo, SystemTap 1.0 è stato rilasciato nel 2009.
A partire dal 2011, SystemTap è completamente supportato in tutte le distribuzioni Linux tra cui RHEL / CentOS 5 dall'aggiornamento 2, SLES 10, Fedora, Debian e Ubuntu.
I punti traccia nella VM CPython e nella JVM sono stati aggiunti in SystemTap 1.2 nel 2009.
A novembre 2019, SystemTap 4.2 ha incluso l' esportatore prometheus .
utilizzo
I file SystemTap sono scritti nella lingua SystemTap (salvati come .stpfile) ed eseguiti con la stapriga di comando.
Il sistema esegue una serie di passaggi di analisi sullo script prima di consentirne l'esecuzione. Gli script possono essere eseguiti con uno dei tre backend selezionati --runtime=dall'opzione. L'impostazione predefinita è un modulo kernel caricabile , che ha la capacità più completa di ispezionare e manipolare qualsiasi parte del sistema e quindi richiede la maggior parte dei privilegi. Un altro backend è basato sulla libreria di analisi dinamica dei programmi DynInst per strumentare solo i programmi nello spazio utente dell'utente e richiede il minimo privilegio. Il backend più recente è basato sul byte-code eBPF , è limitato alle capacità dell'interprete del kernel Linux e richiede un livello di privilegio intermedio. In ogni caso, il modulo viene scaricato al termine dell'esecuzione dello script.
Gli script generalmente si concentrano su eventi (come l'avvio o la fine di uno script), i punti sonda compilati come i "tracepoint" di Linux o l'esecuzione di funzioni o istruzioni nel kernel o nello spazio utente.
Alcuni script in "modalità guru" possono anche avere C incorporato, che può essere eseguito con l' -gopzione della riga di comando. Tuttavia, l'uso della modalità guru è sconsigliato e ogni versione di SystemTap include più punti sonda progettati per eliminare la necessità di script in modalità guru. La modalità Guru è necessaria per consentire agli script di modificare lo stato nel software strumentato, ad esempio per applicare alcuni tipi di soluzioni di sicurezza di emergenza.
A partire dalla versione 1.7 di SystemTap, il software implementa il nuovo gruppo stapsys e il livello di privilegio.
Semplici esempi
Lo script seguente mostra tutte le applicazioni che impostano le opzioni del socket TCP sul sistema, quali opzioni vengono impostate e se l'opzione è impostata correttamente o meno.
# Show sockets setting options
# Return enabled or disabled based on value of optval
function getstatus(optval)
{
if ( optval == 1 )
return "enabling"
else
return "disabling"
}
probe begin
{
print ("\nChecking for apps setting socket options\n")
}
# Set a socket option
probe tcp.setsockopt
{
status = getstatus(user_int($optval))
printf (" App '%s' (PID %d) is %s socket option %s... ", execname(), pid(), status, optstr)
}
# Check setting the socket option worked
probe tcp.setsockopt.return
{
if ( ret == 0 )
printf ("success")
else
printf ("failed")
printf ("\n")
}
probe end
{
print ("\nClosing down\n")
}
Molti altri esempi sono forniti con SystemTap. Ci sono anche esempi reali di utilizzo di SystemTap nella pagina Storie di guerra.
Importazione di script da altre tecnologie di tracciamento
SystemTap può collegarsi ai marker DTrace quando vengono compilati in un'applicazione utilizzando macro dal sys/sdt.hfile di intestazione.
Guarda anche
Riferimenti
link esterno
- Sito ufficiale
- Wiki di SystemTap
- Riferimento lingua SystemTap ( PDF )
- Analisi del progetto SystemTap di Ohloh
- Tracciamento dinamico con DTrace e SystemTap
- Tutorial Systemtap Frank Ch. Eigler
- Guida per principianti di SystemTap Don Domingo, William Cohen
- Risoluzione dei problemi con Systemtap , Ottawa Linux Symposium 2006
- Problem Solving con SystemTap , Eugene Teo, presentato al Red Hat Summit 2007 ( script )
- Tracciamento dinamico e analisi delle prestazioni mediante SystemTap , Joshua Stone, presentato alla LinuxWorld Conference 2008
- Tutorial SystemTap , Jim Keniston, presentato alla Linux Plumbers Conference 2008