Sysdig: Was es ist und wie man es benutzt

Sysdig ist ein universelles System-Sichtbarkeitstool mit Unterstützung für Container. Das Besondere an Sysdig ist, dass es sich in den Kernel der Maschine einhakt und die Informationen pro Container trennt. Im Rahmen dieses Tutorials konzentrieren wir uns auf die Open-Source-Version von Sysdig.

In den nächsten Abschnitten werden Sie:

  • Installieren Sie Sysdig
  • Starten Sie eine Wordpress-Installation mit Docker-Compose
  • Verwenden Sie Sysdig, um Ereignisse zu sammeln und zu einem späteren Zeitpunkt zu analysieren
  • Verwenden Sie Sysdig, um Daten in Echtzeit zu analysieren

Voraussetzungen

  • Docker ist auf Ihrem System installiert. Ausführliche Informationen zur Installation von Docker finden Sie auf der Seite Docker installieren.
  • Docker Compose ist auf Ihrem System installiert. Anweisungen zum Installieren von Docker Compose finden Sie auf der Seite Installieren von Docker Compose.
  • Die Kernel-Header sind auf dem Host-System installiert.

Installieren Sie Sysdig

Führen Sie die folgenden Schritte aus, um Sysdig in einem Docker-Container zu installieren:

  1. Führen Sie in einem Terminalfenster den folgenden Befehl aus, um das Sysdig Docker-Image abzurufen:
Docker ziehen sysdig / sysdig
Verwenden des Standard-Tags: Neueste Neueste: Von sysdig / sysdig ziehen 2967486b0658: Vollständig ziehen 78101b780c72: Vollständig ziehen 7e78b657334d: Vollständig ziehen 650327159ca8: Vollständig ziehen 47ebf73ab754: Vollständig ziehen bf51ac76a6d9: Vollständig ziehen 0cd11104df8: Vollständig ziehen 6de86c8ed6e9: Vollständig ziehen 8d1825f8be4b: Vollständig ziehen Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: Neuestes Bild für sysdig / sysdig heruntergeladen: Neueste

2. Führen Sie Sysdig in einem Container aus, indem Sie Folgendes eingeben:

docker run -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
* Einrichten von / usr / src-Links vom Host * Entladen von sysdig-probe, falls vorhanden * Ausführen der dkms-Installation für sysdig Fehler! echo Ihre Kernel-Header für Kernel 3.10.0-957.12.2.el7.x86_64 finden Sie nicht unter /lib/modules/3.10.0-957.12.2.el7.x86_64/build oder /lib/modules/3.10.0-957.12 .2.el7.x86_64 / source. * Das Ausführen von dkms build ist fehlgeschlagen, /var/lib/dkms/sysdig/0.26.4/build/make.log konnte nicht gefunden werden. * Es wurde versucht, einen System-Sysdig-Probe zu laden, falls vorhanden. * Es wurde versucht, einen vorkompilierten Sysdig-Probe für 3.10 zu finden .0-957.12.2.el7.x86_64 Kernelkonfiguration unter /host/boot/config-3.10.0-957.12.2.el7.x86_64 gefunden * Versuch, vorkompiliertes Modul von https://s3.amazonaws.com/download herunterzuladen .draios.com / stabile / sysdig-probe-binaries / sysdig-probe-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko Download erfolgreich, Modul root @ 7b14a23f22eb geladen: / #

Einige Dinge, die Sie über den obigen Befehl beachten sollten:

  • Das Flag -i hält STDIN offen.
  • Der Parameter --privileged bietet Zugriff auf alle Geräte auf dem Host. Außerdem wird SELinux so eingestellt, dass die im Container ausgeführten Prozesse denselben Zugriff auf den Host erhalten wie ein auf dem Host ausgeführter Prozess.
  • Das Flag -v gibt die Liste der Dateien (auf dem Host) an, auf die Sysdig zugreifen kann.

Starten Sie eine Wordpress-Installation

In diesem Abschnitt installieren Sie Wordpress mit dem Befehl docker-compose.

  1. Wechseln Sie in einem neuen Terminalfenster in Ihr Projektverzeichnis und geben Sie die folgenden Befehle ein:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Erstellen Sie eine Datei namens Docker-Compose mit folgendem Inhalt:

version: '3.3' services: db: image: mysql: 5.7volumes: - db_data: / var / lib / mysql restart: immer umgebung: MYSQL_ROOT_PASSWORD: irgendwo drücken MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: abhängig von: WordPress: Neueste Ports: - Neustart "8000: 80": Immer Umgebung: WORDPRESS_DB_HOST: DB: 3306 WORDPRESS_DB_USER: WordPress WORDPRESS_DB_PASSWORD: WordPress WORDPRESS_DB_NAME: WordPress-Volumes: DB_Data: {}

3. Führen Sie den Befehl docker-compose up im getrennten Modus aus mit:

Docker-Compose -d
Erstellen des Netzwerks "wordpress-sysdig_default" mit dem Standardtreiber Erstellen des Volumes "wordpress-sysdig_db_data" mit dem Standardtreiber Abrufen von WordPress (WordPress: aktuell) ... Neueste: Abrufen aus Bibliothek / WordPress 8ec398bc0356: Abrufen vollständig 85cf4fc86478: Abrufen vollständig 970dadf4ccb6: Abrufen vollständig 8c04561117a4: Komplett ziehen d6b7434b63a2: Komplett ziehen 83d8859e9744: Komplett ziehen 9c3d824d0ad5: Komplett ziehen 9e316fd5b3b3: Komplett ziehen 578b40496c37: Komplett ziehen 814ae7711d3c: Komplett ziehen 4896fed78b6b: 46 ziehen komplette ecda5b7aad12: Pull komplett 84256a6b6b44: Pull komplett 35d4f385efb7: Pull komplett bf697c2ae701: Pull komplett d054b015f084: Pull komplett Digest: sha256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Status: Heruntergeladene neueres Bild für Wordpress: neueste Erstellen von Wordpress-sysdig_db_1 ... done Erstellen von Wordpress-sysdig_word press_1 ... fertig

4. Sie können den Status Ihrer Container überprüfen mit:

Docker ps

Wenn alles gut läuft, sollten Sie etwas Ähnliches wie die folgende Ausgabe sehen:

CONTAINER ID IMAGE COMMAND ERSTELLTER STATUS PORTS NAMES f390eec29f52 wordpress: letzter "docker-entrypoint.s ..." vor ungefähr einer Minute Up Ungefähr eine Minute 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker -.point". s… "vor ungefähr einer Minute Up Ungefähr eine Minute 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "vor 13 Minuten Up 13 Minuten sysdig

5. Jetzt ist Wordpress aktiv. Zeigen Sie mit Ihrem Browser auf http: // localhost: 8000, um den Installationsassistenten zu starten:

6. Sobald der Installationsassistent abgeschlossen ist, erstellen wir einen Beispielbeitrag:

Sammeln von Daten in einer Datei

In diesem Abschnitt zeigen wir, wie Sie mit Sysdig Ereignisse erfassen und zu einem späteren Zeitpunkt analysieren können.

  1. Um alle erfassten Ereignisse in einer Datei abzulegen, wechseln Sie in den Sysdig-Container und geben Sie den folgenden Befehl ein:
sysdig -w Überwachung-wordpress.scap

2. Verwenden Sie in einem neuen Terminalfenster ab, um 10000 Anforderungen mit maximal 100 gleichzeitig ausgeführten Anforderungen zu stellen:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Dies ist ApacheBench, Version 2.3 <$ Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd., http://www.zeustech.net/ Lizenziert an die Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (geduldig sein) 100 Anfragen abgeschlossen 200 Anfragen abgeschlossen 300 Anfragen abgeschlossen 400 Anfragen abgeschlossen 400 Anfragen abgeschlossen 500 Anfragen abgeschlossen 600 Anfragen abgeschlossen 700 Anfragen abgeschlossen 800 Anfragen abgeschlossen 900 Anfragen abgeschlossen 1000 Anfragen abgeschlossen 1000 Anfragen abgeschlossen

Beachten Sie, dass die obige Ausgabe der Kürze halber abgeschnitten wurde.

3. Gehen Sie zurück zum Sysdig-Container und beenden Sie die Datenerfassung, indem Sie „STRG + C“ eingeben.

Daten analysieren

Wenn Sie sich nun die Größe der Datei monitoring-wordpress.scap ansehen, werden Sie feststellen, dass Sysdig nicht weniger als 80 Millionen Daten erfasst hat:

ls -lh Monitoring-WordPress.scap
-rw-r - r--. 1 root root 80M 7. Januar 16:28 Überwachung-wordpress.scap

Um sich durch diesen Datenberg zurechtzufinden, verwenden Sie einen sogenannten Meißel.

Ein Meißel ist im Grunde ein Lua-Skript, das den Ereignisstrom analysiert und nützliche Aktionen ausführt.

Sie können den folgenden Befehl ausführen, um die Liste der Meißel anzuzeigen:

sysdig -cl
Kategorie: Anwendung --------------------- httplog-HTTP-Anforderungsprotokoll httptop Top-HTTP-Anforderungsprotokoll memcachelog memcached-Anforderungsprotokoll Kategorie: CPU-Auslastung ---------- --------- Spektrogramm Visualisieren Sie die Latenz des Betriebssystems in Echtzeit. subsecoffset Visualisiert die Ausführungszeit des subsecond offset. topcontainers_cpu Top-Container nach CPU-Auslastung topprocs_cpu Top-Prozesse nach CPU-Auslastung Kategorie: Fehler ---------------- topcontainers_error Top-Container nach Anzahl der Fehler topfiles_errors Top-Dateien nach Anzahl der Fehler topprocs_errors Top-Prozesse nach Anzahl von Fehlern

Beachten Sie, dass die obige Ausgabe der Kürze halber abgeschnitten wurde.

Um detaillierte Informationen zu einem Meißel abzurufen, führen Sie den Befehl sysdig gefolgt vom Flag -i und dem Namen des Meißels aus, wie im folgenden Beispiel dargestellt:

sysdig -i httptop
Kategorie: Anwendung --------------------- httptop Top-HTTP-Anforderungen Top-HTTP-Anforderungen anzeigen nach: ncalls, time oder bytes Args: [string] by - Top-HTTP-Transaktionen anzeigen von: ncalls, time oder von tes ist standardmäßig ncalls

In unserem Beispiel können Sie mit dem httptop-Meißel die wichtigsten HTTP-Anforderungen anzeigen:

sysdig -r Überwachung-wordpress.scap -c httptop
URL der ncalls-Methode ----------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? P = 7 14 OPTIONEN * 2 GET localhost: 8000 / favicon.ico 1 GET /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-upright-var.woff2 1 GET localhost / v1.24 / container / 6bd8418eb03f / json 1 GET localhost / v1.24 / container / 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b73457

Sie können dieselben Informationen in einem containerfreundlichen Format mit dem Flag -pcontainer anzeigen:

sysdig -r Überwachung-wordpress.scap -c httptop -pcontainer
URL der ncalls-Containermethode ------------------------------------------ ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 Host GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo OPTIONEN * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24 / / cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a17929b989f9a9

Tiefer Graben

Sysdig erfasst inhaltsreiche Informationen, mit denen Sie detaillierte Einblicke in das Innenleben Ihrer Container erhalten. Angenommen, Sie führen einige Container aus und möchten wissen, welcher Prozess die meiste CPU verbraucht.

  1. Listen Sie die Container auf, die während des Zeitraums aktiv waren, in dem Sie Ereignisse erfasst haben:
sysdig -r Überwachung-wordpress.scap -c lscontainers

2. Sie können den Container identifizieren, der die meiste CPU verbraucht hat mit:

sysdig -r Überwachung-wordpress.scap -c topcontainers_cpu
CPU% container.name ----------------------------------------- ----------------------------------- 5,37% wordpress-sysdig_wordpress_1 1,35% wordpress-sysdig_db_1 0,84% Host 0,51% sysdig

3. Mit dem Meißel topprocs_cpu können Sie noch tiefer graben und den CPU-intensivsten Prozess identifizieren:

sysdig -r Überwachung-wordpress.scap -c topprocs_cpu container.name enthält wordpress_1
CPU% Process PID ---------------------------------------------- ---------------------------------- 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

Wenn Sie mehr Details sehen möchten, bietet der ps-Meißel eine ausführlichere Alternative:

sysdig -r Überwachung-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID USER VIRT RES FDLIMIT CMD 5896 5896 root 232.82M 22.32M 429496729 apache2 8383 8383 www-data 307.44M 25.46M 429496729 apache2 8422 8422 www-data 235.44M 22.90M 429496729 apache2 8424 8424 www-data 307.44M 25.46M 4297 8897 www-data 235.44M 22.89M 429496729 apache2 9154 9154 www-data 235.44M 22.91M 429496729 apache2 9241 9241 www-data 307.44M 25.66M 429496729 apache2 9242 9242 www-data 307.44M 25.67M 429496729 apache2 9300 9300 22,89 M 429496729 Apache2 9372 9372 WWW-Daten 235,44 M 22,89 M 429496729 Apache2 9413 9413 WWW-Daten 233,44 M 20,77 M 429496729 Apache2

Nützliche Tipps

Wenn Sie Sysdig ausführen, um Ereignisse wie im obigen Beispiel (sysdig -w Monitoring-wordpress.scap) zu erfassen, wächst die Ereignisdatei kontinuierlich, bis der gesamte verfügbare Speicherplatz belegt ist. Es gibt einige Methoden, die dies verhindern können:

  • Geben Sie die Anzahl der Ereignisse an, die Sysdig erfassen soll, indem Sie das Flag -n übergeben. Sobald Sysdig die angegebene Anzahl von Ereignissen erfasst, wird es automatisch beendet:
sysdig -n 5000 -w Überwachung-wordpress.scap
  • Verwenden Sie das Flag -C, um Sysdig so zu konfigurieren, dass die Erfassung in kleinere Dateien einer bestimmten Größe aufgeteilt wird. Im folgenden Beispiel werden Ereignisse kontinuierlich in Dateien <10 MB gespeichert:
sysdig -C 10 -w Überwachung-wordpress.scap

Dadurch wird eine Reihe von Dateien erstellt, die nicht größer als 10 MB sind:

ls -lh Monitoring-WordPress *
-rw-r - r--. 1 root root 9.6M 7. Januar 17:13 Überwachung-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7. Januar 17:14 Überwachung-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7. Januar 17:14 Überwachung-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7. Januar 17:14 Überwachung-wordpress.scap3 -rw-r - r--. 1 root root 9.6M 7. Januar 17:14 Überwachung-wordpress.scap4 -rw-r - r--. 1 root root 9.6M 7. Januar 17:14 Überwachung-wordpress.scap5 -rw-r - r--. 1 root root 9.6M 7. Januar 17:14 Überwachung-wordpress.scap6 -rw-r - r--. 1 root root 9.6M 7. Januar 17:14 Überwachung-wordpress.scap7 -rw-r - r--. 1 root root 6.4M 7. Januar 17:14 Überwachung-wordpress.scap8
  • Geben Sie die maximale Anzahl von Dateien an, die Sysdig mit dem Flag -W behalten soll. Sie können beispielsweise die Flags -C und -W folgendermaßen kombinieren:
sysdig -C 10 -W 4 -w Überwachung-wordpress.scap

Mit dem obigen Befehl werden nur die letzten vier Erfassungsdateien gespeichert:

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

Echtzeitüberwachung

Mit Sysdig können Sie Daten auch in Echtzeit analysieren. Auf den ersten Blick kann dies eine entmutigende Aufgabe sein, da standardmäßig alle Ereignisse kontinuierlich auf der Konsole ausgedruckt werden. Zum Glück helfen Meißel.

Nehmen wir ein Beispiel.

Analysieren Sie Ihre Prozesse pro Container

  1. Führen Sie den folgenden Befehl aus, um Ihre Container aufzulisten:
Docker ps
CONTAINER ID IMAGE COMMAND ERSTELLTER STATUS PORTS NAMES 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" vor 9 Minuten Up 9 Minuten sysdig 06def7875617 wordpress: letzter "docker-entrypoint.s…" vor 3 Stunden Up 3 Stunden 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s…" vor 3 Stunden Bis 3 Stunden 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Sie können die im WordPress-Container ausgeführten Prozesse analysieren mit:

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

3. Ebenso können Sie die im MySQL-Container ausgeführten Prozesse analysieren:

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

Beachten Sie, dass Sysdig, nicht viel anders als in diesem Beispiel, den Netzwerkverkehr, die Festplattennutzung usw. überwachen kann.

In diesem Tutorial haben Sie die Grundlagen der Verwendung von Sysdig erläutert, um ein klares Verständnis der von Ihren Containern generierten Aktivitäten zu erhalten. Die Beispiele in diesem Blog-Beitrag haben Ihnen den Einstieg erleichtert. In zukünftigen Tutorials zeigen wir Ihnen, wie Sie Csysdig und Sysdig Inspect verwenden.