Sysdig: Co to jest i jak go używać

Sysdig to uniwersalne narzędzie do widoczności systemu z obsługą kontenerów. To, co czyni Sysdig wyjątkowym, polega na tym, że zaczepia się on w jądrze maszyny i segreguje informacje dla poszczególnych kontenerów. W zakresie tego samouczka skupimy się na otwartej wersji Sysdig.

W następnych sekcjach:

  • Zainstaluj Sysdig
  • Rozwiń instalację Wordpress za pomocą narzędzia docker-compose
  • Sysdig służy do zbierania zdarzeń i analizowania ich w późniejszym czasie
  • Sysdig służy do analizy danych w czasie rzeczywistym

Wymagania wstępne

  • Docker jest zainstalowany w twoim systemie. Szczegółowe informacje na temat instalowania Dockera znajdują się na stronie Install Docker.
  • Docker Compose jest zainstalowany w twoim systemie. Instrukcje dotyczące instalowania narzędzia Docker Compose znajdują się na stronie Install Docker Compose.
  • Nagłówki jądra są instalowane w systemie hosta.

Zainstaluj Sysdig

Wykonaj następujące kroki, aby zainstalować Sysdig wewnątrz kontenera Docker:

  1. W oknie terminala wykonaj następujące polecenie, aby pobrać obraz Dysku Sysdig:
docker pull sysdig / sysdig
Korzystanie z domyślnego znacznika: najnowszy najnowszy: Ciągnięcie z sysdig / sysdig 2967486b0658: Ciągnięcie kompletne 78101b780c72: Ciągnięcie ciągłe 7e78b657334d: Ciągnięcie ciągłe 650327159ca8: Ciągnięcie ciągłe 47ebf73ab754: Ciągnięcie ciągłe bf51ac76a6d9: Ciągnięcie ciągłe 0cd11104dbfdfdff8d8f6df8d8f6df8d8f6df8d8dffdfddddddddcfgfddddc Pull complete 6de86c8ed6e9: Pull complete 8d1825f8be4b: Pull complete Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: Pobrano nowszy obraz dla sysdig / sysdig:

2. Uruchom Sysdig w kontenerze, wprowadzając:

docker uruchom -i -t --name sysdig --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v / dev: / host / dev -v / proc: / host / proc: ro -v / boot: / host / boot: ro -v / lib / modules: / host / lib / modules: ro -v / usr: / host / usr: ro sysdig / sysdig
* Konfigurowanie / usr / src linków z hosta * Rozładowywanie sysdig-probe, jeśli jest obecne * Uruchamianie instalacji dkms dla sysdig Błąd! echo Nie można znaleźć nagłówków jądra dla jądra 3.10.0-957.12.2.el7.x86_64 pod adresem /lib/modules/3.10.0-957.12.2.el7.x86_64/build lub /lib/modules/3.10.0-957.12 .2.el7.x86_64 / source. * Uruchomienie kompilacji dkms nie powiodło się, nie można znaleźć /var/lib/dkms/sysdig/0.26.4/build/make.log * Próba załadowania systemowej sondy sysdig, jeśli jest obecna * Próba znalezienia wstępnie skompilowanej sondy sysdig dla 3.10 .0-957.12.2.el7.x86_64 Znaleziono konfigurację jądra na /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Próba pobrania wstępnie skompilowanego modułu z https://s3.amazonaws.com/download .draios.com / stable / sysdig-probe-binaries / sysdig-probe-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko Pobieranie zakończyło się pomyślnie, moduł ładujący root @ 7b14a23f22eb: / #

Kilka uwag na temat powyższego polecenia:

  • Flaga -i utrzymuje STDIN otwarty.
  • Parametr --privileged zapewnia dostęp do wszystkich urządzeń na hoście. Ponadto ustawia SELinux, aby procesy działające w kontenerze miały taki sam dostęp do hosta, jak proces działający na hoście.
  • Flaga -v określa listę plików (na hoście), do których Sysdig może uzyskać dostęp.

Rozwiń instalację Wordpress

W tej sekcji zainstalujesz Wordpress za pomocą polecenia docker-compose.

  1. W nowym oknie terminala przejdź do katalogu projektów i wpisz następujące polecenia:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Utwórz plik o nazwie docker-compose z następującą zawartością:

wersja: usługi „3.3”: db: image: mysql: 5.7 woluminy: - db_data: / var / lib / mysql restart: zawsze środowisko: MYSQL_ROOT_PASSWORD: someordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depend_on: - db image wordpress: najnowsze porty: - restart „8000: 80”: zawsze środowisko: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: woluminy wordpress: db_data: {}

3. Uruchom polecenie dokowania-skomponuj w trybie odłączonym, używając:

docker-compose up -d
Tworzenie sieci „wordpress-sysdig_default” za pomocą domyślnego sterownika Tworzenie wolumenu „wordpress-sysdig_db_data” za pomocą domyślnego sterownika Wyciąganie wordpress (wordpress: najnowszy) ... najnowszy: Pobieranie z biblioteki / wordpress 8ec398bc0356: Pobieranie kompletne 85cf4fc86478: Pobieranie kompletne 970dadf4ccb6: Pobieranie kompletne 8c04561117a4: Pociągnij kompletnie d6b7434b63a2: Pociągnij kompletnie 83d8859e9744: Pociągnij kompletnie 9c3d824d0ad5: Pociągnij kompletnie 9e316fd5b3b3: Pociągnij kompletnie 578b40496c37: Pociągnij kompletnie 814ae7711d3c: Pociągnij kompletnie 4896fed78b6b7d7707607456867 Pull kompletny ecda5b7aad12: Pull kompletny 84256a6b6b44: Pull kompletny 35d4f385efb7: Pull kompletny bf697c2ae701: Pull kompletny d054b015f084: Pull kompletny Digest: SHA256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Stan: pobrane nowszą zdjęcie WordPress: najnowsze Tworzenie Wordpress sysdig_db_1 ... Gotowe Tworzenie Wordpress sysdig_word naciśnij_1 ... gotowe

4. Możesz zweryfikować status swoich pojemników za pomocą:

doker ps

Jeśli wszystko idzie dobrze, powinieneś zobaczyć coś podobnego do następującego wyniku:

ID KONTENERA OBRAZ KOMUNIKAT TWORZONY STATUS NAZWY PORTÓW f390eec29f52 wordpress: najnowszy „docker-entrypoint.s…” Około minuty temu W górę Około minuty 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 „punkt dokujący. s… "Około minuty temu Do góry Około minuty 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "13 minut temu Up 13 minut sysdig

5. Teraz Wordpress jest gotowy do pracy. Skieruj przeglądarkę na http: // localhost: 8000, aby uruchomić kreatora instalacji:

6. Po zakończeniu kreatora instalacji, przejdźmy dalej i utwórz przykładowy post:

Zbieranie danych do pliku

W tej sekcji pokażemy, jak możesz używać Sysdig do zbierania zdarzeń i analizowania ich w późniejszym czasie.

  1. Aby zrzucić wszystkie przechwycone zdarzenia do pliku, przejdź do kontenera Sysdig i wprowadź następujące polecenie:
sysdig -w monitoring-wordpress.scap

2. W nowym oknie terminala użyj ab, aby wykonać 10000 żądań z maksymalnie 100 żądaniami działającymi jednocześnie:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
To jest ApacheBench, wersja 2.3 <$ Wersja: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licencjonowany przez The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (bądź cierpliwy) Ukończono 100 wniosków Ukończono 200 wniosków Ukończono 300 wniosków Ukończono 400 wniosków Ukończono 500 wniosków Ukończono 600 wniosków Ukończono 700 wniosków Ukończono 800 wniosków Ukończono 900 wniosków Ukończono 1000 wniosków Ukończono 1000 wniosków

Zauważ, że powyższe dane wyjściowe zostały obcięte ze względu na zwięzłość.

3. Wróć do kontenera Sysdig na trasie i przestań przechwytywać dane, wpisując „CTRL + C”.

Analiza danych

Teraz, jeśli spojrzysz na rozmiar pliku monitoring-wordpress.scap, zauważysz, że Sysdig przechwycił nie mniej niż 80 mln danych:

ls -lh monitoring-wordpress.scap
-rw-r - r--. 1 root root 80M 7 stycznia 16:28 monitoring-wordpress.scap

Aby znaleźć drogę przez tę górę danych, użyjesz czegoś zwanego dłutem.

Dłuto to w zasadzie skrypt Lua, który analizuje strumień zdarzeń i wykonuje przydatne działania.

Możesz uruchomić następujące polecenie, aby wyświetlić listę dłut:

sysdig -cl
Kategoria: Aplikacja --------------------- httplog dziennik żądań HTTP httptop Najważniejsze żądania HTTP memcachelog dziennik żądań Memcachelog Kategoria: użycie procesora ---------- --------- spektrogram Wizualizacja opóźnienia systemu operacyjnego w czasie rzeczywistym. subsecoffset Wizualizacja czasu wykonania przesunięcia drugiego rzędu. topcontainers_cpu Najlepsze kontenery według użycia procesora topprocs_cpu Najlepsze procesy według użycia procesora Kategoria: Błędy ---------------- topcontainers_error Najlepsze kontenery według liczby błędów topfiles_errors Najlepsze pliki według liczby błędów topprocs_errors najlepsze procesy według liczby błędów

Zauważ, że powyższe dane wyjściowe zostały obcięte ze względu na zwięzłość.

Aby uzyskać szczegółowe informacje na temat dłuta, uruchom polecenie sysdig, a następnie flagę -i i nazwę dłuta, jak w poniższym przykładzie:

sysdig -i httptop
Kategoria: Aplikacja --------------------- httptop Najważniejsze żądania HTTP Pokaż najlepsze żądania HTTP według: ncalls, czas lub bajty Argumenty: [ciąg] według - Pokaż najlepsze transakcje HTTP przez: ncalls, czas lub tes, domyślnie jest ncalls

Kontynuując nasz przykład, oto jak możesz użyć dłuta httptop do wyświetlenia najpopularniejszych żądań HTTP:

sysdig -r monitoring-wordpress.scap -c httptop
url metody ncalls ----------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? P = 7 14 OPCJE * 2 GET localhost: 8000 / favicon.ico 1 GET /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-upright-var.woff2 1 GET localhost / v1.24 / pojemniki / 6bd8418eb03f / json 1 GET localhost / v1.24 / pojemniki / 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b682f7147b682f7f7147b682f7

Możesz zobaczyć te same informacje w formacie przyjaznym dla kontenerów z flagą -pcontainer:

sysdig -r monitoring-wordpress.scap -c httptop -pcontainer
URL metody kontenera ncalls ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 hosta GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo OPCJE * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24 / 172son Pojemniki 06 cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63f89a2290663f7a2

Kopać głębiej

Sysdig przechwytuje bogate w informacje informacje, które pozwalają uzyskać szczegółowy wgląd w wewnętrzne funkcjonowanie kontenerów. Załóżmy, że korzystasz z kilku kontenerów i chcesz wiedzieć, który proces zużywa najwięcej procesora.

  1. Wymień kontenery, które były aktywne w okresie, w którym zarejestrowałeś zdarzenia:
sysdig -r monitoring-wordpress.scap -c lscontainers

2. Możesz zidentyfikować kontener, który zużywał najwięcej procesora:

sysdig -r monitoring-wordpress.scap -c topcontainers_cpu
CPU% nazwa kontenera. --------------------------------------------- ----------------------------------- 5,37% wordpress-sysdig_wordpress_1 1,35% wordpress-sysdig_db_1 0,84% host 0,51% sysdig

3. Za pomocą dłuta topprocs_cpu możesz kopać jeszcze głębiej i identyfikować proces najbardziej obciążający procesor:

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.name zawiera wordpress_1
Procent procesowego PID procesora ---------------------------------------------- ---------------------------------- 0,12% apache2 8383 0,11% apache2 9413 0,11% apache2 9300 0,11% apache2 9242 0,11% apache2 8897 0,11% apache2 8422 0,10% apache2 9372 0,10% apache2 9241 0,10% apache2 8424 0,09% apache2 9429

Jeśli chcesz zobaczyć więcej szczegółów, dłuto ps stanowi bardziej pełną alternatywę:

sysdig -r monitoring-wordpress.scap -c ps nazwa kontenera = wordpress-sysdig_wordpress_1
Przewodniki TID PID VIRT RES FDLIMIT CMD 5896 5896 korzeń 232.82M 22.32M 429496729 apache2 8383 8383 WWW transmisji danych 307.44M 25.46M 429496729 apache2 8422 8422 WWW transmisji danych 235.44M 22.90M 429496729 apache2 8424 8424 WWW transmisji danych 307.44M 25.46M 429496729 apache2 8897 8897 www-data 235,44M 22,89M 429496729 apache2 9154 9154 www-data 235,44M 22,91M 429496729 apache2 9241 9241 www-dane 307,44M 25,66M 429496729 apache2 9242 9242 www-dane 307,44M 25,67M 429496700 apache2 22,89M 429496729 apache2 9372 9372 www-data 235,44M 22,89M 429496729 apache2 9413 9413 www-data 233,44M 20,77M 429496729 apache2

Przydatne porady

Jeśli uruchomisz Sysdig w celu przechwytywania zdarzeń, jak w powyższym przykładzie (sysdig -w monitoring-wordpress.scap), plik zdarzeń będzie się powiększał, aż zajmie całą dostępną przestrzeń. Istnieje kilka metod, które mogą temu zapobiec:

  • Określ liczbę zdarzeń, które Sysdig powinien przechwycić, przekazując mu flagę -n. Gdy Sysdig zarejestruje określoną liczbę zdarzeń, automatycznie zakończy działanie:
sysdig -n 5000 -w monitoring-wordpress.scap
  • Użyj flagi -C, aby skonfigurować Sysdig tak, aby dzielił przechwytywanie na mniejsze pliki o określonym rozmiarze. Poniższy przykład stale zapisuje zdarzenia w plikach <10 MB:
sysdig -C 10 -w monitoring-wordpress.scap

Spowoduje to utworzenie wiązki plików nie większych niż 10 MB:

ls -lh monitoring-wordpress *
-rw-r - r--. 1 root root 9.6M 7 stycznia 17:13 monitoring-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7 stycznia 17:14 monitoring-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7 stycznia 17:14 monitoring-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7 stycznia 17:14 monitoring-wordpress.scap3 -rw-r - r--. 1 root root 9.6M 7 stycznia 17:14 monitoring-wordpress.scap4 -rw-r - r--. 1 root root 9.6M 7 stycznia 17:14 monitoring-wordpress.scap5 -rw-r - r--. 1 root root 9.6M 7 stycznia 17:14 monitoring-wordpress.scap6 -rw-r - r--. 1 root root 9.6M 7 stycznia 17:14 monitoring-wordpress.scap7 -rw-r - r--. 1 root root 6.4M 7 stycznia 17:14 monitoring-wordpress.scap8
  • Podaj maksymalną liczbę plików, które Sysdig powinien przechowywać za pomocą opcji -W. Na przykład możesz łączyć flagi -C i -W w następujący sposób:
sysdig -C 10 -W 4 -w monitoring-wordpress.scap

Powyższe polecenie zachowa tylko cztery ostatnie pliki przechwytywania:

ls -lh monitoring-wordpress *
-rw-r - r--. 1 root root 7.2M 7 stycznia 17:21 monitoring-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7 stycznia 17:21 monitoring-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7 stycznia 17:21 monitoring-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7 stycznia 17:21 monitoring-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10 -W 4 -w monitoring-wordpress.scap

Monitorowanie na żywo

Dzięki Sysdig możesz także analizować dane w czasie rzeczywistym. Na pierwszy rzut oka może się to wydawać zniechęcającym zadaniem, ponieważ domyślnie wszystkie zdarzenia są stale drukowane na konsoli. Na szczęście dłuta są tutaj, aby pomóc.

Weźmy przykład.

Analizuj swoje procesy na podstawie poszczególnych pojemników

  1. Uruchom następujące polecenie, aby wyświetlić listę kontenerów:
doker ps
ID KONTENERA OBRAZ KOMUNIKAT TWORZONY STATUS NAZWY PORTÓW 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" 9 minut temu Up 9 minut sysdig 06def7875617 wordpress: najnowszy "docker-entrypoint.s…" 3 godziny temu Up 3 godziny 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 „docker-entrypoint.s…” 3 godziny temu Do 3 godzin 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Możesz analizować procesy uruchomione w kontenerze WordPress za pomocą:

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_wordpress_1

3. Podobnie możesz analizować procesy uruchomione w kontenerze MySQL:

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_db_1

Zauważ, że niewiele różni się od tego przykładu, Sysdig może monitorować ruch w sieci, użycie dysku i tak dalej.

W tym samouczku omówiono podstawy korzystania z Sysdig, aby uzyskać pełne zrozumienie aktywności generowanej przez kontenery. Przykłady w tym poście na blogu pomogły Ci zacząć, a w przyszłych samouczkach pokażemy, jak korzystać z Csysdig i Sysdig Inspect.