Application Real-Time Monitoring Service (ARMS) memungkinkan Anda menghubungkan ID jejak dengan log dari aplikasi Java. Dengan cara ini, jika terjadi kesalahan dalam aplikasi, Anda dapat mengakses log yang terkait dengan ID jejak untuk menemukan dan memperbaiki kesalahan tersebut.
Prasyarat
Pemantauan Aplikasi Edisi Dasar tidak mendukung fitur ini.
Agen Application Real-Time Monitoring Service (ARMS) ditingkatkan ke V2.6.1.2 atau lebih baru. Untuk informasi lebih lanjut, lihat Perbarui agen ARMS untuk aplikasi Java.
Log dikumpulkan menggunakan Simple Log Service. Untuk informasi lebih lanjut, lihat Ikhtisar pengumpulan data.
Informasi latar belakang
Dalam ARMS, ID jejak dapat dihubungkan dengan log aplikasi berdasarkan mekanisme Mapped Diagnostic Context (MDC). Kerangka log utama seperti Log4j, Log4j 2, dan Logback didukung.
Prosedur
Masuk ke Konsol ARMS. Di panel navigasi kiri, pilih .
Pilih wilayah di bilah navigasi atas dan klik aplikasi.
CatatanIkon di kolom Language menunjukkan bahasa pemrograman aplikasi:
: Java
: Go
: Python- (Tanda hubung): aplikasi yang dipantau dalam Managed Service for OpenTelemetry.
Di bilah navigasi atas, pilih .
Di bagian Application log Association configuration pada tab Custom Configurations, atur Log Source menjadi Log service SLS. Nyalakan Automatically associate business logs with TraceId, pilih wilayah tempat Simple Log Service Anda diterapkan, dan ikat sebuah proyek dan Logstore.
Anda juga bisa menyalakan Log secara otomatis diisi dengan traceId dan Log secara otomatis diisi dengan spanId sesuai kebutuhan.
CatatanJika Anda mengaktifkan Tautkan Log Bisnis dengan TraceId, ID jejak akan secara otomatis dibuat di log. Dalam hal ini, abaikan Langkah 5.
Untuk informasi tentang cara memecahkan kesalahan, lihat Identifikasi pengecualian bisnis dengan menganalisis jejak dan log.
(Opsional) Secara manual asosiasikan ID jejak.
Tambahkan
%X{EagleEye-TraceID}ke propertiPatterndari tata letak log. Jika Anda menggunakan protokol SkyWalking, tambahkan%X{Skywalking-TraceID}sebagai gantinya.Anda juga bisa mengasosiasikan ID rentang dengan menambahkan
%X{span_id}.PentingAsosiasi ID rentang hanya didukung oleh agen ARMS V4.x dan yang lebih baru.
Untuk informasi tentang cara mendapatkan
{EagleEye-TraceID}di kode, lihat SDK ARMS.
Berikut adalah contoh cara memodifikasi file konfigurasi kerangka Log4j, Log4j2, dan Logback:
Modifikasi file konfigurasi 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%nModifikasi file konfigurasi 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>Modifikasi file konfigurasi 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>
Mulai ulang aplikasi.
Jika ID jejak ditampilkan di log aplikasi, log tersebut telah dihubungkan dengan ID jejak, seperti yang ditunjukkan pada gambar berikut.

(Opsional) Konfigurasikan pengumpulan log dan unggah log aplikasi ke proyek dan Logstore.
Secara default, agen ARMS untuk Java tidak mengumpulkan log aplikasi.