Um desenho de log responde a três perguntas: qual processo produziu um registo, onde esse registo cai e quanto tempo sobrevive. OpenVPN pode escrever num ficheiro, entregar as mensagens ao logger do sistema ou deixá-las ao que o gestor de serviço captura, e não são três cópias de um mesmo fluxo. Cada escolha muda quem é dono da rotação, que utilizador pode ler o resultado e o que acontece durante o arranque. Fixe as respostas antes de um incidente, porque depois herda o que estiver configurado.

O que o daemon faz realmente com a diretiva

As diretivas não são abstrações; cada uma decide onde o processo escreve as suas mensagens. log /path abre esse ficheiro, log-append /path abre-o para acrescentar, e syslog entrega as mensagens ao logger local do sistema pelo seu socket. Sem nenhuma delas, a saída vai para a saída padrão, e o gestor de serviço decide o que acontece a seguir. Leia a unidade efetiva e o perfil em conjunto antes de concluir que o daemon ignora a sua configuração.

Esse último caso é o comum numa instalação empacotada, e explica porque dois administradores discordam sobre onde vive o log. Um lê o journal da unidade, o outro lê um ficheiro que o daemon nunca escreveu.

Verifique a configuração em execução em vez do ficheiro em disco. Uma sobreposição de unidade do tipo drop-in ou um ficheiro de ambiente pode mudar a diretiva efetiva sem tocar no perfil que está a ler.

log trunca, log-append não

log trunca um ficheiro existente quando a diretiva entra em vigor, pelo que um reinício apaga as provas anteriores. log-append mantém o que lá está e acrescenta. Nenhuma das opções roda nada, e nenhuma reabre o ficheiro mais tarde por si só, e é por isso que a rotação precisa de cooperação.

Se a rotação renomear o ficheiro enquanto o daemon continua a escrever no descritor antigo, o novo ficheiro fica vazio e o uso de disco continua a subir no renomeado. Sinalize ao processo para reabrir, ou rode com uma estratégia de copiar e truncar e aceite a janela de cópia.

O diretório, a propriedade e as permissões fazem parte do desenho. O daemon pode correr como utilizador sem privilégios depois do arranque, e um diretório criado pelo root na instalação pode não ser gravável nessa altura. Prepare-o através do empacotamento ou do processo de implantação em vez de corrigir permissões durante um incidente.

O gestor de serviço guarda uma segunda cópia

O systemd captura a saída padrão e a saída de erro por predefinição, pelo que uma unidade sem redirecionamento explícito já tem um log. Acrescentar uma diretiva de ficheiro dá dois fluxos com retenção, leitores e marcas temporais diferentes.

Isso não é automaticamente errado, mas tem de ser uma decisão. Mantenha o registo de arranque no journal, porque as falhas antes de o ficheiro configurado existir não aparecem em mais lado nenhum. Depois torne o ficheiro autoritativo para os eventos em regime estável e diga-o no runbook. Dois fluxos autoritativos significam duas respostas para cada pergunta.

Confirme a escolha com um teste que falhe de propósito. Arranque o daemon com um certificado ilegível e veja qual fluxo regista o erro.

A verbosidade não é o mesmo que detalhe utilizável

Um nível de verb mais alto acrescenta mais linhas e, passado um ponto, linhas que ninguém lê. O nível 3 é um regime estável razoável para a maioria das implantações, enquanto o nível 4 e acima servem uma investigação limitada com uma pergunta conhecida. A supressão de repetições reduz o ruído, mas não deve esconder com que frequência um evento se repete. Defina o nível que consegue sustentar e suba-o apenas para uma investigação com nome e com fim.

Mantenha a identidade da instância e as marcas temporais no registo. Uma reconexão parece exatamente uma primeira ligação quando o ficheiro recebe acrescentos há meses e falta o nome da instância.

Tenha cuidado com o resto que cai nesse ficheiro. A saída redirecionada pode incluir texto de scripts chamados, e um auxiliar que imprime o seu ambiente põe credenciais e caminhos de chaves num log legível. Trate o acesso ao log como uma decisão de segurança mesmo quando o próprio daemon não imprime nada sensível.

Rotação, retenção e os sinais que recarregam

Decida a retenção com a pessoa dona do disco e defina-a antes de o volume decidir por si. Um sinal de recarga não é um comando de manutenção do log: enviar o errado reinicia o túnel e desliga todos os utilizadores. Escreva o procedimento de reabertura ao lado da regra de rotação para que os dois não se afastem.

O resultado deve ser um serviço que um operador consiga descrever: um fluxo autoritativo, cada evento colocado no ciclo de vida e um registo obtível sem recolher todos os ficheiros com segredos do host. Essa descrição é o teste de aceitação do desenho, e é barato verificá-la antes do próximo incidente.

Artigos relacionados