21.3. Manutenção do arquivo de registro

É uma boa idéia salvar a saída do registro (log) do servidor de banco de dados em algum lugar, em vez de simplesmente direcionar para /dev/null. A saída do registro é valiosa para fazer diagnóstico de problemas. Entretanto, a saída do registro tende a se tornar volumosa (especialmente nos níveis de depuração altos), e não será desejado salvá-la indefinidamente. É necessário fazer a "rotação" dos arquivos de registro, para que sejam iniciados novos arquivos, e os arquivos antigos sejam removidos periodicamente.

Se for simplesmente direcionada a saída stderr do postmaster para um arquivo, haverá uma saída de registro, mas a única maneira de truncar o arquivo de registro será parando e reiniciando o postmaster, o que pode ser adequado em um ambiente de desenvolvimento, mas poucos ambientes de produção vão considerar este comportamento aceitável.

Uma abordagem melhor é enviar a saída stderr do postmaster para algum tipo de programa de rotação de registro. Existe um programa nativo de rotação de registro, que pode ser utilizado definindo o parâmetro de configuração redirect_stderr como true no arquivo postgresql.conf. Os parâmetros de controle para este programa estão descritos na Seção 16.4.6.1.

Como alternativa, pode-se preferir utilizar um programa de rotação de registro externo, se já houver um sendo usado por outro programa servidor. Por exemplo, a ferramenta rotatelogs incluída na distribuição do Apache pode ser utilizada pelo PostgreSQL. Para isto ser feito, a saída stderr do postmaster deve ser canalizada (pipe) para o programa desejado. Se o servidor for inicializado pelo pg_ctl, então a saída stderr do postmaster já estará redirecionada para stdout e, portanto, somente será necessário utilizar o operador pipe (|), como, por exemplo:

pg_ctl start | rotatelogs /var/log/pgsql_log 86400

Outra abordagem para gerenciar a saída do registro, apropriada para ambientes de produção, é enviar a saída para syslog e deixar que algum programa cuide da rotação do registro. Para que isto seja feito, deve ser definido no arquivo postgresql.conf o parâmetro de configuração log_destination como syslog (para registrar apenas em syslog). Então, pode ser enviado o sinal SIGHUP para o processo (daemon) syslogd para que este realize a reinicialização (fechar todos os arquivos abertos, ler novamente o arquivo de configuração, e iniciar a facilidade syslog novamente). [1] [2] Se for desejado automatizar a rotação do registro, pode ser configurado o programa logrotate para trabalhar com os arquivos de registro do syslog. [3]

Entretanto, em muitos sistemas o syslog não é muito confiável, particularmente com mensagens de registro grandes; pode truncar ou remover as mensagens justamente quando forem mais necessárias. Também, no Linux, o syslog sincroniza todas as mensagens com o disco, ocasionando um desempenho medíocre (Pode ser utilizado um hífen (-) no início do nome do arquivo, no arquivo de configuração do syslog, para desativar este comportamento).

Deve ser observado que todas as soluções descritas acima têm o cuidado de iniciar novos arquivos de registro a intervalos configuráveis, mas não tratam dos arquivos de registro antigos, que não são mais de interesse. Provavelmente, será desejado definir um script executado periodicamente para remover os arquivos de registro antigos. Outra possibilidade é configurar o programa de rotação para que os arquivos de registro antigos sejam sobrescritos ciclicamente.

Notas

[1]

Fedora Core 3kill -s SIGHUP `cat /var/run/syslogd.pid` (N. do T.)

[2]

Syslogd é um mecanismo que permite que qualquer comando registre mensagens na console do sistema e/ou em um arquivo. O daemon syslogd recebe as mensagens dos comandos e envia para o destino descrito no arquivo de configuração ( /etc/syslog.conf ). O syslogd daemon lê a configuração quando é inicializado e quando recebe um signal de hangup ( kill -HUP processo ). Dicas-L (N. do T.)

[3]

O logrotate foi projetado para facilitar a administração dos sistemas que geram um número grande de arquivos de registro. Permite a rotação automática, compressão, remoção e envio por correio eletrônico dos arquivos de registro. Cada arquivo de registro pode ser tratado diariamente, semanalmente, mensalmente ou quando fica muito grande. (N. do T.)

SourceForge.net Logo CSS válido!