Sysdig: què és i com utilitzar-lo

Sysdig és una eina de visibilitat del sistema universal amb suport per a contenidors. El que fa especial a Sysdig és que s’enganxi al nucli de la màquina i que segrega la informació per cada contenidor. Per a l’abast d’aquest tutorial, ens centrarem en la versió de codi obert de Sysdig.

En les següents seccions:

  • Instal·leu Sysdig
  • Escriviu una instal·lació de Wordpress mitjançant docker-compose
  • Utilitzeu Sysdig per recopilar esdeveniments i analitzar-los més endavant
  • Utilitzeu Sysdig per analitzar dades en temps real

Prerequisits

  • Docker està instal·lat al vostre sistema. Per obtenir més informació sobre la instal·lació de Docker, consulteu la pàgina Instal·lar Docker.
  • Docker Compose està instal·lat al sistema. Consulteu la pàgina Instal·lar la composició Docker per obtenir instruccions sobre com instal·lar Docker Compose.
  • Les capçaleres del nucli estan instal·lades al sistema host.

Instal·leu Sysdig

Seguiu aquests passos per instal·lar Sysdig dins d’un contenidor Docker:

  1. En una finestra del terminal, executeu la següent comanda per treure la imatge de Sysdig Docker:
docker pull sysdig / sysdig
Ús de l'etiqueta predeterminada: més recent: Tirada de sysdig / sysdig 2967486b0658: Tira completa 78101b780c72: Tira completa 7e78b657334d: Tira complet 650327159ca8: Tira complet 47ebf73ab754: tira complet bf51ac76a6d9: tira completa 0cd115ddddddpd053500dbf Tire complet 6de86c8ed6e9: Tull complet 8d1825f8be4b: Pull complet Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Estat: nova imatge descarregada per sysdig / sysdig: més recent

2. Executeu Sysdig en un contenidor introduint:

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
* Configuració dels enllaços / usr / src des de l'amfitrió * Descàrrega de la sonda sysdig, si hi ha. * S'executa la instal·lació de dkms per error de sysdig. eco Els vostres capçaleres del nucli per al nucli 3.10.0-957.12.2.el7.x86_64 no es poden trobar a /lib/modules/3.10.0-957.12.2.el7.x86_64/build o /lib/modules/3.10.0-957.12 .2.el7.x86_64 / font. * L'execució de la creació de dkms no ha pogut trobar /var/lib/dkms/sysdig/0.26.4/build/make.log * Tractant de carregar una sonda sysdig del sistema, si existeix * Intenta trobar la sonda pre-compilada per 3.10 .0-957.12.2.el7.x86_64 S'ha trobat el nucli configurat a /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Intenta descarregar el mòdul precompilat des de https://s3.amazonaws.com/download .draios.com / stable / sysdig-sonda-binaries / sysdig-sonda-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko Descarregar amb èxit, carrega el mòdul arrel @ 7b14a23f22eb: / #

Algunes coses a tenir en compte sobre l’ordre anterior:

  • La bandera -i manté STDIN obert.
  • El paràmetre --privileged proporciona accés a tots els dispositius de l'amfitrió. També estableix SELinux per permetre als processos que s'executen dins del contenidor el mateix accés a l'amfitrió que un procés que s'està executant a l'amfitrió.
  • El senyalador -v especifica la llista de fitxers (a l'amfitrió) als quals pot accedir Sysdig.

Desactiva una instal·lació de Wordpress

En aquesta secció, instal·lareu Wordpress mitjançant la comanda docker-compose.

  1. En una nova finestra de terminal, desplaceu-vos al directori de projectes i escriviu les ordres següents:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Creeu un fitxer anomenat docker-compose amb el contingut següent:

Versió: serveis '3.3': db: imatge: mysql: 5.7 volums: - db_data: / var / lib / mysql reiniciar: sempre entorn: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depend_on: image wordpress: ports més recents: - "8000: 80" restart: entorn sempre: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: volums wordpress: db_data: {}

3. Executeu l'ordre docker-compose up en mode separat amb:

docker-compondre -d
Creació de la xarxa "wordpress-sysdig_default" amb el controlador predeterminat Creació del volum "wordpress-sysdig_db_data" amb controlador predeterminat Tirant wordpress (wordpress: més recent) ... més recent: Tirant de la biblioteca / wordpress 8ec398bc0356: Tira complet 85cf4fc86478: Tira complet 970dadf4ccb6: Pull complet 970dadf4ccb6 8c04561117a4: Tire completa d6b7434b63a2: Tire completa 83d8859e9744: Tire completa 9c3d824d0ad5: Tire completa 9e316fd5b3b3: Tire completa 578b40496c37: Tire completa 814ae7711d3c: Tire completa 4896fed78b6b: Tire completa e74d71e9611d: Tire completa 46017765526c: Tire completa 280.386.098.458: Tire f32eb0d8c540 completa: Tire 5c47b9ea747a completa: tiri ecda5b7aad12 completa: tiri completa 84256a6b6b44: tiri completa 35d4f385efb7: tiri bf697c2ae701 completa: tiri completa d054b015f084: tiri digestió completa: sha256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Estat: descarregat imatge més recent de WordPress: últimes Creació de wordpress-sysdig_db_1 ... fet Creant wordpress-sysdig_word premeu_1 ... fet

4. Podeu verificar l'estat dels vostres contenidors amb:

docker ps

Si tot va bé, hauríeu de veure alguna cosa semblant a la sortida següent:

Identificador de contenidor IMATGE COMANDAT ESTATUS CREATS PORTS NOMS f390eec29f52 wordpress: darrer "docker-entrypoint.s ..." Fa aproximadament un minut Pujar Aproximadament un minut 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "dys" s ... "Fa aproximadament un minut Pujar Aproximadament un minut 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "Fa 13 minuts Fins 13 minuts sysdig

5. Ara Wordpress està en funcionament. Dirigiu el navegador a http: // localhost: 8000 per iniciar l'assistent d'instal·lació:

6. Un cop acabat l'assistent d'instal·lació, anem endavant i creem una publicació d'exemple:

Recopilació de dades en un fitxer

En aquesta secció, mostrarem com podeu utilitzar Sysdig per recopilar esdeveniments i analitzar-los més endavant.

  1. Per a descarregar tots els esdeveniments capturats en un fitxer, aneu al contenidor Sysdig i introduïu l'ordre següent:
sysdig -w monitoring-wordpress.scap

2. En una nova finestra del terminal, utilitzeu ab per realitzar 10000 sol·licituds amb un màxim de 100 peticions que s’executen simultàniament:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Es tracta d’ApacheBench, Versió 2.3  Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Llicenciat a The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (tingueu paciència) Completat 100 sol·licituds Completades 200 sol·licituds Completades 300 sol·licituds Completades 400 peticions Completades 500 peticions Completades 600 peticions Completades 700 peticions Completades 800 peticions Completades 900 sol·licituds Completades 1000 peticions Finalitzades 1000 sol·licituds

Tingueu en compte que la sortida anterior es va truncar per brevetat.

3. Torneu a fer la visita al contenidor de Sysdig i deixeu de capturar dades si introduïu "CTRL + C".

Anàlisi de dades

Ara, si mireu la mida del fitxer monitoring-wordpress.scap, notareu que Sysdig va capturar no menys de 80 M de dades:

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

Per trobar el vostre camí per aquesta muntanya de dades, fareu servir una cosa anomenada cisell.

Un cisell és bàsicament un script Lua que analitza el flux d'esdeveniments i realitza accions útils.

Podeu executar la següent comanda per mostrar la llista de cisells:

sysdig -cl
Categoria: Aplicació --------------------- Registre de sol·licituds HTTP httplog Registre de peticions HTTP de peticions Memcachelog registre de peticions memcached Categoria: Ús de la CPU ---------- --------- Espectrograma Visualitza la latència del sistema operatiu en temps real. subsecondsonalització Visualitzar el temps d’execució en offset de subsegund. topcontainers_cpu Principals contenidors per ús de la CPU topprocs_cpu Principals processos per ús de la CPU Categoria: Errors ---------------- topcontainers_error Top contenidors per nombre d'errors topfiles_errors Arxius principals per nombre d'errors topprocs_errors processos principals per nombre d’errors

Tingueu en compte que la sortida anterior es va truncar per brevetat.

Per obtenir informació detallada sobre un cisell, executeu l'ordre sysdig seguit de la senyalització -i i el nom del cisell, com en el següent exemple:

sysdig -i httptop
Categoria: Aplicació --------------------- httptop Sol·licituds HTTP principals Mostra les peticions HTTP principals per: ncalls, hora o bytes Args: [string] per - Mostra les transaccions HTTP principals per: ncalls, time o per tes, el valor per defecte és ncalls

Continuant amb el nostre exemple, a continuació, es mostra com podeu utilitzar el cisell httptop per mostrar les sol·licituds HTTP principals:

sysdig -r monitoring-wordpress.scap -c httptop
url del mètode ncalls ------------------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? P = 7 14 OPCIONS * 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 / contenidors / 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b742f85b859

Podeu veure la mateixa informació en un format amè per a contenidors amb la senyalització -pcontainer:

sysdig -r monitoring-wordpress.scap -c httptop -pcontainer
url mètode de contenidor ncalls ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 host GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo OPCIONS * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24 / 1/24/24/89 cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1d989da7b9

Cavant més a fons

Sysdig capta informació rica en contingut que us permet obtenir informació detallada sobre el funcionament interior dels vostres contenidors. Suposem que teniu uns quants contenidors i voleu saber quin procés consumeix més CPU.

  1. Llista els contenidors que van estar actius durant el període en què va capturar esdeveniments:
sysdig -r monitoring-wordpress.scap -c lscontainers

2. Podeu identificar el contenidor que més CPU ha consumit amb:

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% ​​amfitrió 0.51% sysdig

3. Podeu aprofundir i identificar el procés més intensiu de CPU amb el cisell topprocs_cpu:

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.name conté wordpress_1
CPU PID Process CPU ------------------------------------------------------ ---------------------------------- 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

Si voleu veure més detalls, el cisell ps ofereix una alternativa més verbosa:

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID USER VIRT RES FDLIMIT CMD 5896 5896 arrel 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 6746 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 www 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

Consells útils

Si executeu Sysdig per capturar esdeveniments com en l'exemple anterior (sysdig -w monitoring-wordpress.scap), el fitxer d'esdeveniments creixerà contínuament fins que es consumeixi tot l'espai disponible. Hi ha alguns mètodes que poden ajudar a evitar que això passi:

  • Especifiqueu el nombre d'esdeveniments que ha de capturar Sysdig passant-lo el senyalador -n. Un cop Sysdig capti el nombre d'esdeveniments especificat, sortirà automàticament:
sysdig -n 5000 -w monitoring-wordpress.scap
  • Utilitzeu el senyalador -C per configurar Sysdig de manera que trenqui la captura en fitxers més petits d'una mida especificada. El següent exemple desa contínuament esdeveniments en fitxers <10 MB:
sysdig -C 10 -w monitoring-wordpress.scap

D’aquesta manera es crearà un grup de fitxers no superior a 10 MB:

ls -lh monitor-wordpress *
-rw-r - r--. 1 arrel arrel 9.6M 7 gen 17:13 monitor-wordpress.scap0 -rw-r - r--. 1 arrel arrel 9.6M 7 gen 17:14 monitor-wordpress.scap1 -rw-r - r--. 1 arrel arrel 9.6M 7 gen 17:14 monitor-wordpress.scap2 -rw-r - r--. 1 arrel arrel 9.6M 7 gen 17:14 monitor-wordpress.scap3 -rw-r - r--. 1 arrel arrel 9.6M 7 gen 17:14 monitor-wordpress.scap4 -rw-r - r--. 1 arrel arrel 9.6M 7 gen 17:14 monitor-wordpress.scap5 -rw-r - r--. 1 arrel arrel 9.6M 7 gen 17:14 monitor-wordpress.scap6 -rw-r - r--. 1 arrel arrel 9.6M 7 gen 17:14 monitor-wordpress.scap7 -rw-r - r--. 1 arrel arrel 6.4M 7 gen 17:14 monitor-wordpress.scap8
  • Especifiqueu el nombre màxim de fitxers que Sysdig ha de conservar amb el senyalador -W. Per exemple, podeu combinar els indicadors -C i -W així:
sysdig -C 10 -W 4 -w monitoring-wordpress.scap

La comanda anterior només conservarà els darrers quatre fitxers de captura:

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

Monitorització en temps real

Amb Sysdig, també podeu analitzar dades en temps real. A primera vista, això pot semblar una tasca descoratjadora perquè, per defecte, tots els esdeveniments s’imprimeixen contínuament a la consola. Afortunadament, els cisells són aquí per ajudar.

Prenguem un exemple.

Analitzeu els vostres processos en base al contenidor

  1. Executeu la següent comanda per llistar els vostres contenidors:
docker ps
Identificador del contenidor IMATGE COMANDAT ESTATUS CREATS PORTS NOMS 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" Fa 9 minuts Fins 9 minuts sysdig 06def7875617 wordpress: darrer "docker-entrypoint.s ..." Fa 3 hores Fins 3 hores 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s ..." fa 3 hores Fins 3 hores 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Podeu analitzar els processos que s’executen al contenidor de WordPress mitjançant:

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

3. De la mateixa manera, podeu analitzar els processos que s’executen en el contenidor MySQL:

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

Tingueu en compte que, no molt diferent d’aquest exemple, Sysdig pot supervisar el trànsit de xarxa, l’ús de disc, etc.

En aquest tutorial, heu superat els fonaments de l’ús de Sysdig per entendre clarament l’activitat que generen els vostres contenidors. Els exemples d'aquesta publicació del bloc us han ajudat a començar i, en futurs tutorials, us mostrarem com utilitzar Csysdig i Sysdig Inspect.