Associe trace IDs aos logs de negócios da sua aplicação Java para localizar rapidamente os logs relevantes por trace ID quando ocorrer um problema e resolver a falha com mais agilidade.
Pré-requisitos
Este recurso não é compatível com a edição Basic do Application Real-Time Monitoring Service (ARMS).
O agente deve estar na versão 2.6.1.2 ou posterior. Para mais informações, consulte Atualize o agente Java.
A coleta de logs deve estar configurada por meio do Simple Log Service (SLS). Para mais informações, consulte Data collection overview.
Informações de fundo
O ARMS associa trace IDs aos logs de negócios usando o mecanismo Mapped Diagnostic Context (MDC) e oferece suporte a Log4j, Log4j2 e Logback.
Ative a associação
Faça login no console do ARMS. No painel de navegação à esquerda, escolha .
-
Selecione uma região na barra de navegação superior e clique em na aplicação.
NotaOs ícones na coluna Language indicam a linguagem de programação da aplicação:
: Java
: Go
: Python- (Hífen): aplicação monitorada no Managed Service for OpenTelemetry
Na barra de navegação superior, escolha .
-
Na aba Custom Configurations, na seção Application Log Association Configuration, defina Log Source como SLS. Ative a chave Associate Business Logs with trace ID, selecione a região do seu projeto SLS e vincule o projeto e o Logstore.
Se necessário, ative também as chaves Logs are automatically populated with trace ID e Logs are automatically populated with span ID.
Os recursos Logs are automatically populated with trace ID e Logs are automatically populated with span ID exigem a versão 4.1.6 ou posterior do agente. Ao vincular o SLS, selecione um Associated Index. Especifique um índice de campo ou um índice de texto completo.
NotaAo ativar essa chave, os trace IDs são adicionados automaticamente aos seus logs de negócios, permitindo ignorar a configuração manual descrita em Step 5.
Caso precise identificar exceções de negócios com precisão, consulte Troubleshoot business exceptions by using traces and log analysis.
-
(Opcional) Associe o trace ID manualmente.
No atributo
Patterndo layout do seu log de negócios, adicione%X{EagleEye-TraceID}. Se utilizar o protocolo SkyWalking, adicione%X{Skywalking-TraceID}no lugar. Para aplicações integradas via ACK OnePilot (agente nativo do ARMS), o formato do trace ID é%X{EagleEye-TraceID}.Para associar também um span ID, adicione
%X{span_id}.ImportanteA associação de span ID requer a versão 4.x ou posterior do agente.
Para saber como obter
{EagleEye-TraceID}no código da sua aplicação, consulte ARMS SDK for Java (Not Recommended).
Os exemplos a seguir demonstram como modifique os arquivos de configuração para Log4j, Log4j2 e Logback:
-
Exemplo de modificação no arquivo de configuração do Log4j log4j.properties:
log4j.appender.warn.layout=org.apache.log4j.PatternLayout log4j.appender.warn.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-[%p]-(%C:%L) - traceId:%X{EagleEye-TraceID} - spanId:%X{span_id} - %m%n -
Exemplo de modificação no arquivo de configuração do Log4j2 log4j2.xml:
PatternLayout
<console name="Console" target="SYSTEM_OUT"> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - traceId:%X{EagleEye-TraceID} - spanId:%X{span_id} - %m%n"/> </console>JsonLayout
<JsonLayout complete="false" compact="true" eventEol="true" properties="false" locationInfo="true" includeStacktrace="true" stacktraceAsString="true" objectMessageAsJsonObject="true" > <KeyValuePair key="EagleEye-TraceID" value="${ctx:EagleEye-TraceID}" /> <KeyValuePair key="span_id" value="${ctx:span_id}" /> </JsonLayout> -
Exemplo de modificação no arquivo de configuração do Logback logback.xml:
PatternLayout
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - traceId:%X{EagleEye-TraceID} - spanId:%X{span_id} - %msg%n</pattern> </encoder>JsonLayout
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp/> <threadName/> <logLevel/> <loggerName/> <message/> <callerData/> <stackTrace/> <pattern> <pattern> { "EagleEye-TraceID": "%X{EagleEye-TraceID}", "span_id": "%X{span_id}" } </pattern> </pattern> </providers> </encoder>
-
Reinicie sua aplicação.
Se o trace ID aparecer nos seus logs de negócios, a associação foi bem-sucedida. Exemplo de saída:
2023-02-15 15:03:43-[INFO]-(com.example....HelloController:17) - traceId:ea1e0fe79b16764446 this is an info message 2023-02-15 15:03:43-[ERROR]-(com.example....HelloController:19) - traceId:ea1e0fe79b16764446 - this is an error message 2023-02-15 15:03:43-[WARN]-(com.example....HelloController:21) - traceId:ea1e0fe79b16764446 this is a warn message -
(Opcional) Configure a coleta de logs do SLS para enviar os logs da aplicação ao projeto e Logstore vinculados nas etapas anteriores.
Por padrão, o ARMS não coleta logs de aplicação.