Sysdig: Vad det är och hur man använder det

Sysdig är ett universellt system synbarhetsverktyg med stöd för containrar. Det som gör Sysdig speciellt är att den ansluter sig till maskinens kärna och segregerar informationen per container. För omfattningen av denna självstudie kommer vi att fokusera på open source-versionen av Sysdig.

I nästa avsnitt kommer du att:

  • Installera Sysdig
  • Snurra upp en Wordpress-installation med docker-compose
  • Använd Sysdig för att samla händelser och analysera dem vid ett senare tillfälle
  • Använd Sysdig för att analysera data i realtid

förutsättningar

  • Docker är installerat på ditt system. Mer information om installation av Docker finns på sidan Installera Docker.
  • Docker Compose är installerat på ditt system. Se sidan Installera Docker Compose för instruktioner om hur du installerar Docker Compose.
  • Kärnhuvudena är installerade i värdsystemet.

Installera Sysdig

Följ dessa steg för att installera Sysdig inuti en Docker-behållare:

  1. Utför följande kommando för att dra Sysdig Docker-bilden i ett terminalfönster:
docker pull sysdig / sysdig
Använder standardtagg: senast senast: Pulling from sysdig / sysdig 2967486b0658: Pull complete 78101b780c72: Pull complete 7e78b657334d: Pull complete 650327159ca8: Pull complete 47ebf73ab754: Pull complete bf51ac76a6d9: Pull complete 0cd64d008 fullständig Pull complete 6de86c8ed6e9: Pull complete 8d1825f8be4b: Pull complete Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: Nedladdat nyare bild för sysdig / sysdig: senaste

2. Kör Sysdig i en behållare genom att gå in i:

docker run -i -t - name sysdig - privilegierad -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
* Ställa in / usr / src-länkar från värd * Ta bort sysdig-sond, om den finns * Kör dkms installera för sysdig Fel! echo Dina kärnhuvud för kärnan 3.10.0-957.12.2.el7.x86_64 kan inte hittas på /lib/modules/3.10.0-957.12.2.el7.x86_64/build eller /lib/modules/3.10.0-957.12 .2.el7.x86_64 / källa. * Att köra dkms build misslyckades, kunde inte hitta /var/lib/dkms/sysdig/0.26.4/build/make.log * Försöker ladda ett system sysdig-sond, om det finns * Försöker hitta förkompilerad sysdig-sond för 3.10 .0-957.12.2.el7.x86_64 Hittade kärnkonfigur på /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Försöker ladda ner förkompilerad modul från 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 Nedladdning lyckades, laddar modulrot @ 7b14a23f22eb: / #

Några saker att notera om kommandot ovan:

  • Flaggan -i håller STDIN öppen.
  • Parametern - privilegierad ger åtkomst till alla enheter på värden. Dessutom ställer den in SELinux för att tillåta att processerna som körs inuti behållaren samma åtkomst till värden som en process som körs på värden.
  • Flaggan -v specificerar listan över filer (på värden) som Sysdig kan komma åt.

Snurra upp en Wordpress-installation

I det här avsnittet kommer du att installera Wordpress med kommandot docker-compose.

  1. I ett nytt terminalfönster flyttar du till din projektkatalog och skriver följande kommandon:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Skapa en fil som heter docker-compose med följande innehåll:

version: '3.3' tjänster: db: image: mysql: 5.7 volymer: - db_data: / var / lib / mysql omstart: alltid miljö: MYSQL_ROOT_PASSWORD: hvernigordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: image:: wordpress: senaste portarna: - "8000: 80" omstart: alltid miljö: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volymer: db_data: {}

3. Kör kommandot docker-compose up i fristående läge med:

docker-compose up -d
Skapa nätverk "wordpress-sysdig_default" med standarddrivrutinen Skapa volym "wordpress-sysdig_db_data" med standarddrivrutin Dra wordpress (wordpress: senaste) ... senaste: Pulling from library / wordpress 8ec398bc0356: Pull complete 85cf4fc86478: Pull complete 970dadf4ccb6: Pull complete 8c04561117a4: Pull komplett d6b7434b63a2: Pull komplett 83d8859e9744: Pull komplett 9c3d824d0ad5: Pull komplett 9e316fd5b3b3: Pull komplett 578b40496c37: Pull komplett 814ae7711d3c: Pull komplett 4896fed78b6b: Pull komplett e74d71e9611d: Pull komplett 46017765526c: Pull komplett 280.386.098.458: Pull komplett f32eb0d8c540: Dra fullständig 5c47b9ea747a: dra fullständig ecda5b7aad12: pull komplett 84256a6b6b44: pull komplett 35d4f385efb7: pull komplett bf697c2ae701: pull komplett d054b015f084: pull komplett Digest: sha256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Status: Nedladdat nyare bild för Wordpress: senaste skapa wordpress-sysdig_db_1 ... gjort skapa wordpress-sysdig_word press_1 ... klar

4. Du kan verifiera statusen för dina containrar med:

docker ps

Om allt går bra, bör du se något liknande följande output:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f390eec29f52 wordpress: senaste "docker-entrypoint.s ..." För en minut sedan Up About a minute 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entrypoint. s ... "För ungefär en minut sedan Up About a minute 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "13 minuter sedan Upp 13 minuter sysdig

5. Nu är Wordpress igång. Peka din webbläsare till http: // localhost: 8000 för att starta installationsguiden:

6. När installationsguiden är klar, låt oss gå vidare och skapa en exempelpost:

Insamling av data till en fil

I det här avsnittet visar vi hur du kan använda Sysdig för att samla händelser och analysera dem vid ett senare tillfälle.

  1. För att dumpa alla fångade händelser till en fil, flytta till Sysdig-behållaren och ange följande kommando:
sysdig -w monitoring-wordpress.scap

2. I ett nytt terminalfönster använder du ab för att göra 10000 förfrågningar med högst 100 förfrågningar som körs samtidigt:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Detta är ApacheBench, version 2.3 <$ Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensierad till Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (ha tålamod) Avslutade 100 förfrågningar Avslutade 200 förfrågningar Avslutade 300 förfrågningar Avslutade 400 förfrågningar Avslutade 500 förfrågningar Avslutade 600 förfrågningar Avslutade 700 förfrågningar Avslutade 800 förfrågningar Avslutade 900 förfrågningar Avslutade 1000 förfrågningar Avslutade 1000 förfrågningar

Observera att ovanstående utgång avkortades för korthet.

3. Gå tillbaka till turnén i Sysdig-behållaren och sluta fånga data genom att ange “CTRL + C”.

Analysera data

Om du tittar på storleken på övervaknings-wordpress.scap-filen kommer du att märka att Sysdig fångade inte mindre än 80M data:

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

För att hitta dig igenom detta berg med data använder du något som kallas en mejsel.

En mejsel är i princip ett Lua-skript som analyserar händelseströmmen och utför användbara åtgärder.

Du kan köra följande kommando för att visa listan med mejslar:

sysdig -cl
Kategori: Ansökan --------------------- httplog HTTP-förfrågningslogg httptop Topp HTTP-förfrågningar memcachelog memcached begäran logg Kategori: CPU-användning ---------- --------- spektrogram Visualisera OS-latens i realtid. subsecoffset Visualisera exekveringstid för subsecond offset. topcontainers_cpu Toppcontainrar efter CPU-användning topprocs_cpu Toppprocesser efter CPU-användning Kategori: Fel ---------------- topcontainers_error Toppcontainrar efter antal fel topfiles_errors Toppfiler efter antal fel topprocs_errors toppprocesser efter antal av fel

Observera att ovanstående utgång avkortades för korthet.

För att hämta detaljerad information om en mejsel, kör kommandot sysdig följt av -i-flaggan och namnet på mejseln, som i följande exempel:

sysdig -i httptop
Kategori: Ansökan --------------------- httptop Top HTTP-förfrågningar Visa topp HTTP-förfrågningar av: ncalls, time or bytes Args: [string] av - Visa top HTTP-förfrågningar av: ncalls, tid eller tes, standard är ncalls

Fortsätter vårt exempel, så här kan du använda httptop mejsel för att visa de bästa HTTP-förfrågningarna:

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

Du kan se samma information i ett behållarvänligt format med flaggan-behållare:

sysdig -r monitoring-wordpress.scap -c httptop -container
ncalls containermetod url ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 värd GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo ALTERNATIV * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24h7 / sy1457 sy7 cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a2b7a7a7b7d

Gräver djupare

Sysdig fångar innehållsrik information som låter dig få detaljerad insikt om dina containers inre funktioner. Låt oss anta att du kör några containrar och vill veta vilken process som konsumerar mest CPU.

  1. Lista behållarna som var aktiva under den period där du fångade händelser:
sysdig -r monitoring-wordpress.scap -c lscontainers

2. Du kan identifiera behållaren som konsumerade mest CPU med:

sysdig -r monitoring-wordpress.scap -c topcontainers_cpu
CPU% container.name --------------------------------------------- ----------------------------------- 5,37% wordpress-sysdig_wordpress_1 1,35% wordpress-sysdig_db_1 0,84% värd 0,51% sysdig

3. Du kan gräva ännu djupare och identifiera den mest CPU-intensiva processen med topprocs_cpu mejsel:

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.name innehåller 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

Om du vill se mer information ger ps mejsel ett mer ordentligt alternativ:

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID ANVÄNDARE 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.42 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 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

Användbara tips

Om du kör Sysdig för att fånga händelser som i exemplet ovan (sysdig -w monitoring-wordpress.scap) kommer händelsefilen att växa kontinuerligt tills den förbrukar allt tillgängligt utrymme. Det finns några metoder som kan hjälpa till att förhindra att detta händer:

  • Ange antalet händelser Sysdig ska fånga genom att skicka den -n-flaggan. När Sysdig fångar det angivna antalet händelser kommer det automatiskt att lämna:
sysdig -n 5000 -w monitoring-wordpress.scap
  • Använd -C-flaggan för att konfigurera Sysdig så att den delar upp fången till mindre filer med en specificerad storlek. Följande exempel sparar händelser kontinuerligt till filer <10MB:
sysdig -C 10 -w monitoring-wordpress.scap

Detta skapar ett gäng filer som inte är större än 10 MB:

ls -lh övervakning-wordpress *
-rw-r - r--. 1 root root 9.6M 7 jan 17:13 monitoring-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7 jan 17:14 monitoring-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7 jan 17:14 monitoring-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7 jan 17:14 monitoring-wordpress.scap3 -rw-r - r--. 1 root root 9.6M 7 jan 17:14 monitoring-wordpress.scap4 -rw-r - r--. 1 root root 9.6M 7 jan 17:14 monitoring-wordpress.scap5 -rw-r - r--. 1 root root 9.6M 7 jan 17:14 monitoring-wordpress.scap6 -rw-r - r--. 1 root root 9.6M 7 jan 17:14 monitoring-wordpress.scap7 -rw-r - r--. 1 root root 6.4M 7 jan 17:14 monitoring-wordpress.scap8
  • Ange det maximala antalet filer som Sysdig ska hålla med -W-flaggan. Du kan till exempel kombinera flaggorna -C och -W så:
sysdig -C 10 -W 4 -w övervakning-wordpress.scap

Ovanstående kommando kommer endast att behålla de fyra senaste fångfilerna:

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

Realtidsövervakning

Med Sysdig kan du också analysera data i realtid. Vid en första anblick kan detta verka som en skrämmande uppgift eftersom alla händelser som standard skrivs ut kontinuerligt på konsolen. Lyckligtvis är mejslarna här för att hjälpa till.

Låt oss ta ett exempel.

Analysera dina processer på basis av behållare

  1. Kör följande kommando för att lista dina containrar:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" 9 minuter sedan Upp 9 minuter sysdig 06def7875617 wordpress: senaste "docker-entrypoint.s ..." 3 timmar sedan Up 3 hours 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s ..." 3 timmar sedan Upp 3 timmar 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Du kan analysera processerna som körs i WordPress-behållaren med:

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

3. På liknande sätt kan du analysera processerna som körs i MySQL-behållaren:

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

Observera att Sysdig, inte mycket annorlunda än detta exempel, kan övervaka nätverkstrafik, diskanvändning och så vidare.

I den här handledningen har du gått igenom grunderna i att använda Sysdig för att få en klar förståelse av aktiviteten som genereras av dina containrar. Exemplen i detta blogginlägg hjälpte dig att komma igång och i framtida tutorials visar vi dig hur du använder Csysdig och Sysdig Inspect.