Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 5 Próxima »

1. Análise de logs

A análise dos logs do PostgreSQL é uma habilidade fundamental para a equipe de TI, permitindo diagnosticar problemas de performance, segurança e estabilidade.

1.1 Localização e Confirmação da Configuração de Logs
A localização dos logs depende de um parâmetro crucial: logging_collector.

Por padrão o log fica na pasta padrão de instalação, no Windows onde foi configurado o diretório para a instalação, no Linux o diretório padrão é: /var/lib/pgsql/<versão>/data, onde dentro da pasta data possui uma com nome log ou pg_log, onde ficam armazenados os logs.

ConfiguraçãoDescriçãoLocalização de Logs
logging_collector = onO PostgreSQL gerencia seus próprios arquivos de log. (Configuração Comum em Pacotes de SO)Diretório log ou pg_log dentro do diretório de dados principal (PGDATA).
logging_collector = offO PostgreSQL envia logs para o daemon de log do Sistema Operacional (e.g., syslog ou journald).Logs do Sistema Operacional (Ex: /var/log/syslog ou journalctl -u postgresql).

Os logs são arquivos de texto simples, onde o seu nome segue o padrão: postgresql-AAAA-MM-DD_HHMMSS.log

1.2. Anatomia de uma Linha de Log
Uma linha de log é estruturada com informações cruciais para o diagnóstico.

ComponenteExemploFunção para o Analista
Timestamp2025-10-23 11:15:30.123 BRTIdentifica quando o evento ocorreu.
PID[23456]O ID do processo do backend do PostgreSQL que gerou a mensagem. Útil para correlacionar com pg_stat_activity.
NívelLOG: ou FATAL:A Severidade da mensagem (veja seção 2.3).
Mensagemconexão recebida: host=[::1] porta=5432Detalhe do evento ocorrido.


1.3. Níveis de Log (Severity)
O nível da mensagem é o primeiro indicador da sua urgência e impacto.

NívelImpactoAção de DBA/Analista
LOGInformações gerais.Monitorar para tendências ou spikes incomuns.
WARNINGAlgo inesperado, mas não fatal.Investigar a causa-raiz se for recorrente.
ERRORUm comando falhou, mas a sessão continua.Foco primário na resolução de erros de aplicação/SQL.
FATALA sessão (conexão) foi terminada.Alerta Imediato. Geralmente falha de autenticação ou banco de dados inexistente.
PANICO banco de dados inteiro foi encerrado.Intervenção Urgente. Indica corrupção ou falha catastrófica.


2. Principais Erros

Seguem alguns dos pricipais erros que podem ocorrer e quais tratativas:

Erro no LogCausa ProvávelAção de DBA/Analista
FATAL: password authentication failed for user "X"Credenciais incorretas (usuário ou senha).Ação: Verificar o pg_hba.conf e a senha do usuário X.
FATAL: database "Y" does not existNome do banco de dados incorreto na string de conexão.Ação: Corrigir a string de conexão ou criar o banco de dados Y.
ERROR: deadlock detectedDuas ou mais transações se bloquearam mutuamente.Ação: Identificar as consultas problemáticas (usando pg_locks e pg_stat_activity) e otimizar a ordem das operações (ou ROLLBACK de uma das transações).
could not write block X: No space left on deviceO disco rígido está cheio.Ação: Prioridade! Liberar espaço em disco (logs antigos, dumps, etc.) e investigar a causa do crescimento.
canceling statement due to statement timeoutUma consulta demorou mais do que o limite definido (statement_timeout).Ação: Otimizar a consulta lenta ou, se justificado, aumentar o valor de statement_timeout (com cautela).
ERROR: could not determine data type of parameter $NUm valor NULL foi passado para um parâmetro em uma query preparada ($n), e o PostgreSQL não conseguiu inferir o tipo de dado esperado para o resultado da expressão (comum em lógicas CASE ou funções).Aconselhar o time de desenvolvimento a fazer um cast explícito (ex: CAST(NULL AS INT)) antes de enviar o parâmetro nulo, forçando o tipo de dado que o banco deve esperar.
ERROR: column "X" does not existA aplicação tenta selecionar, inserir ou atualizar uma coluna ("X") que foi removida, renomeada ou nunca existiu na tabela. Indica dessincronização entre a versão do código da aplicação e o schema do banco de dados.Alerta de Pré-Deploy: Certificar-se de que todos os scripts de migração (ALTER TABLE) foram executados com sucesso antes de iniciar a aplicação.
ERROR: value too long for type character varying(80)Uma aplicação tentou inserir ou atualizar uma string de texto em uma coluna cujo tamanho é maior que o limite definido (ex: VARCHAR(80)).1. Se o novo tamanho for justificado, documentar e executar o comando para aumentar o limite do campo (ex: ALTER TABLE tabela ALTER COLUMN coluna TYPE character varying(255);). 2. Se não for, a equipe de Dev/QA deve corrigir a validação de entrada de dados da aplicação.
LOG: unexpected EOF on client connection with an open transactionA aplicação cliente ou o pool de conexões encerrou abruptamente a conexão enquanto uma transação ainda estava ativa no servidor. Não é erro do banco, mas da aplicação (ex: timeout da aplicação, perda de rede).Indica conexões mal gerenciadas. Se muito frequente, pode degradar a performance por forçar ROLLBACK no servidor.
FATAL: terminating connection due to administrator commandMensagem informativa: O servidor recebeu um sinal de encerramento (fast shutdown), provavelmente de um processo de manutenção ou rotina de deploy (ex: restart agendado).Útil para o DBA confirmar o horário exato dos restarts e correlacionar com a janela de manutenção.
LOG: incomplete startup packetUma conexão de rede foi iniciada, mas o cliente não enviou as informações necessárias para autenticação e/ou startup (falha rápida ou scanner de rede).Geralmente não é crítico, mas a frequência excessiva pode indicar tentativas de acesso não autorizadas.




  • Sem rótulos