make all

cd /usr/src/universe && make all

Monitorando o PostgreSQL com ptop

Escrito por Guedes em Abril 2, 2008

Monitorando o PostgreSQL com ptopEm um ambiente corporativo com aplicações de missão crítica, qualquer instante de instabilidade pode causar um grande prejuízo para seu cliente, e conseqüentemente para sua empresa. Neste universo, onde todas as camadas de infra-estrutura que dão suporte ao funcionamento de suas aplicações precisam estar altamente-disponíveis, faz-se necessário tomar medidas preventivas a fim de identificar, pro-ativamente, qualquer incidente que pode acarretar em um grande problema.

Neste cenário, o papel do DBA é muito importante, pois ele pode identificar, já na camada de Banco de Dados, possíveis candidatos a problemas futuros. No entanto, ele precisa de ferramentas de apoio para tal tarefa, a fim de tornar seu trabalho produtivo e pró-ativo e não reativo, como em muitas empresas.

Sendo assim, gostaria de falar hoje sobre o nosso amigo ptop, que é uma espécie de ‘top’ para o PostgreSQL. Inspirado no top dos sistemas UNIX-like, ele permite:

  • Visualizar a instrução SQL sendo executada por um processo;
  • Visualizar o plano de execução de um SELECT rodando no momento;
  • Visualizar os locks de um determinado processo;
  • Visualizar as estatísticas das tabelas de usuário;
  • Visualizar as estatísticas dos índices de usuário;

Obtendo e Instalando

A última versão estável do ptop é a 3.6.1 mas já existem versões beta disponíveis que podem ser baixadas e testadas. No nosso caso utilizaremos a última versão estável, fazendo o download e salvando em um diretório temporário, como por exemplo: /tmp.

Vamos supor que você deseja monitorar via ptop um ambiente de desenvolvimento com as seguintes características:

Nome do bando de dados: desenvolvimento
Porta: 5432
Usuário: monitor
Senha: m0n1t0r

(Para esse exemplo foi criado um usuário monitor no PostgreSQL, sem qualquer privilégio a mais, apenas de conexão ao banco)

Salve o arquivo baixado no servidor que deseja monitorar e siga os passos:

# Descompacte o arquivo ...
tar zxvf ptop-3.6.1.tar.gz

# Acesse o diretorio criado
cd ptop-3.6.1/

# Leia os arquivos README e INSTALL
# (sim eles não têm esses nomes à toa... ":D )
less README
less INSTALL

# Configure e compile o codigo
./configure && make

# Após compilar um arquivo executável sera criado
ls -la ptop
-rwxr-xr-x 1 guedes guedes 140282 2008-04-01 20:48 ptop

# Execute-o com a opção --help
./ptop --help
./ptop: invalid option -- -
Top version 3.6.1
Usage: ptop [-ISTWbcinqu] [-x x] [-s x] [-o field] [-z username]
              [-p PORT] [-U USER] [-d DBNAME] [-h HOSTNAME] [number]

Visão geral do ptop

Para executar o ptop use:

./ptop -U monitor -d desenvolvimento -h localhost -W

Será solicitada a senha do usuário ‘monitor‘, informe-a corretamente. A tela que surge é semelhante a esta:

Monitorando o PostgreSQL com ptop

Com o ptop sendo executado, é possível ver uma série de informações úteis sobre o servidor e os processos do PostgreSQL. A semelhança do mesmo com o utilitário top do UNIX é visível e não é mera coincidência…

Principais comandos do ptop e suas telas

Obtendo ajuda no ptop: pressione ‘?’ ou ‘h’

Monitorando o PostgreSQL com ptop

Obtendo o plano de execução de um processo: pressione ‘E’ (maiúsculo) e digite o número de um determinado processo (PID) para visualizar o plano de execução do mesmo.

Monitorando o PostgreSQL com ptop

Obtendo as estatísticas das tabelas em uso: pressione ‘R’ (maiúsculo)

Monitorando o PostgreSQL com ptop

Obtendo as estatísticas dos índices em uso: pressione ‘X’ (maiúsculo)

Monitorando o PostgreSQL com ptop

Visualizando os locks de um determinado processo: pressione ‘L’ (maiúsculo) e digite o número do processo (PID) que deseja visualizar

Monitorando o PostgreSQL com ptop

DESAFIO 1: tente alterar a ordem de classificação dos processos (por cpu, tempo de execução ou utilização de recursos, por exemplo).
DESAFIO 2: tente alterar o número de processos a serem mostrados.

Bom, é isso! “:D

Enviado em postgresql | Tagged: , , , , , | 2 Comentários »