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.