pt-stalk è progettato proprio per questo scopo. Campiona l'elenco dei processi ogni secondo (o in qualsiasi momento tu specifichi), quindi quando viene raggiunta una soglia (Threads_running è l'impostazione predefinita ed è ciò che desideri in questo caso), raccoglie un intero gruppo di dati, tra cui attività del disco, tcpdumps, multiple esempi dell'elenco dei processi, variabili di stato del server, stato mutex/innodb e molto altro.
Ecco come avviarlo:
pt-stalk --daemonize --dest /var/lib/pt-stalk --collect-tcpdump --threshold 50 --cycles 1 --disk-pct-free 20 --retention-time 3 -- --defaults-file=/etc/percona-toolkit/pt-stalk_my.cnf
Il comando precedente analizzerà Threads_running (--threshold
; impostalo sul tuo valore per n ), ogni secondo (impostazione predefinita di --interval
) e avvia una raccolta di dati se Threads_running è maggiore di 50 per 1 campione consecutivo (--cycles
). 3 giorni (--retention-time
) dei campioni verranno conservati e la raccolta non si attiverà se meno del 20% del disco è libero (--disk-pct-free
). Ad ogni raccolta, verrà eseguito un tcpdump in formato pccap (--collect-tcpdump
) che può essere analizzato con gli strumenti tcpdump convenzionali o con una serie di altri strumenti Percona Toolkit, tra cui pt-query-digest
e pt-tcp-model
. Ci sarà un riposo di 5 minuti tra i campioni (impostazione predefinita di --sleep
) al fine di evitare di fare il DoS da soli. Il processo verrà demonizzato (--daemonize
). I parametri dopo --
verrà passato a tutti i comandi mysql/mysqladmin, quindi è un buon posto per impostare cose come --defaults-file
dove puoi memorizzare le tue credenziali di accesso lontano da occhi indiscreti.