Eu tenho uma instalação NGINX (usada como proxy da web) dentro de uma imagem Docker construída no Kubernetes que eventualmente precisará ser atualizada para executar vários pods para lidar com o volume de tráfego.
A saída de log de access.log
e error.log
precisa não apenas ir para arquivos (para nosso serviço de coletor de log), mas também aparecer nos logs do Kubernetes, ou seja, aparecer em /dev/stdout
e /dev/stderr
. Minha solução atual é executar tail -F access.log >> /dev/stdout &
e da mesma forma para o log de erros.
Eu gostaria de ter esses arquivos em um armazenamento PVC compartilhado (para que os logs permaneçam após o pod travar ou reiniciar), e isso deve funcionar bem, desde que eu tenha apenas um pod.
Depois de ter vários pods, tenho o problema de que todos os pods vão querer gravar nos mesmos arquivos - access.log
e error.log
.
Eu tentei algumas coisas, mas não parece que o NGINX suporta o uso de uma variável nos caminhos de log, então estou preso ao escrever em caminhos estáticos.
Minha melhor solução teórica até agora é atualizar os formatos de log de erro e acesso para incluir o nome do pod, mas isso envolveria novamente a adição de uma variável ao NGINX, e não tenho certeza se isso permitiria isso.
Também tentei links simbólicos ( ln -sf access-${PODNAME}.log access.log
e similares), mas isso também não funciona em uma situação de vários pods, pois todos os pods compartilham a mesma configuração.
Tenho certeza de que não sou o único com essa situação.
Alguma ideia que eu possa tentar?
Obrigado!