SystemDotknij - SystemTap

SystemDotknij
Smileytap.svg
Pierwsze wydanie 2005 ( 2005 )
Wersja stabilna
4.4 / 9 listopada 2020 ; 8 miesięcy temu ( 09.11.2020 )
Magazyn Edytuj to na Wikidata
Napisane w C , C++
System operacyjny Linux
Rodzaj Śledzenie języka programowania
Licencja Powszechna Licencja Publiczna GNU
Stronie internetowej oprogramowanie źródłowe .org /systemtap /

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 .stppliki) i uruchamiane z stapwiersza 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 -gopcją 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.hpliku nagłówkowego.

Zobacz też

Bibliografia

Linki zewnętrzne