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 |
---|---|---|
|
|
|
|
|
Titik akhir agen CloudWatch |
Untuk informasi tentang cara mengubah konfigurasi pengambilan sampel, silakan lihat yang berikut ini:
Untuk mengubah sampling X-Ray, lihat Mengonfigurasi aturan pengambilan sampel
Untuk mengubah ADOT pengambilan sampel, lihat Mengonfigurasi OpenTelemetry Kolektor untuk pengambilan sampel jarak jauh X-Ray
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 |
---|---|
|
|
|
|
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 hal berikut:
MDCInstrumentasi otomatis logger
untuk Java. OpenTelemetry Instrumentasi Logging
untuk Python. Instrumen otomatis Pino
, Winston , atau Bunyan untuk Node.js.
Semua isntrumentasi ini disediakan oleh komunitas. OpenTelemetry 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 tempat aplikasi Anda berjalan, Anda mungkin juga harus menyetel variabel lingkungan untuk mengaktifkan korelasi log jejak, selain mengikuti langkah-langkah di bagian ini.
Di AmazonEKS, tidak diperlukan langkah lebih lanjut.
Di AmazonECS, tidak diperlukan langkah lebih lanjut.
Di AmazonEC2, lihat langkah 4 dalam prosedur diLangkah 3: Menginstrumentasikan aplikasi Anda dan memulainya.
Setelah Anda mengaktifkan korelasi log jejak,
Lacak contoh pengaturan 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
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
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
Python
Atur variabel OTEL_PYTHON_LOG_CORRELATION
lingkungan true
saat menjalankan aplikasi Anda. Untuk informasi selengkapnya, lihat Mengaktifkan injeksi konteks jejak
Node.js
Untuk informasi selengkapnya tentang mengaktifkan injeksi konteks jejak di Node.js untuk pustaka logging yang mendukungnya, lihat dokumentasi NPM penggunaan instrumen otomatis Pino
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 Application Signals 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.
-
Di AmazonEKS, tidak diperlukan langkah lebih lanjut.
-
Di AmazonECS, tidak diperlukan langkah lebih lanjut.
-
Di AmazonEC2, lihat langkah 4 dalam prosedur diLangkah 3: Menginstrumentasikan aplikasi Anda dan memulainya.
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
untukOperation
dimensinya, maka pembatasan metrik sedang terjadi.Jika ada metrik yang dikumpulkan oleh Sinyal Aplikasi yang memiliki nilai
AllOtherRemoteOperations
untukRemoteOperation
dimensinya, maka pembatasan metrik sedang terjadi.
Optimalkan kontrol kardinalitas
Untuk mengoptimalkan kontrol kardinalitas Anda, Anda dapat melakukan hal berikut:
Buat aturan khusus 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, kami sarankan 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
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 } } } } }