Ativar o registro em log de consultas para sua instância de banco de dados do RDS para PostgreSQL - Amazon Relational Database Service

Ativar o registro em log de consultas para sua instância de banco de dados do RDS para PostgreSQL

Você pode coletar informações mais detalhadas sobre suas atividades de banco de dados, inclusive consultas, consultas à espera de bloqueios, pontos de verificação e muitos outros detalhes definindo alguns dos parâmetros listados na tabela a seguir. Este tópico se concentra no registro em log de consultas.

Parâmetro Padrão Descrição

log_connections

Registra cada conexão bem-sucedida.

log_disconnections

Registra o final de cada sessão e sua duração.

log_checkpoints

1

Registra cada verificação.

log_lock_waits

Registra esperas de bloqueio longas. Por padrão, esse parâmetro não está definido.

log_min_duration_sample

(ms) Define o tempo de execução mínimo acima do qual uma amostra de declarações será registrada. O tamanho da amostra é definido usando o parâmetro log_statement_sample_rate.

log_min_duration_statement

Todas as instruções SQL executadas pelo menos por um período especificado ou mais é registrada. Por padrão, esse parâmetro não está definido. Ativar esse parâmetro pode ajudar a encontrar consultas não otimizadas.

log_statement

Define o tipo de instruções registradas. Por padrão, esse parâmetro não está definido, mas você pode alterá-lo para all, ddl ou mod para especificar os tipos de declaração SQL que você deseja registrar. Se você especificar algo diferente de none para esse parâmetro, você também deve tomar medidas adicionais para evitar a exposição de senhas nos arquivos de log. Para ter mais informações, consulte Reduzir o risco de exposição de senhas ao usar o registro em log de consultas.

log_statement_sample_rate

A porcentagem de declarações que excedem o tempo especificado em log_min_duration_sample para serem registradas, expressa como um valor de ponto flutuante entre 0,0 e 1,0.

log_statement_stats

Grava estatísticas de performance cumulativas no log do servidor.

Usar o registro em log para encontrar consultas de baixa performance

Você pode registrar consultas e declarações SQL para ajudar a encontrar consultas com a performance lenta. Você ativa esse recurso modificando as configurações dos parâmetros log_statement e log_min_duration conforme descrito nesta seção. Antes de ativar o registro em log de consultas para sua instância de banco de dados do RDS para PostgreSQL, você deve estar ciente da possível exposição de senhas nos logs e de como reduzir os riscos. Para ter mais informações, consulte Reduzir o risco de exposição de senhas ao usar o registro em log de consultas.

A seguir, você encontrará informações de referência sobre os parâmetros log_statement e log_min_duration.

log_statement

Esse parâmetro especifica o tipo de declarações SQL que devem ser enviadas ao log. O valor padrão é none. Se você alterar esse parâmetro para all, ddl ou mod, realize algumas das ações recomendadas para reduzir o risco de expor senhas nos logs. Para ter mais informações, consulte Reduzir o risco de exposição de senhas ao usar o registro em log de consultas.

tudo

Registra todas as declarações. Essa configuração é recomendada para fins de depuração.

ddl

Registra todas as declarações de linguagem de definição de dados (DDL), como CREATE, ALTER, DROP etc.

mod

Registra todas as declarações DDL e declarações de linguagem de manipulação de dados (INSERT, UPDATE e DELETE) que modificam os dados.

nenhuma

Nenhuma declaração SQL é registrada. Recomendamos essa configuração para evitar o risco de expor senhas nos logs.

log_min_duration_statement

Todas as instruções SQL executadas pelo menos por um período especificado ou mais é registrada. Por padrão, esse parâmetro não está definido. Ativar esse parâmetro pode ajudar a encontrar consultas não otimizadas.

–1–2147483647

O número de milissegundos (ms) de tempo de execução durante o qual uma declaração é registrada.

Como configurar o registro em log de consultas

Essas etapas pressupõem que o A instância de banco de dados do RDS para PostgreSQL usa um grupo de parâmetros de banco de dados personalizado.

  1. Defina o parâmetro log_statement como all. O exemplo a seguir mostra a informação gravada no arquivo postgresql.logcom essa configuração de parâmetro.

    2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: statement: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: QUERY STATISTICS 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:DETAIL: ! system usage stats: ! 0.017355 s user, 0.000000 s system, 0.168593 s elapsed ! [0.025146 s user, 0.000000 s system total] ! 36644 kB max resident size ! 0/8 [0/8] filesystem blocks in/out ! 0/733 [0/1364] page faults/reclaims, 0 [0] swaps ! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent ! 19/0 [27/0] voluntary/involuntary context switches 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:ERROR: syntax error at or near "ORDER" at character 1 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: ORDER BY s.confidence DESC; ----------------------- END OF LOG ----------------------
  2. Defina o parâmetro log_min_duration_statement. O exemplo a seguir mostra a informação gravada no arquivo postgresql.log quando o parâmetro estiver definido como 1.

    As consultas que excedem a duração especificada no parâmetro log_min_duration_statement são registradas. Por exemplo: Você pode visualizar o arquivo de log de sua instância de banco de dados do RDS para PostgreSQL no console do Amazon RDS.

    2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: statement: DROP table comments; 2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: duration: 167.754 ms 2022-10-05 19:08:07 UTC::@:[355]:LOG: checkpoint starting: time 2022-10-05 19:08:08 UTC::@:[355]:LOG: checkpoint complete: wrote 11 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.013 s, sync=0.006 s, total=1.033 s; sync files=8, longest=0.004 s, average=0.001 s; distance=131028 kB, estimate=131028 kB ----------------------- END OF LOG ----------------------

Reduzir o risco de exposição de senhas ao usar o registro em log de consultas

Recomendamos manter log_statement definido como none para evitar a exposição de senhas. Se você definir log_statement como all, ddl oumod, recomendamos que você siga uma ou mais destas etapas.

  • Para o cliente, criptografe informações confidenciais. Para ter mais informações consulte Encryption Options (Opções de criptografia) na documentação do PostgreSQL. Use as opções ENCRYPTED (e UNENCRYPTED) das declarações CREATE e ALTER. Para ter mais informações, consulte CREATE USER na documentação do PostgreSQL.

  • Para instância de banco de dados do RDS para PostgreSQL, configure e use a extensão de auditoria do PostgreSQL (pgAudit). Essa extensão remove informações confidenciais das declarações CREATE e ALTER enviadas ao log. Para ter mais informações, consulte Usar pgAudit para registrar a atividade do banco de dados.

  • Restringir o acesso aos logs CloudWatch.

  • Use mecanismos de autenticação mais fortes, como IAM.