View a markdown version of this page

Aktifkan korelasi pelacakan ke log - Amazon CloudWatch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Aktifkan korelasi pelacakan ke log

Anda dapat mengaktifkan pel acakan untuk mencatat korelasi di Sinyal Aplikasi. Ini secara otomatis menyuntikkan ID jejak dan ID rentang ke log aplikasi yang relevan. Kemudian, saat Anda membuka halaman detail pelacakan di konsol Sinyal Aplikasi, entri log yang relevan (jika ada) yang berkorelasi dengan jejak saat ini secara otomatis muncul di bagian bawah halaman.

Misalnya, Anda melihat lonjakan pada grafik latensi. Anda dapat memilih titik pada grafik untuk memuat informasi diagnostik untuk titik waktu tersebut. Anda kemudian memilih jejak yang relevan untuk mendapatkan informasi lebih lanjut. Saat Anda melihat informasi pelacakan, Anda dapat menggulir ke bawah untuk melihat log yang terkait dengan jejak. Log ini mungkin mengungkapkan pola atau kode kesalahan yang terkait dengan masalah yang menyebabkan lonjakan latensi.

Instrumentasikan aplikasi Anda sebelum mengonfigurasi korelasi log jejak

Aplikasi Anda harus sudah diinstrumentasikan untuk Sinyal Aplikasi sebelum Anda mengonfigurasi korelasi log pelacakan. Instrumentasi Sinyal Aplikasi adalah apa yang mengisi nilaitrace_id,span_id, dan trace_flags MDC saat runtime. Tanpa instrumentasi, nilai-nilai ini tetap kosong (misalnya,trace_id=) dan korelasi tidak berfungsi.

Untuk mencapai korelasi log jejak, Sinyal Aplikasi bergantung pada hal berikut:

Kom OpenTelemetry unitas menyediakan semua instrumen ini. Sinyal Aplikasi menggunakannya untuk menyuntikkan konteks jejak seperti ID jejak dan ID rentang ke dalam log aplikasi. Untuk mengaktifkan ini, Anda harus mengubah konfigurasi logging secara manual untuk mengaktifkan instrumentasi otomatis.

Bergantung pada arsitektur yang dijalankan aplikasi Anda, Anda mungkin juga harus menyetel variabel lingkungan untuk mengaktifkan korelasi log pelacakan, selain mengikuti langkah-langkah di bagian ini.

  • Di Amazon EKS, tidak diperlukan variabel lingkungan tambahan. Anda masih harus mengkonfigurasi output logging seperti yang dijelaskan dalam contoh berikut, dan logger Anda harus menulis ke stdout sehingga Container Insights dapat mengumpulkan log.

  • Di Amazon ECS, tidak diperlukan variabel lingkungan tambahan. Anda masih harus mengkonfigurasi output logging seperti yang dijelaskan dalam contoh berikut, dan logger Anda harus menulis ke stdout sehingga Container Insights dapat mengumpulkan log.

  • Di Amazon EC2, lihat langkah 4 dalam prosedur diLangkah 3: Menginstrumentasikan aplikasi Anda dan memulainya.

OpenTelemetry Container Insights tidak mengaktifkan korelasi log pelacakan secara otomatis

Mengaktifkan jalur pengumpulan log Con OpenTelemetry-based tainer Insights (misalnya, melalui add-on CloudWatch Observability EKS) mengumpulkan dan mengirimkan log kontainer Anda ke CloudWatch Log, tetapi tidak instrumen aplikasi Anda untuk Sinyal Aplikasi atau menyuntikkan konteks jejak ke log tersebut. Untuk menghubungkan jejak dengan log, Anda harus secara terpisah mengaktifkan instrumentasi Sinyal Aplikasi dan mengonfigurasi pola logging seperti yang dijelaskan di halaman ini.

Setelah Anda mengaktifkan korelasi log pelacakan, saat Anda membuka halaman detail pelacakan, setiap entri log yang berisi ID jejak yang sama secara otomatis muncul di bagian bawah halaman. Dengan korelasi log jejak, Anda dapat dengan cepat berpindah dari jejak ke log aplikasi yang relevan tanpa mencari secara manual.

Contoh pengaturan korelasi log pelacakan

Bagian ini berisi contoh pengaturan korelasi log jejak di beberapa lingkungan.

Spring Boot untuk Java

Misalkan Anda memiliki aplikasi Spring Boot di folder bernamacustom-app. Konfigurasi aplikasi biasanya berupa file YAML bernama custom-app/src/main/resources/application.yml yang mungkin terlihat seperti ini:

spring: application: name: custom-app config: import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/} ...

Untuk mengaktifkan korelasi log pelacakan, tambahkan konfigurasi logging berikut.

spring: application: name: custom-app config: import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/} ... logging: pattern: level: trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
Spring Boot dan konfigurasi XML adalah alternatif

Pendekatan Spring Boot application.yml (logging.pattern.level) dan pendekatan konfigurasi Logback/Log4j2/Log4j XML yang ditunjukkan pada bagian berikut adalah alternatif. Gunakan satu atau yang lain, bukan keduanya. Jika Anda mengatur polaapplication.yml, konfigurasi Logback default Spring Boot mengambilnya secara otomatis dan tidak logback.xml diperlukan pemisahan.

EKS dan ECS: Tulis log ke stdout

Container Insights mengumpulkan log dari wadah stdout/stderr, bukan dari file yang ditulis di dalam wadah. Konfigurasikan logger Anda untuk menulis ke konsol (stdout). Pen FileAppender ulisan ke file seperti app.log menghasilkan garis dengan tag jejak dengan benar, tetapi mereka tidak dikumpulkan dan tidak muncul berkorelasi pada halaman detail jejak. Jika Anda harus masuk ke file, Anda juga perlu mengirimkan file itu (misalnya, kolektor sidecar membaca volume bersama), yang berada di luar cakupan halaman ini.

Logback untuk Java

Dalam konfigurasi logging (seperti logback.xml), masukkan konteks jejak trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p ke pattern Encoder. Misalnya, konfigurasi berikut mendahului konteks pelacakan sebelum pesan log.

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n</pattern> </encoder> </appender>

Untuk informasi selengkapnya tentang encoder di Logback, lihat Encoder di dokumentasi Logback.

Log4j2 untuk Java

Dalam konfigurasi logging (seperti log4j2.xml), masukkan konteks jejak trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p kePatternLayout. Misalnya, konfigurasi berikut mendahului konteks pelacakan sebelum pesan log.

<Appenders> <Console name="CONSOLE" target="SYSTEM_OUT"> <PatternLayout pattern="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/> </Console> </Appenders>

Untuk informasi selengkapnya tentang tata letak pola di Log4j2, lihat Tata Letak Pola dalam dokumentasi Log4j2.

Log4j untuk Java

Dalam konfigurasi logging (seperti log4j.xml), masukkan konteks jejak trace_id=%X{trace_id} span_id=%X{span_id} trace_flags=%X{trace_flags} %5p kePatternLayout. Misalnya, konfigurasi berikut mendahului konteks pelacakan sebelum pesan log.

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="trace_id=%X{trace_id} span_id=%X{span_id} trace_flags=%X{trace_flags} %5p - %m%n"/> </layout> </appender>

Untuk informasi selengkapnya tentang tata letak pola di Log4j, lihat Tata Letak P ola Kelas dalam dokumentasi Log4j.

Python

Setel variabel lingkungan OTEL_PYTHON_LOG_CORRELATION ke true saat menjalankan aplikasi Anda. Untuk informasi selengkapnya, lihat Mengaktifkan injeksi konteks pel acakan dalam OpenTelemetry dokumentasi Python.

Node.js

Untuk informasi selengkapnya tentang mengaktifkan injeksi konteks pelac Node.js akan untuk pustaka logging yang mendukungnya, lihat dokumentasi penggunaan NPM dari instrumentasi otomatis Pino, Winston, atau Bun yan untuk. Node.js

Verifikasi penyiapannya

Setelah menerapkan ulang aplikasi Anda, konfirmasikan bahwa baris log sekarang menunjukkan terisi trace_id (misalnya, dengan menjalankankubectl logs pod-name). Kemudian buka halaman detail pelacakan di konsol Sinyal Aplikasi dan konfirmasikan bahwa entri log yang berkorelasi muncul di bagian bawah halaman.

Di Amazon EKS, log ditulis ke grup log aplikasi Container Insights (/aws/containerinsights/cluster-name/application, atau /aws/otel/containerinsights/cluster-name/application saat jalur log OpenTelemetry Container Insights diaktifkan).