Zoeken op website

Sysdig - Een krachtig hulpmiddel voor systeemmonitoring en probleemoplossing voor Linux


Sysdig is een open-source, platformonafhankelijke, krachtige en flexibele tool voor systeemmonitoring en probleemoplossing voor Linux; het werkt ook op Windows en Mac OSX, maar met beperkte functionaliteit en kan worden gebruikt voor systeemanalyse, inspectie en foutopsporing.

Normaal gesproken zou je een mix van verschillende Linux-hulpmiddelen voor prestatiebewaking en probleemoplossing gebruiken, waaronder de hieronder genoemde, om de Linux-bewakings- en foutopsporingstaken uit te voeren:

  1. strace – ontdek systeemoproepen en signalen naar een proces.
  2. tcpdump – ruwe monitoring van netwerkverkeer.
  3. netstat – monitoring van netwerkverbindingen.
  4. htop – realtime procesbewaking.
  5. iftop – realtime monitoring van de netwerkbandbreedte.
  6. lsof – bekijk welke bestanden door welk proces worden geopend.

sysdig integreert echter wat alle bovenstaande tools en nog veel meer te bieden hebben in één enkel en eenvoudig programma, en nog meer met geweldige containerondersteuning. Hiermee kunt u het werkelijke gedrag (stroom van gebeurtenissen) van zowel Linux-systemen als containers vastleggen, opslaan, filteren en onderzoeken.

Het wordt geleverd met een opdrachtregelinterface en een krachtige interactieve gebruikersinterface (csysdig) waarmee u de systeemactiviteit in realtime kunt bekijken, of een tracedump kunt uitvoeren en kunt opslaan voor latere analyse. Je kunt zien hoe csysdig werkt in de onderstaande video.

Sysdig-functies:

  • Het is snel, stabiel en gemakkelijk te gebruiken en is uitvoerig en goed gedocumenteerd.
  • Wordt geleverd met native ondersteuning voor containertechnologieën, waaronder Docker, LXC.
  • Het is scriptbaar in Lua; biedt beitels (lichtgewicht Lua-scripts) voor het verwerken van vastgelegde systeemgebeurtenissen.
  • Ondersteunt nuttig filteren van uitvoer.
  • Ondersteunt systeem- en applicatietracering.
  • Het kan worden geïntegreerd met Ansible, Puppet en Logstash.
  • Schakel voorbeelden van geavanceerde loganalyse in.
  • Het biedt ook analysefuncties voor Linux-serveraanvallen (forensisch onderzoek) voor ethische hackers en nog veel meer.

In dit artikel laten we zien hoe je sysdig op een Linux-systeem installeert, en gebruiken we het met basisvoorbeelden van systeemanalyse, monitoring en probleemoplossing.

Hoe Sysdig onder Linux te installeren

Het installeren van het sysdig pakket is net zo eenvoudig als het uitvoeren van de onderstaande opdracht, waarmee alle vereisten worden gecontroleerd; als alles aanwezig is, zal het het pakket downloaden en installeren vanuit de Draios APT/YUM-repository.

curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash 
OR
curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash

Na de installatie moet u sysdig als root uitvoeren omdat het toegang vereist tot kritieke gebieden zoals het /proc bestandssysteem, /dev/sysdig* apparaten en moet de sysdig-probe kernelmodule automatisch laden (voor het geval dit niet het geval is); gebruik anders de opdracht sudo.

Het meest eenvoudige voorbeeld is het uitvoeren ervan zonder enige argumenten, dit zal je in staat stellen om de stroom van gebeurtenissen op je Linux-systeem in realtime bijgewerkt te bekijken:

sudo sysdig

De bovenstaande uitvoer (onbewerkte gegevens) is misschien niet zo logisch voor u. Voor een nuttiger uitvoer voert u csysdig uit:

sudo csysdig 

Opmerking: om het echte gevoel van deze tool te krijgen, moet je sysdig gebruiken, dat ruwe gegevens produceert zoals we eerder zagen, van een lopende Linux-systeem: dit vereist dat u begrijpt hoe u filters en beitels moet gebruiken.

Maar als je een pijnloze manier nodig hebt om sysdig te gebruiken, ga dan verder met csysdig.

Sysdig-beitels en filters begrijpen

Sysdig-beitels zijn minimale Lua-scripts voor het onderzoeken van de sysdig-gebeurtenisstroom om nuttige acties voor het oplossen van systeemproblemen uit te voeren en meer. Met de onderstaande opdracht kunt u alle beschikbare beitels bekijken:

sudo sysdig -cl

De schermafbeelding toont een voorbeeldlijst met beitels in verschillende categorieën.

Als je meer informatie wilt over een bepaalde beitel, gebruik dan de vlag -i:

sudo sysdig -i topprocs_cpu

Sysdig-filters voegen meer kracht toe aan het soort uitvoer dat u kunt verkrijgen uit gebeurtenisstromen, ze stellen u in staat de uitvoer aan te passen. U moet ze aan het einde van een opdrachtregel opgeven.

Een eenvoudig en gebruikelijk filter is een eenvoudige “class.field=value”-controle. Je kunt ook beitels combineren met filters voor nog krachtigere aanpassingen.

Om een lijst met beschikbare veldklassen, velden en hun beschrijvingen te bekijken, typt u:


sudo sysdig -l

Linux-systeemtracebestand maken

Om sysdig-uitvoer in een bestand te dumpen voor latere analyse, gebruikt u de vlag -w op deze manier.

U kunt het traceerdumpbestand lezen met de vlag -r:


sudo sysdig -r trace.scap

De optie -s wordt gebruikt om het aantal bytes aan gegevens op te geven dat voor elke systeemgebeurtenis moet worden vastgelegd. In dit voorbeeld filteren we gebeurtenissen voor het proces mongod.

sudo sysdig -s 3000 -w trace.scap
sudo sysdig -r trace.scap proc.name=mongod

Linux-processen monitoren

Om systeemprocessen weer te geven, typt u:

sudo sysdig -c ps

Bewaak processen op basis van CPU-gebruik

Voer deze opdracht uit om de belangrijkste processen te bekijken op basis van het CPU-gebruikspercentage:

sudo sysdig -c topprocs_cpu

Bewaking van netwerkverbindingen en I/O

Om systeemnetwerkverbindingen te bekijken, voert u het volgende uit:

sudo sysdig -c netstat

Met de volgende opdracht kunt u de belangrijkste netwerkverbindingen weergeven op totaal aantal bytes:

sudo sysdig -c topconns

Vervolgens kunt u ook als volgt de belangrijkste processen per netwerk-I/O weergeven:

sudo sysdig -c topprocs_net    

Systeembestand I/O bewaken

U kunt de door processen op het systeem gelezen en geschreven gegevens uitvoeren, zoals hieronder:

sudo sysdig -c echo_fds

Om de belangrijkste processen per (lezen + schrijven) schijfbytes weer te geven, gebruikt u:

sudo sysdig -c topprocs_file   

Problemen met de prestaties van een Linux-systeem oplossen

Om systeemknelpunten (langzame systeemaanroepen) in de gaten te houden, voert u deze opdracht uit:

sudo sysdig -c bottlenecks

Houd de uitvoeringstijd van een proces bij

Om de uitvoeringstijd van een proces bij te houden, kunt u deze opdracht uitvoeren en de tracering in een bestand dumpen:

sudo sysdig -w extime.scap -c proc_exec_time 

Gebruik vervolgens een filter om de details van een bepaald proces (postgres in dit voorbeeld) als volgt op nul te zetten:

sudo sysdig -r extime.scap proc.name=postgres

Ontdek Slow Network I/0

Met deze eenvoudige opdracht kunt u trage netwerk-I/0 detecteren:

sudo sysdig -c netlower     

Logbestandvermeldingen bekijken

Met de onderstaande opdracht kunt u elk bericht weergeven dat naar syslog is geschreven. Als u geïnteresseerd bent in logboekgegevens voor een specifiek proces, maakt u een tracedump en filtert u deze dienovereenkomstig uit, zoals eerder weergegeven:

sudo sysdig -c spy_syslog      

U kunt alle gegevens die door een proces naar een logbestand zijn geschreven, als volgt afdrukken:

sudo sysdig -c spy_logs   

Bewaken van HTTP-serververzoeken

Als je een HTTP-server zoals Apache of Nginx op ons systeem hebt draaien, bekijk dan het logboek met verzoeken van de server met deze opdracht:

sudo sysdig -c httplog    
sudo sysdig -c httptop   [Print Top HTTP Requests] 

Toon inlogshells en interactieve gebruikersactiviteit

Met de onderstaande opdracht kunt u alle login-shell-ID's bekijken:

sudo sysdig -c list_login_shells

Last but not least kunt u de interactieve activiteit van systeemgebruikers als volgt weergeven:

sudo sysdig -c spy_users

Voor meer gebruiksinformatie en voorbeelden kunt u de sysdig- en csysdig-manpagina's lezen:

man sysdig 
man csysdig

Referentie: https://www.sysdig.org/

Bekijk ook deze handige Linux-tools voor prestatiemonitoring:

  1. BCC – Dynamische traceringstools voor Linux-prestatiemonitoring, netwerken en meer
  2. pyDash - Een webgebaseerde Linux-prestatiemonitoringtool
  3. Perf- Een prestatiebewakings- en analysetool voor Linux
  4. Collectl: een geavanceerde alles-in-één prestatiemonitoringtool voor Linux
  5. Netdata – Een realtime prestatiemonitoringtool voor Linux-systemen
Conclusie

Sysdig brengt functionaliteiten van talloze opdrachtregelprogramma's samen in één opmerkelijke interface, waardoor je diep in je Linux-systeemgebeurtenissen kunt graven om gegevens te verzamelen, op te slaan voor latere analyse, en het biedt ongelooflijke containerondersteuning.

Als u vragen heeft of uw mening over deze tool wilt delen, gebruikt u het onderstaande feedbackformulier.