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 |
log_statement_sample_rate | – | A porcentagem de declarações que excedem o tempo especificado em |
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.
Defina o parâmetro
log_statement
comoall
. O exemplo a seguir mostra a informação gravada no arquivopostgresql.log
com 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 ----------------------
Defina o parâmetro
log_min_duration_statement
. O exemplo a seguir mostra a informação gravada no arquivopostgresql.log
quando o parâmetro estiver definido como1
.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
(eUNENCRYPTED
) das declaraçõesCREATE
eALTER
. Para ter mais informações, consulte CREATE USERna 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.