Un'utility interessante che mi sono sempre riproposto di sperimentare è pgCluu.
Pgcluu
 viene distribuito con due eseguibili: pgcluu e pgcluu_collectd. Il 
secondo è la parte che si preoccupa di collezionare le statistiche e di 
archiviarle su file system, in maniera simile a quanto fatto da altri 
tool di monitoring (ad esempio flow-tools). Il programma pgcluu è invece
 il responsabile di fare il reporting delle statistiche.
In
 default la collezione delle statistiche avviene su due fronti: il 
cluster e il sistema, mediante sar. E' comunque possibile disabilitare 
l'uso di sar, e in particolare lo switch -h (che svolge la stessa 
funzione dell'omonimo di psql) disabilita l'uso di sar.
Da notare che nonostante gli eseguibili siano due, la pagina di manuale è una sola ed è riferita a pgcluu(1).
% export STAT_DIR="/tmp/pgcluu_stats_collection";
% mkdir $STAT_DIR && pgcluu_collectd -d demodb -h localhost -M 200MB -D -i 10 -U luca --stat-type all $STAT_DIR
LOG: Detach from terminal with pid: 4442
Si
 è creata una directory dove verranno collezionate le statistiche e si è
 lanciato il programma di raccolta dati. Le opzioni usate fanno si che 
il processo vada in background (-D), si colleghi al database "demodb" 
(-d) con utente "luca" (-U) sulla macchina locale (-h). Per evitare 
l'esecuzione incontrollata si fissa una soglia di raccolta dati con 
tetto massimo di 200 MB (-M), si abilita la raccolta di tutte le 
statistiche (--stat-type) presenti in PostgreSQL (ossia si legge 
pg_stats_all) e si vuole che le statistiche siano collezionate ogni 10 
secondi (-i).
Attenzione 
all'opzione -D che può risultare subdola: se il database richiede una 
password per l'utente il prompt per la password non viene richiesta e 
pgcluu_collectd termina subito. Occorre quindi utilizzar eil file 
~/.pgpass per permettere la connessione automatica (come per psql - in 
effetti si usa psql per collezionare i dati).
Nella
 directory STAT_DIR si troverà un file testuale "sysinfo.txt" che 
contiene un dump di svariate informazioni di sistema (spazio dischi, 
dmesg, sysctl, ecc.). Altri file comprendono le statistiche di sistema 
in formato CSV:
Ora generando un po' di carico sul database sotto analisi:
demodb=# CREATE TABLE baz(value int);
demodb=# insert into baz select generate_series(1, 1000);
demodb=# insert into baz select generate_series(1, 1000000);
demodb=# insert into baz select generate_series(1, 1000000);
A questo punto si può generare il report:
% export STAT_OUTPUT_DIR=/tmp/pgcluu_stat_output
% mkdir $STAT_OUTPUT_DIR && pgcluu -o $STAT_OUTPUT_DIR -v -S $STAT_DIR
...
DEBUG: Inserting menu into all html files.
E
 il gioco è fatto: puntando il proprio browser alla directory di output 
si avrà accesso alle statistiche collezionate in un modo un po' piu' 
user-friendly.
Da notare 
che il manuale di pgcluu indica di terminare esplicitamente il demone di
 raccolta statistiche prima di generare il report, ma io ho provato a 
farlo anche senza fermarlo e tutto pare funzionare ugualmente. Unica 
pecca: non si possono generare i report sovrascrivendoli di volta in 
volta, perché pgcluu si rifiuta. Ne consegue che per eseguire il tutto 
in formato schedulato occorre prevedere lo svuotamento della directory 
di output o almeno un qualche modo di rotazione.
Ah, ultima cosa:
% file `which pgcluu`
/usr/local/bin/pgcluu: Perl script, UTF-8 Unicode text executable
 
 
Nessun commento:
Posta un commento