Obtendo logs do Journald em um arquivo de texto simples

Obtendo logs do Journald em um arquivo de texto simples

Quero registrar os logs do Journald em um arquivo para que mais tarde possa buscá-lo e enviá-lo para o Logstash. Pensei em executar o syslog-ng e torná-lo um cliente do journald, para obter arquivos syslog. Estou usando contêineres Docker em uma máquina CoreOS, então tentei executar o syslog-ng como um contêiner no host docker CoreOS, criando uma unidade systemd que executa o contêiner. eu seguiesta página para obter o syslog no systemd, mas se eu tentar fazer meu contêiner syslog-ng ler diretamente do soquete syslog no host (montando-o com um volume docker), ele reclamará de "Endereço já em uso". Portanto, tenho o registro do diário, um contêiner com o syslog-ng em execução, mas não sei como obter os logs do diário dentro do syslog-ng.

Minha solução alternativa para obter logs do journald em um arquivo é executar uma unidade systemd que execute journalctl -f --json | tee -a /var/log/systemd, mas não tenho certeza sobre a confiabilidade desta solução. Esta é uma solução boa o suficiente?

Responder1

Sei que esta pergunta é um pouco desatualizada, mas é um dos primeiros resultados de pesquisa no Google. Isso e a opção --json não parecem funcionar para mim e não aparecem nas páginas de manual.

Olhei a página de manual do journalctl e há uma opção chamada: --no-tail que apenas exibirá a data diretamente para std, onde poderá ser canalizada para outro aplicativo ou arquivo.

No meu caso, eu queria meus logs ssh de hoje, então executei isto: journalctl -u sshd -S today --no-tail > main.log.

Explicação técnica: obtenha todos os logs de hoje que são da unidade sshd; então >envia isso para um arquivo.

No seu caso acredito que é isso que você está querendo: journalctl --no-tail > test.log.

Isso foi testado no Arch Linux.

informação relacionada