Você também pode configurar o logstash para analisar os vários arquivos de log json que o docker produz por padrão.
Outra abordagem é usar o que é chamado de sidecar no Kubernetes.
Eles fornecem alguns exemplos diferentes em sua página de conceitos registro em cluster .
Como você escolhe aplicar esse conceito depende totalmente de suas necessidades.
No entanto, uma simples prova de conceito pode funcionar por:
- criando um sidecar de logstash que aceita fluxos de syslog recebidos (por exemplo, usa a entrada do syslog)
- configurando todos os contêineres para usar o driver syslog do docker para enviar o registro para o sidecar.
Você também pode, é claro, configurar um ouvinte syslog central (usando logstash ou rsyslog, por exemplo) e fazer isso sem um sidecar.
Essa abordagem também é muito parecida com a sugestão do @ Jason Martin de usar o GELF.
Outro uso de um sidecar local pode ser criar um contêiner executando o logstash com um entrada de arquivo e expôs um volume de log (por exemplo, / var / log / ou / logs).
Você poderia compartilhar esse volume com outros contêineres, para permitir que eles gravassem seus registros (por exemplo, /logs/$INSTANCE_ID/file.log) e fizessem o logstash analisá-los.
Esta última configuração permite monitorar os arquivos em vez de STDOUT / STDERR, mas você provavelmente terá que ter seu diretório de log chmod 1777
(ou ter vários desses sidecars).
A configuração 'reversa' também funcionaria, é claro (mas parece mais difícil de gerenciar / manter): faça com que os contêineres de aplicativos exponham um volume de log e faça uma transação lateral do logstash ler o conteúdo do volume de log.