PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Análise de log do PostgreSQL com pgBadger


Às vezes, os logs são as últimas coisas verificadas quando as coisas estão dando errado, mas geralmente são as primeiras coisas que gritam por ajuda quando algo acontece. Procurar problemas manualmente nos logs ajuda, mas por que não usar analisadores de log para gerar relatórios automaticamente para fornecer informações sobre o banco de dados antes que algo dê errado?

O analisador de log do PostgreSQL “pgBadger” é um programa de código aberto de “relatório de análise de log do PostgreSQL rápido” escrito em Perl que pega a saída do log de uma instância do PostgreSQL em execução e a processa em um arquivo HTML. O relatório que ele gera mostra todas as informações encontradas em um formato de relatório agradável e fácil de ler. Esses relatórios podem ajudar a esclarecer erros que ocorrem no sistema, comportamento de pontos de verificação, comportamento de vácuo, tendências e outras informações básicas, mas cruciais para um sistema PostgreSQL.

Configuração de log do PostgreSQL


Para usar o pgBadger efetivamente, o login no PostgreSQL deve ser configurado para fornecer ao pgBadger o máximo de informações possível. Um punhado de opções pode ser ajustado para permitir que o sistema de banco de dados registre informações úteis para o pgBadger gerar relatórios úteis. A documentação completa para a configuração do PostgreSQL pode ser encontrada na página pgBadger do github, mas algumas informações básicas estão abaixo.

Quando executado, o pgBadger processará os logs do PostgreSQL, sejam eles syslog, stderr ou csvlog, desde que as próprias linhas de log tenham informações suficientes no prefixo.

Exemplos de valores log_line_prefix:

Se log_destination =‘syslog’
log_line_prefix = 'user=%u,db=%d,app=%aclient=%h '

Se log_destination =‘stderr’
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

Configurações básicas para definir em postgresql.conf:
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default
log_statement = off
lc_messages='C'

Log_min_duration_statement = (see below)

Uma das partes mais úteis dos relatórios do pgBadger é o relatório de consulta lenta, que se baseia nas consultas de log do banco de dados que excedem o valor log_min_duration_statement. Esse valor é representado em milissegundos, e qualquer consulta que for concluída com um tempo maior que ela será registrada e, em seguida, relatórios gerados pelo pgBadger. Isso é útil para localizar e analisar consultas que demoram mais do que o desejado.

Embora definir esse valor como 0 para registrar todas as consultas forneceria mais informações, isso pode facilmente acabar gerando arquivos de log muito grandes e afetar o desempenho do próprio banco de dados devido à gravação constante de log. Um valor mais sensato não fornecerá contagens de consultas perfeitas, mas ainda focará relatórios em consultas de execução lenta em geral. Se as consultas que executam alguns minutos são consideradas "lentas", definir o valor para um minuto funcionaria bem. Se as consultas executadas por mais de alguns segundos forem consideradas "lentas", definir o valor para algo como 5 segundos também funcionará bem.

Gerando registros


A geração de logs é feita através da linha de comando usando o executável pgBadger. Há várias opções, mas a configuração mais básica é fornecer o prefixo da linha de log que o banco de dados usa, o arquivo de log e o arquivo html de saída.
./pgbadger --prefix '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h ' postgresql.log -o postgresql.html
[========================>] Parsed 560607407 bytes of 560607407 (100.00%), queries: 2929645, events: 5

Para mais informações sobre as diferentes opções do pgBadger, consulte a documentação ou execute o binário com o parâmetro de entrada --help.

Geração de registro avançada


Como a geração de relatórios em logs é uma execução simples de linha de comando, scripts e programas personalizados podem ser configurados para gerar relatórios automaticamente, armazenados em servidores da Web, enviados por e-mail ou arquivados em armazenamento de longo prazo. Explore as diferentes opções disponíveis para geração de relatórios e seja criativo com sistemas automatizados para geração e entrega de relatórios.

Revisando registros


Revisar os logs é onde entra a diversão. O relatório que foi gerado agora pode ser aberto em um navegador da Web e revisado.

Estatísticas globais


A seção de estatísticas globais contém algumas informações básicas encontradas no log do PostgreSQL, incluindo:
  • Consultas:o número de consultas encontradas, duração, número de consultas normalizadas etc.
  • Eventos:número total de eventos, eventos normalizados etc.
  • Vacuums:o número total de aspirações automáticas e análises automáticas encontradas.
  • Arquivos temporários:o número total de arquivos temporários encontrados, tamanho máximo e tamanho médio.
  • Sessão:número total de sessões, horário de pico das sessões, duração total das sessões, duração média das sessões, média de consultas encontradas por sessão, duração média das consultas por sessão.
  • Conexões:número total de conexões, pico de conexões e número total de bancos de dados conectados.

Observação: Os resultados que envolvem consultas, contagens de consultas ou duração da consulta serão imprecisos com valores de log_min_duration_statement maiores que 0.

Exemplo:
pgBadger Exemplo de estatísticas globais

Conexões


A página de conexões mostra gráficos detalhando as informações de conexão encontradas nos logs. Enquanto log_connections e log_disconnections estiverem ativados, os valores aqui serão precisos. Os gráficos disponíveis são:
  • Conexões estabelecidas:mostrando o número máximo, mínimo e médio de conexões ao longo do tempo.
  • Conexões por banco de dados:um gráfico de pizza e uma visualização de tabela mostrando o número de conexões para cada banco de dados encontrado.
  • Conexões por usuário:um gráfico de pizza e uma visualização de tabela mostrando o número de conexões encontradas para cada usuário.
  • Conexões por host:um gráfico de pizza e visualização de tabela mostrando o número de conexões para cada host de origem encontrado.

Exemplo:
pgBadger Connections exemplo de gráfico de pizza

Sessões


A página de sessões é semelhante à página de conexões, mas contém mais algumas informações referentes às próprias sessões.
  • Sessões simultâneas:um gráfico de linhas que mostra o número de sessões ao longo do tempo.
  • Histograma de tempos de sessão:um gráfico de barras e uma tabela mostrando os tempos de sessão.
  • Sessões por banco de dados:um gráfico de pizza e uma visualização de tabela mostrando o número de sessões para cada banco de dados encontrado.
  • Sessões por usuário:um gráfico de pizza e uma visualização de tabela mostrando o número de sessões encontradas para cada usuário.
  • Sessões por host:um gráfico de pizza e uma visualização de tabela mostrando o número de sessões para cada host de origem encontrado.
  • Sessões por aplicativo:o número de sessões conectadas por aplicativo.
pgBadger Sessões por gráfico de pizza do banco de dados

Pontos de verificação


A página de pontos de verificação fornece informações sobre o processo do ponto de verificação, incluindo o número de buffers gravados, arquivos WAL e outras informações gerais.
  • Buffers de ponto de verificação:um gráfico de linhas que mostra a quantidade de buffers gravados pelo processo de ponto de verificação ao longo do tempo.
  • Arquivos WAL de checkpoints:um gráfico de linhas que mostra o número de arquivos WAL adicionados, removidos ou reciclados pelo checkpointer ao longo do tempo.
  • Distância do ponto de verificação:um gráfico de linhas que mostra a distância e a estimativa dos pontos de verificação.
  • Atividade de pontos de verificação:uma tabela mostrando os quatro pontos de dados anteriores em forma de tabela.
pgBadger Checkpoints Buffers chartBaixe o whitepaper hoje PostgreSQL Management &Automation with ClusterControlSaiba mais sobre o que você precisa saber para implantar, monitorar , gerencie e dimensione o PostgreSQLBaixe o whitepaper

Arquivos temporários


A página de arquivos temporários contém informações para arquivos temporários, que são criados quando uma consulta fica sem work_mem e precisa usar o disco para classificar ou filtrar resultados antes de retorná-los aos aplicativos. Esses arquivos são excluídos automaticamente quando a consulta é concluída, e conhecer a atividade do arquivo temporário ajuda o administrador a ajustar o parâmetro work_mem.
  • Tamanho dos arquivos temporários:um gráfico de linhas que mostra o espaço usado pelos arquivos temporários ao longo do tempo.
  • Número de arquivos temporários:um gráfico de linhas que mostra o número de arquivos temporários usados ​​ao longo do tempo.
  • Atividade de arquivos temporários:uma tabela mostrando as informações fornecidas nos gráficos anteriores, mas em forma de tabela.
pgBadger Tamanho de gráfico de arquivos temporários

Aspiradores


Esta página mostra informações sobre VACUUMs e ANALYZEs que ocorrem no banco de dados. Essas informações são úteis para saber se o processo de autovacuum está ou não fazendo seu trabalho bem o suficiente, ou se está atolado e precisa de mais recursos.
  • Distribuição de vácuos/análises:um gráfico de linhas mostrando VACUUMs e ANALYZEs ao longo do tempo, bem como informações sobre a tabela que consumiu mais poder de processamento da CPU.
  • Análises por tabela:um gráfico de pizza e uma tabela mostrando as tabelas com mais análises, sugerindo que essas tabelas estão em alto estado de mudança.
  • Vacuums per table:um gráfico de pizza e uma tabela mostrando as tabelas com mais vácuos, sugerindo que essas tabelas estão em um alto estado de mudança.
  • Tuplas removidas por tabela:um gráfico de pizza e uma tabela mostrando o número de tuplas e páginas removidas em processos de vácuo para tabelas.
  • Páginas removidas por tabela:um gráfico de pizza e uma tabela mostrando o número de páginas e tuplas removidas em processos de vácuo para tabelas.
  • Atividade de Autovacuum:uma tabela mostrando os VACUUMs e ANALYZEs ao longo do tempo por hora.
pgBadger Vacuums / Analysis Distribution gráfico

Bloqueios


A página de bloqueios contém apenas alguns dados, mas é uma informação útil para saber quando há processos que podem estar retendo outras consultas por longos períodos de tempo.
  • Bloqueios por tipos
  • Consultas em espera mais frequentes:uma lista de consultas em espera, classificadas da mais frequente para a menos frequente.
  • Consultas que mais esperaram:uma lista de consultas e quanto tempo elas esperaram, ordenadas da mais longa para a mais curta.
pgBadger Consultas que mais esperaram relatório

Consultas


A página Consultas às vezes é a mais interessante, pois mostra informações sobre os tipos de consultas provenientes dos aplicativos e usuários. Essas informações podem ajudar a entender melhor que tipo de rotatividade de banco de dados um aplicativo ou usuário coloca no sistema de banco de dados, o que pode ajudar em ajustes futuros. Como antes, a precisão desses números depende do valor de log_min_duration_statement, pois qualquer valor acima de 0 não registrará consultas.
  • Consultas por tipo:um gráfico de pizza e uma tabela mostrando o número de diferentes tipos de consultas, como INSERT, UPDATE, DELETE, SELECT etc.
  • Consultas por banco de dados:um gráfico de pizza e uma tabela mostrando o número de consultas encontradas por banco de dados.
  • Consultas por aplicativo:um gráfico de pizza e uma tabela mostrando o número de consultas encontradas por aplicativo.
  • Número de consultas canceladas:informações sobre todas as consultas que foram canceladas.
pgBadger Consultas por tipo de gráfico de pizza

Principal


A página superior contém informações sobre tempos de consulta, consultas mais lentas em geral, frequência de consulta e muito mais. É provável que consultas problemáticas específicas sejam encontradas aqui:
  • Histograma de tempos de consulta:um histograma que representa quantas consultas se enquadram em cada agrupamento de tempos.
  • Consultas individuais mais lentas:uma lista das consultas mais lentas encontradas, ordenadas da mais longa para a mais curta.
  • Consultas demoradas:uma lista de consultas normalizadas e sua duração total, ordenadas do maior para o menor tempo consumido.
  • Consultas mais frequentes:uma lista de consultas normalizadas e quantas vezes elas foram executadas, ordenadas do mais para o menos.
  • Consultas mais lentas normalizadas:uma lista de consultas normalizadas e sua duração média, ordenadas da mais longa para a mais curta.
pgBadger Relatório de consultas demoradas

Eventos


A página final são os eventos, que contêm informações sobre os próprios logs e qualquer coisa que não seja uma consulta, vácuo ou ponto de verificação.
  • Níveis de log:os diferentes níveis de logs aparecem por linha, como CONTEXTO, LOG, STATEMENT, HINTs, WARNINGs e outros.
  • Distribuição de eventos:um gráfico de linha de eventos ao longo do tempo para eventos de PÂNICO, FATAL, ERRO e AVISO.
  • Erros/Eventos mais frequentes:uma lista de EVENTOS e sua frequência, ordenados do mais comum para o menos.
pgBadger Log Levels gráfico de pizza

Contribuir


O projeto pgBadger é gratuito e existe sob a licença PostgreSQL. Atualmente, está bem mantido e atualizado para funcionar com versões mais recentes do PostgreSQL à medida que é desenvolvido. Tem ideias para melhorar o pgBadger? Fork o projeto e mostre à comunidade suas melhorias.

Para enviar bugs, visite a página de problemas do github.