Registro em log - Amazon EKS

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 LogMonitorpara recuperar o ETW (Rastreamento de eventos para Windows), os registros de eventos do Windows e outros registros específicos do aplicativo a partir da execução de contêineres e canaliza a saída de log formatada do Windows para. STDOUT Esses registros podem então ser transmitidos usando fluent-bit ou fluentd para o destino desejado, como a Amazon. CloudWatch

O mecanismo de coleta de registros recupera STDOUT STDERR /logs dos pods do Kubernetes. A DaemonSeté uma forma comum de coletar registros de contêineres. Ele oferece a capacidade de gerenciar o log routing/filtering/enrichment independentemente do aplicativo. Um fluentd DaemonSet pode ser usado para transmitir esses registros e quaisquer outros registros gerados pelo aplicativo para um agregador de registros desejado.

Informações mais detalhadas sobre o streaming de logs das cargas de trabalho do Windows para CloudWatch são explicadas aqui

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(); } }

📝 Edite esta página em GitHub