Como uso o Amazon RDS para ativar o log de consultas para o PostgreSQL?

6 minuto de leitura
0

Quero ativar o registro em log de consultas do meu Amazon Relational Database Service (Amazon RDS) para instâncias de banco de dados PostgreSQL.

Breve descrição

Para ativar o log de consultas no PostgreSQL, modifique os seguintes parâmetros associados à instância de banco de dados para um grupo de parâmetros personalizado:

Quando você modifica os parâmetros de log, o volume da instância de banco de dados pode exigir mais espaço. Se o armazenamento do volume estiver cheio, a instância de banco de dados não estará disponível. É uma prática recomendada modificar o parâmetro rds.log_retention_period para limpar logs desnecessários. Também é uma boa prática usar a métrica FreeStorageSpace do Amazon CloudWatch para monitorar continuamente seu consumo de armazenamento. Quando vir que o espaço de armazenamento está quase cheio, você poderá aumentar o espaço de armazenamento para que a instância de banco de dados esteja sempre disponível.

Resolução

Dependendo das consultas que você deseja registrar em log, ative log_statement ou log_min_duration_statement. Você não precisa modificar os dois parâmetros para ativar o log.

Modifique log_min_duration_statement para definir um limite em milissegundos. Isso permite que você registre em log todas as consultas que demoram mais do que o valor do parâmetro definido. Por exemplo, suponha que você defina o valor de log_min_duration_statement como 500. Quando isso acontece, o Amazon RDS registra em log todas as consultas que levam mais de meio segundo para serem concluídas. Se você definir o valor desse parâmetro como 2000, o Amazon RDS registrará em log todas as consultas que levarem mais de dois segundos para serem concluídas. Se você definir o valor do parâmetro como -1, o parâmetro será desativado. O Amazon RDS não registra em log nenhuma consulta com base no tempo de conclusão. Se você definir o valor do parâmetro como 0, o Amazon RDS registrará em log todas as consultas.

Observação: o parâmetro log_min_duration_statement não depende nem interfere no parâmetro log_statement.

Modifique log_statement para controlar as instruções SQL que são registradas em log. O valor padrão é none. Você pode modificar os seguintes valores para esse parâmetro:

  • ddl registra em log todas as instruções da linguagem de definição de dados (DDL), como CREATE, ALTER e DROP.
  • mod registra em log todas as instruções DDL e de linguagem de modificação de dados (DML), como INSERT, UPDATE e DELETE.
  • all registra em log todas as consultas (independentemente do tempo de execução).

Observação: independentemente do valor definido para log_statement e log_min_duration_statement, as consultas são gravadas no log uma vez.

Ativar o registro em log de consultas no PostgreSQL

Conclua as etapas a seguir para ativar o registro em log de consultas no PostgreSQL:

Observação: o exemplo de modificação de parâmetros a seguir registra em log todas as consultas que demoram mais de um segundo, assim como todas as alterações do esquema.

  1. Abra o console do Amazon RDS e escolha Bancos de dados no painel de navegação.
  2. Escolha a instância de banco de dados para a qual você deseja registrar em log as consultas.
  3. Escolha a visualização Configuração para ver os detalhes da instância de banco de dados e ver o grupo de parâmetros associado à instância de banco de dados.
    Observação: quando você cria uma instância de banco de dados, essa instância é associada ao grupo de parâmetros de banco de dados padrão. Como você não pode modificar esse grupo, crie um grupo de parâmetros personalizado para modificar o grupo de parâmetros. Ao alterar o grupo de parâmetros da instância de banco de dados (de padrão para um grupo personalizado), você deve reinicializar a instância de banco de dados.
  4. Escolha Grupo de parâmetros no painel Configuração da instância e, em seguida, escolha o grupo de parâmetros que você deseja modificar.
  5. Escolha Editar parâmetro.
  6. No campo Parâmetros do filtro, selecione o parâmetro que você deseja alterar. Por exemplo:
    Insira log_statement e altere o valor para ddl.
    Insira log_min_duration_statement e altere o valor para 1000. (Esse valor está em milissegundos e é igual a um segundo).
  7. Selecione Salvar alterações.
    Observação: esses parâmetros são dinâmicos. Se sua instância de banco de dados tiver um grupo de parâmetros personalizado, você não precisará reinicializar a instância de banco de dados para que esses parâmetros entrem em vigor.

Confirme se o registro em log está ativado

Depois de salvar o grupo de parâmetros associado à sua instância de banco de dados, o status é definido como aplicando. Depois que o grupo de parâmetros é definido em sua instância de banco de dados, o status é definido como em sincronia. Para confirmar se o registro em log está ativado, conecte-se à instância de banco de dados. Neste exemplo, confirme se o registro em log inclui todas as instruções DDL e todas as consultas que demoram mais de um segundo. Em seguida, execute comandos semelhantes aos seguintes:

CREATE TABLE article(article_code bigint, created_at timestamp with time zone, summary text, content text) ;
SELECT pg_sleep(2);
SELECT generate_series(1,10000000) as test;

Visualizar registros em log de consultas

Conclua as etapas a seguir para visualizar os logs:

1.Abra o console do Amazon RDS.

2.No painel de navegação, escolha Bancos de dados.

3.Escolha sua instância de banco de dados e, em seguida, escolha a visualização Logs.

4.Na guia Logs e eventos, escolha o registro em log mais recente e escolha Visualizar log para ver o conteúdo dos logs. Por exemplo:

2018-12-19 11:05:32 UTC:172.31.xx.yyy(35708):user@awspostgres:[27174]:LOG: statement: CREATE TABLE article(article_code bigint, created_at timestamp with time zone, summary text, content text) ;

2018-12-19 11:10:36 UTC:172.31.xx.yyy(35708):user@awspostgres:[27174]:LOG: duration: 2010.247 ms statement: select pg_sleep(2);

2018-12-19 11:11:25 UTC:172.31.xx.yyy(35708):user@awspostgres:[27174]:LOG: duration: 2159.838 ms statement: SELECT generate_series(1,10000000) as test;

Observação: certifique-se de não definir os parâmetros anteriores em valores que geram logs extensivos. Por exemplo, definir log_statement como all ou definir log_min_duration_statement como 0 gera uma grande quantidade de informações de log. Isso afeta seu consumo de armazenamento. Para definir os parâmetros para esses valores, certifique-se de fazer isso apenas por um curto período para fins de solução de problemas. Monitore de perto todo o espaço de armazenamento quando estiver solucionando problemas.

Informações relacionadas

Arquivos de log do banco de dados do RDS para PostgreSQL