Obtendo logs de journald em um arquivo de texto simples

1

Eu quero registrar os logs do journald em um arquivo para que eu possa depois 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 do Docker em uma máquina CoreOS, então tentei executar o syslog-ng como um contêiner no host do docker CoreOS, criando uma unidade systemd que executa o contêiner. Eu segui esta página para obter o syslog no systemd , mas se eu tentar fazer o meu container syslog-ng ler diretamente do soquete syslog no host (montando-o com um volume docker), ele se queixa de "Endereço já em uso". Então, eu tenho journald logging, um container com o syslog-ng rodando, mas não sei como obter logs do journald dentro do syslog-ng.

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

    
por fiunchinho 11.10.2015 / 20:52

1 resposta

1

Eu sei que essa pergunta é um pouco antiga, mas é um dos primeiros resultados de pesquisa no Google. Isso e a opção --json não parece funcionar para mim e não aparece nas man pages.

Eu olhei para a man page para journalctl e há uma opção chamada: --no-tail, que apenas exibe a data diretamente para std, onde pode ser canalizada para outro aplicativo ou arquivo.

No meu caso eu queria que meus logs do ssh de hoje executassem isso: 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 ; o > , então, envia isso para um arquivo.

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

Isso foi testado no Arch Linux.

    
por 23.10.2016 / 19:47