Dokumen ini menjelaskan cara memodifikasi aplikasi Java untuk mengumpulkan data pelacakan dan metrik menggunakan framework OpenTelemetry open source, dan cara menulis log JSON terstruktur ke standard out. Dokumen ini juga memberikan informasi tentang contoh aplikasi Java Spring Boot yang dapat Anda instal dan jalankan. Aplikasi dikonfigurasi untuk menghasilkan metrik, trace, dan log. Langkah-langkahnya akan sama, terlepas dari apakah Anda menggunakan Framework Spring Boot atau tidak.
Tentang instrumentasi manual dan otomatis
Instrumentasi yang dijelaskan dalam dokumen ini mengandalkan instrumentasi otomatis OpenTelemetry untuk mengirim telemetri ke project Google Cloud Anda. Untuk Java, instrumentasi otomatis mengacu pada praktik memasukkan bytecode secara dinamis ke dalam library dan framework untuk menangkap telemetri. Instrumentasi otomatis dapat mengumpulkan telemetri untuk hal-hal seperti panggilan HTTP masuk dan keluar. Untuk mengetahui informasi selengkapnya, lihat Instrumentasi Otomatis untuk Java.
OpenTelemetry juga menyediakan API untuk menambahkan instrumentasi kustom ke kode Anda sendiri. OpenTelemetry menyebut hal ini sebagai instrumentasi manual. Dokumen ini tidak menjelaskan instrumentasi manual. Untuk contoh dan informasi tentang topik tersebut, lihat Instrumentasi manual.
Sebelum memulai
Aktifkan API Cloud Logging API, Cloud Monitoring API, and Cloud Trace API.
Melengkapi aplikasi untuk mengumpulkan trace, metrik, dan log
Untuk melengkapi aplikasi Anda guna mengumpulkan data pelacakan dan metrik, serta untuk menulis JSON terstruktur ke standard out, lakukan langkah-langkah berikut seperti yang dijelaskan di bagian selanjutnya dari dokumen ini:
- Mengonfigurasi aplikasi untuk menggunakan Agen Java OpenTelemetry
- Mengonfigurasi OpenTelemetry
- Mengonfigurasi logging terstruktur
- Menulis log terstruktur
Mengonfigurasi aplikasi Anda untuk menggunakan Agen Java OpenTelemetry
Untuk mengonfigurasi aplikasi agar dapat menulis log terstruktur serta mengumpulkan metrik dan data trace menggunakan OpenTelemetry, perbarui pemanggilan aplikasi Anda untuk menggunakan OpenTelemetry Java Agent. Metode instrumentasi aplikasi Anda ini dikenal sebagai instrumentasi otomatis karena tidak memerlukan modifikasi kode aplikasi.
Contoh kode berikut mengilustrasikan Dockerfile yang mendownload file JAR OpenTelemetry Java Agent dan mengupdate pemanggilan command line untuk meneruskan flag -javaagent
.
Atau, Anda juga dapat menetapkan tanda -javaagent
dalam variabel lingkungan JAVA_TOOL_OPTIONS
:
export JAVA_TOOL_OPTIONS="-javaagent:PATH/TO/opentelemetry-javaagent.jar"
Konfigurasi OpenTelemetry
Konfigurasi default untuk Agen Java OpenTelemetry mengekspor trace dan metrik menggunakan protokol OTLP. API ini juga mengonfigurasi OpenTelemetry untuk menggunakan format Konteks Rekaman Aktivitas W3C untuk menyebarkan konteks rekaman aktivitas. Konfigurasi ini memastikan bahwa span memiliki hubungan induk-turunan yang benar di dalam rekaman aktivitas.
Untuk mengetahui informasi selengkapnya dan opsi konfigurasi, lihat instrumentasi otomatis Java OpenTelemetry.
Mengonfigurasi logging terstruktur
Untuk menyertakan informasi rekaman aktivitas sebagai bagian dari log berformat JSON yang ditulis ke
output standar, konfigurasikan aplikasi Anda untuk menghasilkan log terstruktur dalam format
JSON. Sebaiknya gunakan Logback sebagai penerapan logging Anda.
Contoh kode berikut mengilustrasikan file logback.xml
yang dikonfigurasi untuk menghasilkan
log terstruktur JSON menggunakan Encoder Logstash:
Konfigurasi sebelumnya mengekstrak informasi tentang span aktif dari Mapped Diagnostic Context SLF4J dan menambahkan informasi tersebut sebagai atribut ke log. Atribut ini kemudian dapat digunakan untuk mengkorelasikan log dengan trace:
logging.googleapis.com/trace
: Nama resource trace yang terkait dengan entri log.logging.googleapis.com/spanId
: ID span dengan pelacakan yang dikaitkan dengan entri log.logging.googleapis.com/trace_sampled
: Nilai kolom ini harustrue
ataufalse
.
Untuk mengetahui informasi selengkapnya tentang kolom ini, lihat struktur
LogEntry
.
Menulis log terstruktur
Untuk menulis log terstruktur yang tertaut ke suatu rekaman aktivitas, gunakan logging API SLF4J. Misalnya, pernyataan berikut menunjukkan cara memanggil metode
Logger.info()
:
logger.info("handle /multi request with subRequests={}", subRequests);
Agen Java OpenTelemetry secara otomatis mengisi Konteks Diagnostik yang Dipetakan SLF4J dengan konteks span dari span aktif saat ini dalam OpenTelemetry Context. Konteks Diagnostik yang Dipetakan kemudian disertakan dalam log JSON seperti yang dijelaskan dalam Mengonfigurasi logging terstruktur.
Menjalankan aplikasi contoh yang dikonfigurasi untuk mengumpulkan telemetri
Aplikasi contoh menggunakan format yang tidak bergantung pada vendor, termasuk JSON untuk log dan OTLP untuk metrik dan trace, serta Spring Boot Framework. Untuk merutekan telemetri ke Google Cloud, contoh ini menggunakan Collector
OpenTelemetry yang dikonfigurasi dengan pengekspor Google. Aplikasi ini memiliki dua endpoint:
Endpoint
/multi
ditangani oleh fungsihandleMulti
. Generator beban di aplikasi mengeluarkan permintaan ke endpoint/multi
. Saat menerima permintaan, endpoint ini akan mengirimkan antara tiga hingga tujuh permintaan ke endpoint/single
di server lokal.Endpoint
/single
ditangani oleh fungsihandleSingle
. Saat menerima permintaan, endpoint ini akan tidur dalam waktu singkat, lalu merespons dengan string.
Mendownload dan men-deploy aplikasi
Untuk menjalankan contoh, lakukan hal berikut:
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Meng-cloning repository
git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-java
Buka direktori contoh:
cd opentelemetry-operations-java/examples/instrumentation-quickstart
Buat dan jalankan contoh:
docker compose up --abort-on-container-exit
Jika Anda tidak menjalankan Cloud Shell, jalankan aplikasi dengan variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
yang mengarah ke file kredensial. Kredensial Default Aplikasi menyediakan file kredensial di$HOME/.config/gcloud/application_default_credentials.json
.# Set environment variables export GOOGLE_CLOUD_PROJECT="PROJECT_ID" export GOOGLE_APPLICATION_CREDENTIALS="$HOME/.config/gcloud/application_default_credentials.json" export USERID="$(id -u)" # Run docker compose -f docker-compose.yaml -f docker-compose.creds.yaml up --abort-on-container-exit
Melihat metrik Anda
Instrumentasi OpenTelemetry di aplikasi contoh menghasilkan metrik Prometheus yang dapat Anda tampilkan menggunakan Metrics Explorer:
Prometheus/http_server_duration_milliseconds/histogram
mencatat durasi permintaan server dan menyimpan hasilnya dalam histogram.Prometheus/http_client_duration_milliseconds/histogram
mencatat durasi permintaan klien dan menyimpan hasilnya dalam histogram.
-
Di panel navigasi Konsol Google Cloud, pilih Monitoring, lalu pilih leaderboard Metrics Explorer:
- Pada elemen Metrik, luaskan menu Pilih metrik, masukkan
http_server
di panel filter, lalu gunakan submenu untuk memilih jenis dan metrik resource tertentu:- Di menu Active resources, pilih Prometheus Target.
- Di menu Active metric criteria, pilih Http.
- Di menu Metrik aktif, pilih metrik.
- Klik Terapkan.
- Konfigurasi cara data ditampilkan.
Jika pengukuran untuk metrik bersifat kumulatif, Metrics Explorer otomatis menormalisasi data yang diukur berdasarkan periode penyelarasan, sehingga diagram akan menampilkan rasio. Untuk mengetahui informasi selengkapnya, lihat Jenis, jenis, dan konversi.
Saat nilai bilangan bulat atau ganda diukur, seperti dengan dua metrik
counter
, Metrics Explorer otomatis menjumlahkan semua deret waktu. Untuk melihat data rute HTTP/multi
dan/single
, tetapkan menu pertama entri Aggregation ke None.Untuk informasi selengkapnya tentang cara mengonfigurasi diagram, lihat Memilih metrik saat menggunakan Metrics Explorer.
Melihat trace Anda
Untuk melihat data trace, lakukan langkah berikut:
-
Di panel navigasi konsol Google Cloud, pilih Trace, lalu pilih Trace explorer:
- Di diagram sebar, pilih rekaman aktivitas dengan URI
/multi
. Pada diagram Gantt di panel Trace details, pilih span yang berlabel
/multi
.Sebuah panel yang menampilkan informasi tentang permintaan HTTP akan terbuka. Detail ini mencakup metode, kode status, jumlah byte, dan agen pengguna pemanggil.
Untuk melihat log yang terkait dengan rekaman aktivitas ini, pilih tab Logs & Events.
Tab ini menunjukkan log individual. Untuk melihat detail entri log, luaskan entri log. Anda juga dapat mengklik View Logs dan melihat log menggunakan Logs Explorer.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan penjelajah Cloud Trace, lihat Menemukan dan menjelajahi trace.
Melihat log
Dari Logs Explorer, Anda dapat memeriksa log, dan Anda juga dapat melihat rekaman aktivitas terkait, jika ada.
-
Di panel navigasi konsol Google Cloud, pilih Logging, lalu pilih Logs Explorer:
Temukan log dengan deskripsi
handle /multi request
.Untuk melihat detail log, luaskan entri log.
Klik Traces pada entri log dengan pesan "handle /multi request", lalu pilih View trace details.
Panel Trace details akan terbuka dan menampilkan trace yang dipilih.
Untuk mengetahui informasi selengkapnya tentang penggunaan Logs Explorer, baca Melihat log menggunakan Logs Explorer.
Langkah selanjutnya
- OpenTelemetry
- Ringkasan OTLP
- Logging terstruktur
- Memecahkan Masalah Google Cloud Managed Service for Prometheus
- Memecahkan masalah Cloud Trace