As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Registro em log
Os aplicativos em contêineres geralmente direcionam os registros do aplicativo para o. STDOUT O tempo de execução do contêiner captura esses registros e faz algo com eles. Normalmente, grava em um arquivo. O local onde esses arquivos são armazenados depende do tempo de execução e da configuração do contêiner.
Uma diferença fundamental com os pods do Windows é que eles não geramSTDOUT. Você pode executar LogMonitor
O mecanismo de coleta de registros recupera STDOUT STDERR /logs dos pods do Kubernetes. A DaemonSet
Recomendações de registro
As melhores práticas gerais de registro não são diferentes ao operar cargas de trabalho do Windows no Kubernetes.
-
Sempre registre entradas de registro estruturadas (JSON/SYSLOG), o que facilita o manuseio de entradas de registro, pois há muitos analisadores pré-escritos para esses formatos estruturados.
-
Centralize registros - contêineres de registro dedicados podem ser usados especificamente para coletar e encaminhar mensagens de registro de todos os contêineres para um destino
-
Mantenha a verbosidade do registro baixa, exceto durante a depuração. A verbosidade coloca muito estresse na infraestrutura de registro e eventos significativos podem ser perdidos no ruído.
-
Sempre registre as informações do aplicativo junto com o ID da transação/solicitação para rastreabilidade. Os objetos do Kubernetes não carregam o nome do aplicativo, então, por exemplo, um nome de pod
windows-twryrqyw
pode não ter nenhum significado ao depurar registros. Isso ajuda na rastreabilidade e na solução de problemas de aplicativos com seus registros agregados.Como você os geratransaction/correlation id’s depends on the programming construct. But a very common pattern is to use a logging Aspect/Interceptor, que podem ser usados MDC
(contexto de diagnóstico mapeado) para injetar um ID exclusivo de transação/correlação em cada solicitação recebida, da seguinte forma:
import org.slf4j.MDC; import java.util.UUID; Class LoggingAspect { //interceptor @Before(value = "execution(* *.*(..))") func before(...) { transactionId = generateTransactionId(); MDC.put(CORRELATION_ID, transactionId); } func generateTransactionId() { return UUID.randomUUID().toString(); } }