SystemDotknij - SystemTap
Pierwsze wydanie | 2005 |
---|---|
Wersja stabilna | 4.4 / 9 listopada 2020
|
Magazyn | |
Napisane w | C , C++ |
System operacyjny | Linux |
Rodzaj | Śledzenie języka programowania |
Licencja | Powszechna Licencja Publiczna GNU |
Stronie internetowej | oprogramowanie źródłowe |
W obliczeniowej , SystemTap ( STAP ) to język skryptowy i narzędzie do dynamicznego instrumentacji systemem produkcji jądro Linux opartych systemów operacyjnych . Administratorzy systemu mogą używać SystemTap do wyodrębniania, filtrowania i podsumowywania danych w celu umożliwienia diagnozowania złożonych problemów wydajnościowych lub funkcjonalnych.
SystemTap składa się z bezpłatnego oprogramowania o otwartym kodzie źródłowym i zawiera wkład firm Red Hat , IBM , Intel , Hitachi , Oracle , University of Wisconsin-Madison i innych członków społeczności.
Historia
SystemTap zadebiutował w 2005 roku w Red Hat Enterprise Linux 4 Update 2 jako zapowiedź technologii.
Po czterech latach rozwoju SystemTap 1.0 został wydany w 2009 roku.
Od 2011 roku SystemTap działa w pełni obsługiwany we wszystkich dystrybucjach Linuksa, w tym RHEL / CentOS 5 od aktualizacji 2, SLES 10, Fedora, Debian i Ubuntu.
Punkty śledzenia w CPython VM i JVM zostały dodane w SystemTap 1.2 w 2009 roku.
W listopadzie 2019 roku SystemTap 4.2 obejmował eksportera prometheusa .
Stosowanie
Pliki SystemTap są pisane w języku SystemTap (zapisywane jako .stp
pliki) i uruchamiane z stap
wiersza poleceń.
System przeprowadza szereg analiz skryptu przed zezwoleniem na jego uruchomienie. Skrypty mogą być wykonywane za pomocą jednego z trzech backendów wybranych przez --runtime=
opcję. Domyślnie jest to ładowalny moduł jądra , który ma najpełniejsze możliwości sprawdzania i manipulowania dowolną częścią systemu, a zatem wymaga największych uprawnień. Inny backend jest oparty na bibliotece dynamicznej analizy programów DynInst, która służy wyłącznie do instruowania własnych programów użytkownika i wymaga najmniejszych uprawnień. Najnowszy backend jest oparty na kodzie bajtowym eBPF , jest ograniczony do możliwości interpretera jądra Linuksa i wymaga pośredniego poziomu uprawnień. W każdym przypadku moduł jest rozładowywany po zakończeniu działania skryptu.
Skrypty zazwyczaj skupiają się na zdarzeniach (takich jak uruchamianie lub kończenie skryptu), skompilowanych punktach sondowania, takich jak „punkty śledzenia” systemu Linux lub wykonywaniu funkcji lub instrukcji w jądrze lub przestrzeni użytkownika.
Niektóre skrypty „tryb guru” mogą również mieć osadzone C, które można uruchamiać z -g
opcją wiersza poleceń. Jednak korzystanie z trybu guru jest odradzane, a każde wydanie SystemTap zawiera więcej punktów próbnych zaprojektowanych w celu wyeliminowania potrzeby stosowania skryptów trybu guru. Tryb Guru jest wymagany, aby umożliwić skryptom modyfikowanie stanu w oprzyrządowanym oprogramowaniu, na przykład w celu zastosowania niektórych rodzajów awaryjnych poprawek bezpieczeństwa.
Począwszy od wersji SystemTap 1.7, oprogramowanie implementuje nową grupę stapsys i poziom uprawnień.
Proste przykłady
Poniższy skrypt pokazuje wszystkie aplikacje ustawiające opcje gniazda TCP w systemie, jakie opcje są ustawiane i czy opcja została ustawiona pomyślnie, czy nie.
# 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")
}
Wiele innych przykładów jest dostarczanych z SystemTap. Istnieją również rzeczywiste przykłady użycia SystemTap na stronie War Stories.
Importowanie skryptów z innych technologii śledzenia
SystemTap może dołączać do znaczników DTrace , gdy są kompilowane do aplikacji przy użyciu makr z sys/sdt.h
pliku nagłówkowego.
Zobacz też
Bibliografia
Linki zewnętrzne
- Oficjalna strona internetowa
- SystemTap Wiki
- Dokumentacja języka SystemTap ( PDF )
- Analiza projektu SystemTap przez Ohloh
- Dynamiczne śledzenie z DTrace i SystemTap
- Samouczek systemowy Frank Ch. Eigler
- Przewodnik dla początkujących SystemTap Don Domingo, William Cohen
- Rozwiązywanie problemów z Systemtap , Sympozjum Linux w Ottawie 2006
- Rozwiązywanie problemów z SystemTap , Eugene Teo, zaprezentowany na Red Hat Summit 2007 ( skrypty )
- Dynamiczne śledzenie i analiza wydajności przy użyciu SystemTap , Joshua Stone, zaprezentowany na konferencji LinuxWorld 2008
- Samouczek SystemTap , Jim Keniston, zaprezentowany na konferencji Linux Plumbers Conference 2008