Monitoreando Servidor Postgresql
Monitoreando Servidor Postgresql
Monitoreando Servidor Postgresql
Consideraciones Preliminares
Antes de comenzar debemos tener en cuenta a
que plataformas est destinado este White Paper:
Objetivos de la monitorizacin
Los fines principales de monitorear un servidor
de bases de datos son:
SIU
PGINA 1 DE 11
Consorcio SIU
ps
lsof
free
iostat
mpstat
sar (si lo tiene)
htop o top
vmstat
/etc/init.d/postgres status o service postgres
status (de acuerdo a la distribucin)
netstat
pgrep
awk y perl (bsico)
Tuberas y redirecciones.
Permisos de usuarios (muchas veces si el
usuario no tiene permisos, no podr ver los
procesos)
Comandos
Podemos empezar por verificar que el servidor
este corriendo actualmente:
Herramientas Previas
Existen una serie de comandos de los que el
usuario debe estar familiarizado con su salida:
SIU
Consorcio SIU
# ps -A | egrep '(postgres|postmaster)' | wc -l |
xargs echo `date +%Y%m%d%H%M ` >> /stat
SIU
Consorcio SIU
en la siguiente imagen:
SIU
PGINA 4 DE 11
Consorcio SIU
PGINA 5 DE 11
Consorcio SIU
Consorcio SIU
pg_stat_*
pg_statio*
SELECT SUM(n_tup_ins),
SUM(n_tup_upd), SUM(n_tup_del)
FROM pg_stat_all_tables;
Sumarizacin de los planes:
SELECT SUM(seq_scan),
SUM(seq_tup_read), SUM(idx_scan),
SUM(idx_tup_fetch)
FROM pg_Stat_all_tables;
Visualizar bloqueos:
SELECT mode, count(mode)
FROM pg_locks
GROUP BY mode ORDER BY mode;
Sumarizacin de I/O en bloques (bloques son de
8k), si desea saber en cantidad de Kb, multiplique por
8:
SELECT SUM(heap_blks_read) * 8
FROM pg_statio_user_tables;
SELECT SUM(idx_blks_read)
FROM pg_statio_user_tables;
SELECT SUM(toast_blks_read)
FROM pg_statio_user_tables;
SELECT SUM(tidx_blks_read)
FROM pg_statio_user_tables;
Contabilizar conexiones:
select pg_database_size(name);
select pg_tablespace_size(name);
Consorcio SIU
Consorcio SIU
) xx JOIN pg_stat_all_tables xp
ON xx.nombre = xp.relname
) k,
(SELECT count(*) as locks from pg_locks) c,
(SELECT count(*) as sess
FROM pg_stat_activity
WHERE current_query !~ '.*<IDLE>*') d
WHERE datname = '<nuestra_base>';
most_common_freqs,
histogram_bounds, correlation
FROM pg_Stats
WHERE tablename !~ '^(pg|sql)';
Arroja:
Consorcio SIU
Archivado de Logs
Los archivos de logs suelen ser molestos porque
consumen ms I/O a medida que necesitamos ms
nivel de informacin.
SIU
habilitarlo
en
el
si
cual
log_truncate_on_rotation:
esto
borrar
el
contenido de un log cuando sucede la rotacin. No es
recomendable para ambientes de produccin.
log_rotation_age y log_rotation_size: indican
cada cuanto se deber realizar la rotacin de los logs.
log_min_messages: esto indica el nivel de
logueo.
log_line_prefix: esta variable indica como va a
estar formateada la salida del log. PgFouine requiere
que establezcamos esta variable para analizar el log.
log_statement: esto indica que tipo de sentencias
irn al log (ddl, mod, all).
Tal como dijimos antes, la herramienta ms
popular de revisin de logs es PgFouine. Est escrito
en PHP, por lo que requiere la instalacin del paquete
php5-cli (Debian y derivados).
La desventaja que tiene PgFouine es que
requiere tocar la salida de los logs, por lo que al
principio puede parecer incomodo.
PGINA 10 DE 11
Consorcio SIU
[1]
http://www.cyberciti.biz/files/linuxkernel/Documentation/filesystems/proc.txt
[2]
http://collectd.org/documentation/manpages/collectd.conf.5.shtml#pl
ugin_postgresql
Autor:
Emanuel Calvo Franco (SIU-Bs. As.)
Agradecimientos:
Al aporte incondicional de Alvaro Herrera
(PostgreSQL Core Developer - Chile), Nicols
Dominguez Florit (SIU-Tandil), Sebastin Natarelli
(SIU-Bs. As.).
Al aporte indirecto de los miembros de la lista
[email protected].
SIU
PGINA 11 DE 11