Mengonfigurasi Sinyal Aplikasi - Amazon CloudWatch

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

Mengonfigurasi Sinyal Aplikasi

Bagian ini berisi informasi tentang mengkonfigurasi Sinyal CloudWatch Aplikasi.

Lacak laju sampling

Secara default, saat Anda mengaktifkan sampling terpusat X-Ray Sinyal Aplikasi diaktifkan menggunakan pengaturan laju sampling default reservoir=1/s dan fixed_rate=5%. Variabel lingkungan untuk SDK agen AWS Distro for OpenTelemetry (ADOT) sebagai ditetapkan sebagai berikut.

Variabel lingkungan Nilai Catatan

OTEL_TRACES_SAMPLER

xray

OTEL_TRACES_SAMPLER_ARG

endpoint=http://cloudwatch-agent.amazon-cloudwatch:2000

Titik akhir agen CloudWatch

Untuk informasi tentang cara mengubah konfigurasi pengambilan sampel, silakan lihat yang berikut ini:

Jika Anda ingin menonaktifkan sampling terpusat X-Ray dan menggunakan pengambilan sampel lokal sebagai gantinya, tetapkan nilai berikut untuk agen ADOT SDK Java seperti di bawah ini. Contoh berikut menetapkan laju pengambilan sampel pada 5%.

Variabel lingkungan Nilai

OTEL_TRACES_SAMPLER

parentbased_traceidratio

OTEL_TRACES_SAMPLER_ARG

0.05

Untuk informasi tentang pengaturan pengambilan sampel lanjutan lainnya, lihat OTEL_ TRACES _ SAMPLER.

Aktifkan jejak untuk mencatat korelasi

Anda dapat mengaktifkan korelasi trace to log di Application Signals. Ini secara otomatis menyuntikkan jejak IDs dan rentang IDs ke log aplikasi yang relevan. Kemudian, ketika Anda membuka halaman detail jejak 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 dalam grafik latensi. Anda dapat memilih titik pada grafik untuk memuat informasi diagnostik untuk titik waktu itu. Anda kemudian memilih jejak yang relevan untuk mendapatkan informasi lebih lanjut. Saat Anda melihat informasi jejak, 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.

Untuk mencapai korelasi log jejak, Sinyal Aplikasi bergantung pada instrumentasi MDCotomatis Logger untuk Java dan Instrumentasi Logging OpenTelemetry untuk Python. Keduanya disediakan oleh OpenTelemetry masyarakat. Sinyal Aplikasi menggunakan ini 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 tempat aplikasi Anda berjalan, Anda mungkin juga harus menyetel variabel lingkungan untuk mengaktifkan korelasi log jejak, selain mengikuti langkah-langkah di bagian ini.

Setelah Anda mengaktifkan korelasi log jejak,

Lacak contoh penyiapan korelasi log

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 YAML file 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 jejak, 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

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 dalam pattern Encoder. Misalnya, konfigurasi berikut menambahkan konteks jejak sebelum pesan log.

<appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>app.log</file> <append>true</append> <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 Encoders dalam 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 ke dalamPatternLayout. Misalnya, konfigurasi berikut menambahkan konteks jejak sebelum pesan log.

<Appenders> <File name="FILE" fileName="app.log"> <PatternLayout pattern="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/> </File> </Appenders>

Untuk informasi selengkapnya tentang tata letak pola di Log4j2, lihat Pattern Layout dalam dokumentasi Log4j2.

Log4j untuk Java

Dalam konfigurasi logging (seperti log4j.xml), masukkan konteks jejak trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p ke dalamPatternLayout. Misalnya, konfigurasi berikut menambahkan konteks jejak sebelum pesan log.

<appender name="FILE" class="org.apache.log4j.FileAppender">; <param name="File" value="app.log"/>; <param name="Append" value="true"/>; <layout class="org.apache.log4j.PatternLayout">; <param name="ConversionPattern" value="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/>; </layout>; </appender>;

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

Python

Atur variabel OTEL_PYTHON_LOG_CORRELATION lingkungan true saat menjalankan aplikasi Anda. Untuk informasi selengkapnya, lihat Mengaktifkan injeksi konteks jejak dalam dokumentasi Python OpenTelemetry .

Aktifkan metrik untuk mencatat korelasi

Jika Anda mempublikasikan log aplikasi ke grup CloudWatch log di Log, Anda dapat mengaktifkan korelasi metrik ke log aplikasi di Sinyal Aplikasi. Dengan korelasi log metrik, konsol Sinyal Aplikasi secara otomatis menampilkan grup log yang relevan yang terkait dengan metrik.

Misalnya, Anda melihat lonjakan dalam grafik latensi. Anda dapat memilih titik pada grafik untuk memuat informasi diagnostik untuk titik waktu itu. Informasi diagnostik akan menunjukkan grup log aplikasi yang relevan yang terkait dengan layanan dan metrik saat ini. Kemudian Anda dapat memilih tombol untuk menjalankan kueri Wawasan CloudWatch Log pada grup log tersebut. Bergantung pada informasi yang terkandung dalam log aplikasi, ini mungkin membantu Anda menyelidiki penyebab lonjakan latensi.

Bergantung pada arsitektur tempat aplikasi Anda berjalan, Anda mungkin juga harus menyetel variabel lingkungan untuk mengaktifkan korelasi metrik ke log aplikasi.

Kelola operasi kardinalitas tinggi

Sinyal Aplikasi mencakup pengaturan di CloudWatch agen yang dapat Anda gunakan untuk mengelola kardinalitas operasi Anda dan mengelola ekspor metrik untuk mengoptimalkan biaya. Secara default, fungsi pembatas metrik menjadi aktif ketika jumlah operasi yang berbeda untuk layanan dari waktu ke waktu melebihi ambang default 500. Anda dapat menyetel perilaku dengan menyesuaikan pengaturan konfigurasi.

Tentukan apakah pembatasan metrik diaktifkan

Anda dapat menggunakan metode berikut untuk mengetahui apakah pembatasan metrik default sedang terjadi. Jika ya, Anda harus mempertimbangkan untuk mengoptimalkan kontrol kardinalitas dengan mengikuti langkah-langkah di bagian selanjutnya.

  • Di CloudWatch konsol, pilih Sinyal Aplikasi, Layanan. Jika Anda melihat Operasi bernama AllOtherOperationsatau RemoteOperationbernama AllOtherRemoteOperations, maka pembatasan metrik sedang terjadi.

  • Jika ada metrik yang dikumpulkan oleh Sinyal Aplikasi yang memiliki nilai AllOtherOperations untuk Operation dimensinya, maka pembatasan metrik sedang terjadi.

  • Jika ada metrik yang dikumpulkan oleh Sinyal Aplikasi yang memiliki nilai AllOtherRemoteOperations untuk RemoteOperation dimensinya, maka pembatasan metrik sedang terjadi.

Optimalkan kontrol kardinalitas

Untuk mengoptimalkan kontrol kardinalitas Anda, Anda dapat melakukan hal berikut:

  • Buat aturan kustom untuk operasi agregat.

  • Konfigurasikan kebijakan pembatasan metrik Anda.

Buat aturan kustom untuk operasi agregat

Operasi kardinalitas tinggi terkadang dapat disebabkan oleh nilai unik yang tidak tepat yang diekstraksi dari konteksnya. Misalnya, mengirimkan HTTP permintaan/S yang menyertakan pengguna IDs atau sesi IDs di jalur dapat menyebabkan ratusan operasi yang berbeda. Untuk mengatasi masalah tersebut, sebaiknya Anda mengonfigurasi CloudWatch agen dengan aturan penyesuaian untuk menulis ulang operasi ini.

Dalam kasus di mana ada lonjakan dalam menghasilkan berbagai metrik yang berbeda melalui RemoteOperation panggilan individual, sepertiPUT /api/customer/owners/123,, dan permintaan serupaPUT /api/customer/owners/456, kami sarankan Anda mengkonsolidasikan operasi ini menjadi satu. RemoteOperation Salah satu pendekatannya adalah menstandarisasi semua RemoteOperation panggilan yang dimulai PUT /api/customer/owners/ dengan format seragam, khususnya. PUT /api/customer/owners/{ownerId} Contoh berikut menggambarkan hal ini. Untuk informasi tentang aturan penyesuaian lainnya, lihatAktifkan Sinyal CloudWatch Aplikasi.

{ "logs":{ "metrics_collected":{ "application_signals":{ "rules":[ { "selectors":[ { "dimension":"RemoteOperation", "match":"PUT /api/customer/owners/*" } ], "replacements":[ { "target_dimension":"RemoteOperation", "value":"PUT /api/customer/owners/{ownerId}" } ], "action":"replace" } ] } } } }

Dalam kasus lain, metrik kardinalitas tinggi mungkin telah digabungkanAllOtherRemoteOperations, dan mungkin tidak jelas metrik spesifik apa yang disertakan. CloudWatch Agen dapat mencatat operasi yang dijatuhkan. Untuk mengidentifikasi operasi yang dijatuhkan, gunakan konfigurasi dalam contoh berikut untuk mengaktifkan logging hingga masalah muncul kembali. Kemudian periksa log CloudWatch agen (dapat diakses oleh wadah stdout atau file EC2 log) dan cari kata kuncidrop metric data.

{ "agent": { "config": { "agent": { "debug": true }, "traces": { "traces_collected": { "application_signals": { } } }, "logs": { "metrics_collected": { "application_signals": { "limiter": { "log_dropped_metrics": true } } } } } } }
Buat kebijakan pembatasan metrik Anda

Jika konfigurasi pembatas metrik default tidak membahas kardinalitas untuk layanan Anda, Anda dapat menyesuaikan konfigurasi pembatas metrik. Untuk melakukan ini, tambahkan limiter bagian di bawah logs/metrics_collected/application_signals bagian dalam file konfigurasi CloudWatch Agen.

Contoh berikut menurunkan ambang batas metrik dari 500 metrik berbeda menjadi 100.

{ "logs": { "metrics_collected": { "application_signals": { "limiter": { "drop_threshold": 100 } } } } }