Linux Advanced Tooling
Dit artikel is onderdeel van de blogpost serie over DrupalCon Amsterdam 2019.
Van 28 t/m 31 oktober vond DrupalCon Amsterdam 2019 plaats in de RAI. 1500 ontwikkelaars, project managers en gebruikers kwamen naar deze Drupal conferentie om te netwerken, kennis te delen en samen te werken aan Drupal. LimoenGroen was erbij en heeft veel waargenomen, bijgedragen en geleerd. Deze post van Quinten over Linux tooling is onderdeel van de blogpost serie over DrupalCon Amsterdam 2019.
De twee Linux tools perf_events en eBPF zijn geavanceerd in vergelijking met het veel gebruikte top, uptime of netstat. Dit is wat ze voor je kunnen betekenen.
1. perf_events
perf_events (vroeger bekend als Performance Counters) maakt sinds 2009 al deel uit van de Linux kernel. Deze tool biedt de mogelijkheid tot het vastleggen en analyseren van prestatiegerelateerde gebeurtenissen in de Linux kernel. Het is te gebruiken door de linux-tools package te installeren.
2. eBPF
The Extended Berkeley Packet Filter is van origine een 'gewone' packet filter. Echter kan deze tool voor veel toepassingen gebruikt worden: netwerk, firewalls, security, tracing en drivers. eBPF programma's hebben toegang tot in-kernel debug functies zoals kprobes. Hiermee kan dynamisch 'ingebroken' worden op elke kernel routine voor foutopsporing of prestatie-informatie.
De belangrijkste perf_events commands:
-
perf stat: geeft een lijst met het aantal system calls voor een gegeven commando
-
perf trace: inzicht in alle systeem aanroepen
-
perf record: inzicht in CPU-activiteit met optie om rapport te genereren
-
perf top: is vergelijkbaar met standaard top, maar dan realtime + gebeurtenissen op kernel niveau.
-
perf probe: monitoren van specifieke kernel functie aanroepen.
De belangrijkste eBPF commands:
-
tcptracer-bpfcc: inzicht in of volgen van tcp connecties.
-
bitesize-bpfcc: inzicht in hoe groot pre-process i/o operations zijn.
-
filetop: monitoren hoe en welke bestanden worden gelezen/geschreven.
-
zfsdist: inzicht in hoe lang bepaalde bestandssysteem bewerkingen hebben geduurd.
-
pidpersec: inzicht in hoe snel nieuwe processen worden gecreëerd.
Enkele 'spionage' functies:
-
statsnoop: inzicht in welke bestandsinformatie aangevraagd is en of de bestanden beschikbaar waren.
-
execsnoop: inzicht in nieuwe processen. bv inzicht in bepaald ongewenst gedrag: onbekende CPU gebruik of verborgen curl commands.
-
ttysnoop: meekijken met de shell sessie van een andere gebruiker
-
sslsniff: stelt in staat data in te zien van SSL_write() en SSL_read() functies. Helpt het onderscheppen van encrypted netwerkverkeer.
Omdat deze tools geavanceerder zijn dan de standaard tools wordt aangeraden eerst op non-production servers te testen. In sommige gevallen moeten bepaalde application opnieuw gebouwd worden, waaronder onderdelen van mysql.
Ondanks de snelheid waarmee de theorie werd geïntroduceerd, was het een erg interessante én leerzame talk. Je zou bijna een van z’n eigen gepresenteerde tools moeten gebruiken om te achterhalen wat hij precies allemaal verteld heeft ;). Voor mij was deze sessie een van de meest interessante sessies, omdat er iets nieuws is laten zien waarmee je relatief eenvoudig kunt leren wat een Linux server daadwerkelijk op de achtergrond doet.
Tot slot een interessante vraag vanuit het publiek: wat gebeurt er als iemand zijn tty wachtwoord intypt en ttysnoop wordt uitgevoerd (krijg je dan toegang tot het wachtwoord)? Omdat de presentator dit (nog) niet wist deed hij een live experiment. Gelukkig of helaas (afhankelijk van je doelstelling) kreeg hij met deze snoop tool niet het wachtwoord te zien.
Handige links
Bekijk de presentatie Linux Server Deep Dives van Amin Astaneh terug in de DrupalCon Amsterdam 2019 playlist.
Deze blogpost is geschreven door Quinten. LimoenGroen is Drupal ontwikkelaar van het eerste uur. Onze backend specialisten hebben veel verstand van Linux server beheer en hosting. Heb je een uitdaging op dit gebied of wil je weten hoe wij complexe digitale platformen realiseren die bijdragen aan business doelstellingen? Stuur ons dan een bericht ons dan een bericht en kom een keer langs. We laten je graag zien hoe wij hiermee omgaan.