Sysdig: wat het is en hoe het te gebruiken

Sysdig is een universele tool voor systeemzichtbaarheid met ondersteuning voor containers. Wat Sysdig speciaal maakt, is dat het zichzelf in de kernel van de machine haakt en de informatie per container scheidt. Voor de scope van deze tutorial zullen we ons concentreren op de open-source versie van Sysdig.

In de volgende secties zul je:

  • Installeer Sysdig
  • Draai een Wordpress-installatie met docker-compose
  • Gebruik Sysdig om gebeurtenissen te verzamelen en op een later tijdstip te analyseren
  • Gebruik Sysdig om gegevens in realtime te analyseren

Vereisten

  • Docker is op uw systeem geïnstalleerd. Raadpleeg de Install Docker-pagina voor meer informatie over het installeren van Docker.
  • Docker Compose is op uw systeem geïnstalleerd. Raadpleeg de pagina Docker Compose installeren voor instructies over het installeren van Docker Compose.
  • De kernelkopteksten worden op het hostsysteem geïnstalleerd.

Installeer Sysdig

Volg deze stappen om Sysdig in een Docker-container te installeren:

  1. Voer in een terminalvenster de volgende opdracht uit om de Sysdig Docker-afbeelding op te halen:
docker pull sysdig / sysdig
Standaardlabel gebruiken: nieuwste nieuwste: Pulling from sysdig / sysdig 2967486b0658: Pull complete 78101b780c72: Pull complete 7e78b657334d: Pull complete 650327159ca8: Pull complete 47ebf73ab754: Pull complete bf51ac76a6d9: Pull complete 0cd11104dbf6: Pull35 e6d8: complete 350 Pull complete 6de86c8ed6e9: Pull complete 8d1825f8be4b: Pull complete Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: nieuwere afbeelding gedownload voor sysdig / sysdig: laatste

2. Voer Sysdig uit in een container door het volgende in te voeren:

docker voert -i -t --name sysdig --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v / dev: / host / dev -v / proc: / host uit / proc: ro -v / boot: / host / boot: ro -v / lib / modules: / host / lib / modules: ro -v / usr: / host / usr: ro sysdig / sysdig
* Het opzetten van / usr / src-links van de host * Het verwijderen van sysdig-probe, indien aanwezig * Running dkms install for sysdig Error! echo Uw kernelkopteksten voor kernel 3.10.0-957.12.2.el7.x86_64 zijn niet te vinden op /lib/modules/3.10.0-957.12.2.el7.x86_64/build of /lib/modules/3.10.0-957.12 .2.el7.x86_64 / source. * Het uitvoeren van het bouwen van dkms is mislukt, kan /var/lib/dkms/sysdig/0.26.4/build/make.log niet vinden * Probeert een sysdig-probe van het systeem te laden, indien aanwezig * Probeert voorgecompileerde sysdig-probe te vinden voor 3.10 .0-957.12.2.el7.x86_64 Kernelconfiguratie gevonden op /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Probeerde de voorgecompileerde module te downloaden van 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 Downloaden geslaagd, module-root laden @ 7b14a23f22eb: / #

Een paar dingen om op te merken over het bovenstaande commando:

  • De vlag -i houdt STDIN open.
  • De --privileged parameter geeft toegang tot alle apparaten op de host. Het stelt SELinux ook in om de processen die in de container draaien dezelfde toegang tot de host te geven als een proces dat op de host draait.
  • De vlag -v specificeert de lijst met bestanden (op de host) waartoe Sysdig toegang heeft.

Draai een WordPress-installatie

In deze sectie installeert u Wordpress met de opdracht docker-compose.

  1. Ga in een nieuw terminalvenster naar uw projectenmap en typ de volgende opdrachten:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Maak een bestand met de naam docker-compose met de volgende inhoud:

versie: '3.3' services: db: image: mysql: 5.7 volumes: - db_data: / var / lib / mysql herstart: altijd omgeving: MYSQL_ROOT_PASSWORD: ergens MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: afhankelijk van afbeelding: - d wordpress: laatste poorten: - "8000: 80" herstarten: altijd omgeving: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {}

3. Voer de opdracht docker-compose up uit in vrijstaande modus met:

docker-samenstellen up -d
Netwerk "wordpress-sysdig_default" maken met het standaardstuurprogramma Volume creëren "wordpress-sysdig_db_data" met standaardstuurprogramma Wordpress trekken (wordpress: laatste) ... laatste: Pulling uit bibliotheek / wordpress 8ec398bc0356: Pull complete 85cf4fc86478: Pull complete 970dadf4ccb6: Pull complete 8c04561117a4: Pull-compleet d6b7434b63a2: Pull-compleet 83d8859e9744: Pull-compleet 9c3d824d0ad5: Pull-compleet 9e316fd5b3b3: Pull-compleet 578b40496c37: Pull-compleet 814ae7711d3c: Pull-compleet: compleet-compleet Pull complete ecda5b7aad12: Pull complete 84256a6b6b44: Pull complete 35d4f385efb7: Pull complete bf697c2ae701: Pull complete d054b015f084: Pull complete Digest: sha256: 73e8d8adf491c7ed57word7: 578 press_1 ... klaar

4. U kunt de status van uw containers verifiëren met:

docker ps

Als alles goed gaat, zou je iets moeten zien dat lijkt op de volgende uitvoer:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f390eec29f52 wordpress: nieuwste "docker-entrypoint.s ..." Ongeveer een minuut geleden Omhoog Ongeveer een minuut 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entrypoint. s… "Ongeveer een minuut geleden Omhoog Ongeveer een minuut 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.... "13 minuten geleden Omhoog 13 minuten sysdig

5. Nu is Wordpress actief. Wijs uw browser naar http: // localhost: 8000 om de installatiewizard te starten:

6. Zodra de installatiewizard is voltooid, gaan we door en maken we een voorbeeldbericht:

Gegevens verzamelen in een bestand

In deze sectie laten we zien hoe u Sysdig kunt gebruiken om gebeurtenissen te verzamelen en deze later te analyseren.

  1. Om alle vastgelegde gebeurtenissen in een bestand te dumpen, gaat u naar de Sysdig-container en voert u de volgende opdracht in:
sysdig -w monitoring-wordpress.scap

2. Gebruik in een nieuw terminalvenster ab om 10000 verzoeken te doen met een maximum van 100 verzoeken die gelijktijdig lopen:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Dit is ApacheBench, versie 2.3 <$ Revisie: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Onder licentie van The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (wees geduldig) Voltooid 100 verzoeken Voltooid 200 verzoeken Voltooid 300 verzoeken Voltooid 400 verzoeken Voltooid 500 verzoeken Voltooid 600 verzoeken Voltooid 700 verzoeken Voltooid 800 verzoeken Voltooid 900 verzoeken Voltooid 1000 verzoeken Voltooid 1000 verzoeken

Merk op dat de bovenstaande uitvoer voor beknoptheid is afgekapt.

3. Ga terug naar de Sysdig-container en stop met het vastleggen van gegevens door "CTRL + C" in te voeren.

Gegevens analyseren

Als je nu kijkt naar de grootte van het monitoring-wordpress.scap-bestand, zul je merken dat Sysdig maar liefst 80 miljoen aan gegevens heeft vastgelegd:

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

Om je weg door deze berg gegevens te vinden, gebruik je iets dat een beitel wordt genoemd.

Een beitel is in feite een Lua-script dat de gebeurtenisstroom analyseert en nuttige acties uitvoert.

U kunt de volgende opdracht uitvoeren om de lijst met beitels weer te geven:

sysdig -cl
Categorie: Applicatie --------------------- httplog HTTP-verzoeken log httpptop Top HTTP-verzoeken memcachelog memcached verzoeken log Categorie: CPU-gebruik ---------- --------- spectrogram Visualiseer de latentie van het besturingssysteem in realtime. subsecoffset Visualiseer de uitvoeringstijd van de offset van een tweede seconde. topcontainers_cpu Topcontainers op CPU-gebruik topprocs_cpu Topprocessen op CPU-gebruik Categorie: Fouten ---------------- topcontainers_error Topcontainers op aantal fouten topfiles_errors Topbestanden op aantal fouten topprocs_errors topprocessen op nummer van fouten

Merk op dat de bovenstaande uitvoer voor beknoptheid is afgekapt.

Om gedetailleerde informatie over een beitel op te halen, voert u het sysdig-commando uit gevolgd door de vlag -i en de naam van de beitel, zoals in het volgende voorbeeld:

sysdig -i httpptop
Categorie: Applicatie --------------------- httppt Top HTTP-verzoeken Toon top HTTP-verzoeken door: ncalls, tijd of bytes Args: [string] door - Toon top HTTP-transacties door: ncalls, tijd of door tes, standaard is ncalls

Om ons voorbeeld voort te zetten, kunt u als volgt zien hoe u de beitel van beitel kunt gebruiken om de belangrijkste HTTP-verzoeken weer te geven:

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

U kunt dezelfde informatie in een containervriendelijk formaat zien met de vlag -pcontainer:

sysdig -r monitoring-wordpress.scap -c httpptop -pcontainer
ncalls container methode url ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo KRIJGEN localhost: 8000 /? P = 7 1000 host KRIJGEN localhost: 8000 /? p = 7 43 wordpress-sysdig_wo OPTIES * 1 sysdig KRIJG /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24 / containers / 06def78756 cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1d2907377

Dieper graven

Sysdig legt inhoudrijke informatie vast waarmee u gedetailleerde inzichten kunt krijgen in de werking van uw containers. Stel dat u een paar containers gebruikt en wilt weten welk proces de meeste CPU verbruikt.

  1. Maak een lijst van de containers die actief waren tijdens de periode waarin u gebeurtenissen vastlegde:
sysdig -r monitoring-wordpress.scap -c lscontainers

2. U kunt de container identificeren die de meeste CPU heeft verbruikt met:

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% host 0,51% sysdig

3. U kunt nog dieper graven en het meest CPU-intensieve proces identificeren met de beitel topprocs_cpu:

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.name bevat wordpress_1
CPU% Proces 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

Als je meer details wilt zien, biedt de ps-beitel een uitgebreider alternatief:

sysdig -r monitoring-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.44 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 4294967294 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

Bruikbare tips

Als u Sysdig uitvoert om gebeurtenissen vast te leggen zoals in het bovenstaande voorbeeld (sysdig -w monitoring-wordpress.scap), zal het gebeurtenisbestand continu groeien totdat het alle beschikbare ruimte in beslag neemt. Er zijn een paar methoden die kunnen helpen voorkomen dat dit gebeurt:

  • Geef het aantal gebeurtenissen op dat Sysdig moet vastleggen door het de vlag -n door te geven. Zodra Sysdig het opgegeven aantal gebeurtenissen vastlegt, wordt het automatisch afgesloten:
sysdig -n 5000 -w monitoring-wordpress.scap
  • Gebruik de vlag -C om Sysdig te configureren zodat het de opname opsplitst in kleinere bestanden van een gespecificeerde grootte. In het volgende voorbeeld worden gebeurtenissen continu opgeslagen in bestanden <10 MB:
sysdig -C 10 -w monitoring-wordpress.scap

Hierdoor worden een aantal bestanden gemaakt die niet groter zijn dan 10 MB:

ls -lh monitoring-wordpress *
-rw-r - r--. 1 root root 9.6M 7 januari 17:13 monitoring-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7 januari 17:14 monitoring-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7 januari 17:14 monitoring-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7 januari 17:14 monitoring-wordpress.scap3 -rw-r - r--. 1 root root 9.6M 7 januari 17:14 monitoring-wordpress.scap4 -rw-r - r--. 1 root root 9.6M 7 januari 17:14 monitoring-wordpress.scap5 -rw-r - r--. 1 root root 9.6M 7 januari 17:14 monitoring-wordpress.scap6 -rw-r - r--. 1 root root 9.6M 7 januari 17:14 monitoring-wordpress.scap7 -rw-r - r--. 1 root root 6.4M 7 januari 17:14 monitoring-wordpress.scap8
  • Geef het maximale aantal bestanden op dat Sysdig mag bewaren met de vlag -W. U kunt bijvoorbeeld de vlaggen -C en -W als volgt combineren:
sysdig -C 10 -W 4 -w monitoring-wordpress.scap

De bovenstaande opdracht bewaart alleen de laatste vier vastlegbestanden:

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

Real-time monitoring

Met Sysdig kunt u ook gegevens in realtime analyseren. Op het eerste gezicht kan dit een ontmoedigende taak lijken, omdat standaard alle evenementen continu worden afgedrukt naar de console. Gelukkig zijn er beitels om te helpen.

Laten we een voorbeeld nemen.

Analyseer uw processen per container

  1. Voer de volgende opdracht uit om uw containers weer te geven:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint...." 9 minuten geleden Up 9 minutes sysdig 06def7875617 wordpress: latest "docker-entrypoint.s…" 3 uur geleden Up 3 uur 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s ..." 3 uur geleden Up 3 uur 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. U kunt de processen in de WordPress-container analyseren met:

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

3. Op dezelfde manier kunt u de processen analyseren die in de MySQL-container worden uitgevoerd:

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

Merk op dat, niet veel verschillend van dit voorbeeld, Sysdig netwerkverkeer, schijfgebruik, enzovoort kan monitoren.

In deze zelfstudie hebt u de basisprincipes van het gebruik van Sysdig besproken om een ​​duidelijk beeld te krijgen van de activiteit die door uw containers wordt gegenereerd. De voorbeelden in deze blogpost hebben je op weg geholpen en in toekomstige zelfstudies laten we je zien hoe je Csysdig en Sysdig Inspect kunt gebruiken.