sysdig

une brève introduction

Lyon, 21 septembre 2016

Appuyez sur [s] pour ouvrir les notes présentateur dans une nouvelle fenêtre.

Utilisez la touche [ESPACE]
pour passer au slide suivant.

Que fait mon système ?

Mais ****** pourquoi ça rame encore, ce site ???
Pascal MARTIN, tous les jours
Et vous ?

Que se passe-t-il ?

  • Sur ma machine ?
  • Sur mon serveur ?
  • Dans ma VM ?
  • Dans mon container ?

ps

htop

strace

nethogs

tcpdump

netstat

top, htop, atop, apachetop, ftptop, mytop, powertop, iotop, ngrep, bmon, traceroute, ss, lsof, nmap, Glances, saidar, df, dstat, vmstat, uptime, mpstat, pmap, sar, free, /proc, multitail, watch, dtrace, stat, ifconfig, lshw, w, iostat, iptraf, ...

Bref...

  • Plein d'outils
  • Aucun ne fonctionne comme les autres
  • Chacun a ses options

logo sysdig

Installation

sysdig.org/install

  • Paquets pour RHEL, CentOS, Debian, Ubuntu, ...
  • Script d'installation automatisé
  • Instructions pour installation manuelle

Installation (debian)


curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public \
    | sudo apt-key add -
sudo curl -s -o /etc/apt/sources.list.d/draios.list \
    http://download.draios.com/stable/deb/draios.list
sudo apt-get update

sudo apt-get install -y linux-headers-$(uname -r)
sudo apt-get install -y sysdig
                        

Windows ? Mac ?

Limité à la lecture de trace générées sous Linux.

Lister tout ce qu'il se passe


sudo sysdig
	                    

Plus raisonnablement :


sudo sysdig -n 100
	                    

Enregistrer vers un fichier


sudo sysdig -w mon-fichier.scap
	                    

Analyser depuis un fichier


sysdig -r mon-fichier.scap
	                    

Visibilité dans les containers


sudo sysdig -pc -n 100
	                    

Filtrons !


sysdig proc.name=php
	                    

Et en parallèle :


php -S localhost:8001
	                    

Filtrer

  • Opérateurs : =, !=, <, <=, >, >=, contains
  • Combinaison : or, and, not
  • On peut utiliser des parenthèses

Espionner root


sysdig "evt.type=chdir \
    and user.name=root \
    and proc.name!=acpi"
	                    

Choisir les informations affichées : -p


sysdig
    -p "%12user.name %6proc.pid %12proc.name \
        %3fd.num %fd.typechar %fd.name" \
    "evt.type=open and fd.name contains .xml"
	                    

Magento et son cache en fichiers


sysdig -pc "evt.type=open \
    and fd.name contains /var/cache/"
	                    

Les 404 sur notre site


sysdig "proc.name=nginx \
    and evt.type=open \
    and evt.failed=true"
	                    

Toutes les requêtes SELECT


sysdig "proc.name contains php-fpm \
    and evt.buffer contains SELECT"
	                    

Liste des filtres


sysdig -l
	                    

Liste des événements


sysdig -L
	                    

Les chisels

Chisels ?

Scripts qui analysent le flux d'événements pour réaliser des actions utiles.


sysdig -c NOM_DU_CHISEL
						

sysdig -cl
sysdig -i NOM_DU_CHISEL
						

Fichiers avec le plus d'I/O


sysdig -pc -c topfiles_bytes
						

sysdig -pc -c topfiles_bytes \
    "container.name=tea-ecommerce \
    and fd.directory contains cache"
						

Accès fichiers lents (>3msec)


sysdig -pc -c fileslower 3
	                    

Suivre des logs


sysdig -pc -cspy_logs \
    "fd.name contains access.log \
    or container.name=tea-db"
	                    

sysdig -pc -cspy_logs \
    "evt.args contains IndexEcommerce_fr \
    and evt.args contains path=/select"
	                    

csysdig

csysdig

Interface graphique qui permet de visualiser ce qu'il se passe en live.

Tous les processus exécutés dans des containers


csysdig -pc "container.name!=host"
						

Analyser une requête


csysdig -pc "proc.name=php"
	                    

Astuce : F5 et F6.

Conclusion

C'est cool \o/

  • Un seul outil
  • Une seule série d'options
  • Vision globale / en profondeur
  • Collecte / analyse
  • Fonction en-ligne / hors-ligne
  • root souvent requis

Pascal MARTIN

blog.pascal-martin.fr
contact@pascal-martin.fr
@pascal_martin

TEA, The Ebook Alternative

« PHP 7 avancé »

  • Écrit avec Julien Pauli, Cyril Pierre de Geyer et Éric Daspet
  • Éditions Eyrolles
  • 13 octobre !

php7avance.fr — @php7avance