Estudo de Caso III – postgresql.conf

pg_settings

As configurações armazenadas dentro do arquivo postgresql.conf podem ser visualizados de dentro do psql, veja o comando abaixo..

SELECT * FROM pg_settings;

É interessante notar que alguns comandos forçam a reinicialização do banco de dados, e em um contexto onde isso não pode acontecer, deve-se sempre procurar uma janela para que as alterações possam acontecer. Observando nossa consulta acima, temos o campo context, este campo nos informa quatro tipos de contextos:.

  • internal – São parâmetros que não podem ser mudados, ou são mudados em tempo de compilação ou criação de cluster.
  • postmaster – São parâmetros que podem ser alterados mediante restart.
  • sighup – São parâmetros que podem ser alterados mediante reload.
  • backend – São parâmetros que podem ser alterados por sessão, porém são definidos durante a fase de conexão.
  • user e superuser – São parâmetros que podem ser alterados a nível de usuário ou superusuário dentro de uma sessão.

Entendido os contextos, podemos continuar na nossa explicação do arquivo postgres.conf.

Log

Dentro do postgres.conf existe uma área para geração de log, deixá-las prontas para uma coleta de informações é interessante, pois diversas informações importantes podem ser enxergadas em um arquivo de log, principalmente se for preparado para ser usado em ferramentas próprias como é o caso do pgBagder.

log_destination(string)

É o tipo de método usado para a saída do arquivo de log, são quatro tipos de saída:

  • stderr – Saída de erro padrão.
  • csvlog – Saída em formato CSV, para seu uso deve-se usar o logging_collector(boolean)
  • syslog – Sistema de logging do S.O., para seu uso deve-se configurar a saída de log de LOCAL0 a LOCAL7 e é na configuração dele que se coloca o caminho e arquivo de log.
  • eventlog – Sistema de logging do Windows.
logging_collector(boolean)

Captura as mensagens de stderr para gravação de arquivos de log ou uso de CSV. Normalmente é a opção mais interessante, ao invés de utilizar syslog, pois permite que todas as configurações de log sejam feitas no PostgreSQL, e nem todas as mensagens podem ser enviadas para syslog. Exige o reinicio do banco.

log_directory(string)

Determina o caminho para a escrita do arquivo de log, o logging_collector deve estar ativo.

log_filename(string)

Determina o nome dos arquivos de log. O logging_collector deve estar ativo, algumas variáveis podem ser usadas para que o arquivo tenho data e hora.

postgresql-%Y-%m-%d_%H%M%S.log
log_rotation_age(integer)

Tempo máximo de vida de um arquivo de log, quando logging_collector está ativo.

log_rotation_size(integer)

Tamanho máximo de um arquivo de log individual, quando logging_collector está ativo. Zero desabilitará está característica.

Caso o log_rotation_age e log_rotation_size estiverem ativos ao mesmo tempo, o log será rotacionado pelo que acontecer primeiro.

log_truncate_on_rotation(boolean)

Quando ligado, haverá sobreposição do arquivo de log quando houver outro arquivo de mesmo nome existente. Se desligado, os arquivos serão continuados de onde pararam.

log_min_messages(enum)

Nível de mensagens no log do PostgreSQL. Níveis aceitos: DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL e PANIC.

Cada nível inclui todos os níveis superiores DEBUG5 emitirá o máximo de mensagens enquanto PANIC emitirá o mínimo.

log_error_verbosity(enum)

Quantidade de detalhes em cada mensagem. Níveis aceitos: TERSE, DEFAULT e VERBOSE, cada um adiciona mais campos a cada mensagem.

log_connections(boolean)

Habilita a gravação de cada tentativa de conexão e o sucesso de cada autenticação. Este parâmetro só pode ser modificado no postgresql.conf ou na linha de inicialização.

Alguns clientes como o psql tentam se conectar duas vezes para determinar a necessidade de senha, sendo que duas gravações serão feitas. Isto não indicará problemas.

log_statement(enum)

Permite especificar tipos de comandos SQL a gracar, podendo ser: ddl, mod e all.

  • ddl – Gravará comandos de definição de dados como CREATE, ALTER e DROP.
  • mod – Gravará comandos DDL mais aqueles que modificam dados como INSERT, UPDATE, DELETE e ETC.
  • all – Gravará todos os comandos.
Conclusão

Estas foram as configurações relacionadas a gravação de log, lembrando que existem várias outras configurações, no próximo post falaremos mais sobre algumas delas.