Dokumen ini menjelaskan cara mengubah aplikasi JavaScript Node.js untuk mengumpulkan data metrik dan trace menggunakan framework OpenTelemetry open source, dan cara menulis log JSON terstruktur ke output standar. Dokumen ini juga memberikan informasi tentang aplikasi Node.js contoh yang dapat Anda instal dan jalankan. Aplikasi ini menggunakan framework web Fastify dan dikonfigurasi untuk menghasilkan metrik, rekaman aktivitas, dan log.
Untuk mempelajari lebih lanjut instrumentasi, lihat dokumen berikut:
Tentang instrumentasi manual dan tanpa kode
Untuk bahasa ini, OpenTelemetry mendefinisikan instrumentasi tanpa kode sebagai praktik mengumpulkan telemetri dari library dan framework tanpa melakukan perubahan kode. Namun, Anda harus menginstal modul dan menetapkan variabel lingkungan.
Dokumen ini tidak menjelaskan instrumentasi tanpa kode. Untuk mengetahui informasi tentang topik tersebut, lihat Pelengkapan kode tanpa kode JavaScript.
Untuk mengetahui informasi umum, lihat Instrumentasi OpenTelemetry untuk Node.
Sebelum memulai
Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.
Melengkapi aplikasi untuk mengumpulkan rekaman aktivitas, metrik, dan log
Untuk menginstrumentasi aplikasi Anda guna mengumpulkan data rekaman aktivitas dan metrik, serta menulis JSON terstruktur ke output standar, lakukan langkah-langkah berikut seperti yang dijelaskan di bagian selanjutnya dalam dokumen ini:
- Mengonfigurasi OpenTelemetry
- Mengonfigurasi aplikasi untuk memuat ulang konfigurasi OpenTelemetry
- Mengonfigurasi logging terstruktur
- Menulis log terstruktur
Mengonfigurasi OpenTelemetry
Konfigurasi default untuk OpenTelemetry Node.js SDK mengekspor trace menggunakan protokol OTLP. Selain itu, kode ini mengonfigurasi OpenTelemetry untuk menggunakan format Konteks Trace W3C untuk mempropagasi konteks trace. Konfigurasi ini memastikan bahwa rentang memiliki hubungan induk-turunan yang benar dalam rekaman aktivitas.
Contoh kode berikut menggambarkan modul JavaScript untuk menyiapkan OpenTelemetry.
Untuk melihat contoh lengkapnya, klik more_vert Lainnya, lalu pilih Lihat di GitHub.
Contoh kode sebelumnya mengonfigurasi OpenTelemetry untuk mengekspor metrik menggunakan protokol OTLP, dan menggunakan paket @opentelemetry/auto-instrumentations-node
untuk mengonfigurasi semua instrumentasi Node.js yang tersedia.
Untuk memastikan semua telemetri yang tertunda dibersihkan dan koneksi ditutup dengan benar sebelum aplikasi dimatikan, handler SIGTERM
memanggil shutdown
.
Untuk mengetahui informasi dan opsi konfigurasi selengkapnya, lihat Konfigurasi Instrumentasi Tanpa Kode.
Mengonfigurasi aplikasi Anda untuk memuat ulang konfigurasi OpenTelemetry
Untuk mengonfigurasi aplikasi agar menulis log terstruktur dan mengumpulkan data metrik dan trace menggunakan OpenTelemetry, perbarui pemanggilan aplikasi Anda untuk memuat modul instrumentasi terlebih dahulu dengan tanda --require
Node.js. Menggunakan
flag --require
memastikan OpenTelemetry diinisialisasi sebelum aplikasi Anda
dimulai. Untuk mengetahui informasi selengkapnya, lihat Mulai Menggunakan OpenTelemetry Node.js.
Contoh kode berikut menggambarkan Dockerfile yang meneruskan tanda --require
:
Mengonfigurasi logging terstruktur
Untuk menyertakan informasi rekaman aktivitas sebagai bagian dari log berformat JSON yang ditulis ke output standar, konfigurasi aplikasi Anda untuk menghasilkan log terstruktur dalam format JSON.
Fastify menggunakan framework log Pino dan menyediakan logger di setiap
handler permintaan. Contoh kode berikut menggambarkan objek Pino LoggerOptions
yang mengonfigurasi aplikasi untuk menghasilkan log terstruktur JSON:
Konfigurasi sebelumnya mengekstrak informasi tentang rentang aktif dari pesan log, lalu menambahkan informasi tersebut sebagai atribut ke log terstruktur JSON. Atribut ini kemudian dapat digunakan untuk mengorelasikan log dengan rekaman aktivitas:
logging.googleapis.com/trace
: Nama resource rekaman aktivitas yang terkait dengan entri log.logging.googleapis.com/spanId
: ID rentang dengan rekaman aktivitas yang terkait dengan entri log.logging.googleapis.com/trace_sampled
: Nilai kolom ini harustrue
ataufalse
.
Untuk mengetahui informasi selengkapnya tentang kolom ini, lihat struktur LogEntry
.
Untuk menggunakan konfigurasi Pino dengan Fastify, teruskan objek konfigurasi logger saat membuat aplikasi Fastify:
Menulis log terstruktur
Untuk menulis log terstruktur yang ditautkan ke rekaman aktivitas, gunakan logger Pino yang disediakan Fastify. Misalnya, pernyataan berikut menunjukkan cara memanggil
metode Logger.info()
:
request.log.info({subRequests}, 'handle /multi request');
OpenTelemetry otomatis mengisi entri log Pino dengan konteks span dari span aktif saat ini di Konteks OpenTelemetry. Konteks rentang ini kemudian disertakan dalam log JSON seperti yang dijelaskan dalam Mengonfigurasi logging terstruktur.
Menjalankan aplikasi contoh yang dikonfigurasi untuk mengumpulkan telemetri
Aplikasi contoh menggunakan format netral vendor, termasuk JSON untuk log dan OTLP untuk metrik dan rekaman aktivitas, serta framework Fastify. Untuk merutekan
telemetri ke Google Cloud, contoh ini menggunakan Collector
OpenTelemetry yang dikonfigurasi
dengan eksportir Google. Aplikasi ini memiliki dua endpoint:
Endpoint
/multi
ditangani oleh fungsihandleMulti
. Generator beban di aplikasi mengirimkan permintaan ke endpoint/multi
. Saat menerima permintaan, endpoint ini mengirimkan antara tiga hingga tujuh permintaan ke endpoint/single
di server lokal.Endpoint
/single
ditangani oleh fungsihandleSingle
. Saat menerima permintaan, endpoint ini akan tertidur selama beberapa saat, lalu merespons dengan string.
Mendownload dan men-deploy aplikasi
Untuk menjalankan contoh, lakukan hal berikut:
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Meng-cloning repository
git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-js
Buka direktori contoh:
cd opentelemetry-operations-js/samples/instrumentation-quickstart
Buat dan jalankan sampel:
docker compose up --abort-on-container-exit
Jika Anda tidak menjalankan di 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 lihat 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 konsol Google Cloud , buka halaman leaderboard Metrics explorer:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.
- Di toolbar konsol Google Cloud , pilih project Google Cloud Anda. Untuk konfigurasi App Hub, pilih project host App Hub atau project pengelolaan folder yang mendukung aplikasi.
- 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 categories, pilih Http.
- Di menu Metrik aktif, pilih metrik.
- Klik Terapkan.
- Konfigurasi cara data dilihat.
Jika pengukuran untuk metrik bersifat kumulatif, Metrics Explorer akan otomatis menormalisasi data yang diukur berdasarkan periode perataan, sehingga diagram menampilkan rasio. Untuk mengetahui informasi selengkapnya, lihat Jenis, tipe, dan konversi.
Saat nilai bilangan bulat atau ganda diukur, seperti dengan dua metrik
counter
, Metrics Explorer akan otomatis menjumlahkan semua deret waktu. Untuk melihat data untuk 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
Mungkin perlu waktu beberapa menit sebelum data rekaman aktivitas Anda tersedia. Misalnya, saat data rekaman aktivitas diterima oleh project Anda, Google Cloud Observability mungkin perlu membuat database untuk menyimpan data tersebut. Pembuatan database dapat memerlukan waktu beberapa menit dan selama periode tersebut, tidak ada data rekaman aktivitas yang tersedia untuk dilihat.
Untuk melihat data rekaman aktivitas, lakukan hal berikut:
-
Di konsol Google Cloud , buka halaman Trace explorer:
Anda juga dapat menemukan halaman ini dengan menggunakan kotak penelusuran.
- Di bagian tabel halaman, pilih baris dengan nama rentang
/multi
. Pada diagram Gantt di panel Detail rekaman aktivitas, pilih rentang yang diberi label
/multi
.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 Log & Peristiwa.
Tab ini menampilkan log individual. Untuk melihat detail entri log, luaskan entri log. Anda juga dapat mengklik Lihat Log dan melihat log menggunakan Logs Explorer.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan penjelajah Cloud Trace, lihat Menemukan dan menjelajahi rekaman aktivitas.
Melihat log
Dari Logs Explorer, Anda dapat memeriksa log, dan Anda juga dapat melihat rekaman aktivitas terkait, jika ada.
-
Di konsol Google Cloud , buka halaman Logs Explorer:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
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 rekaman aktivitas yang dipilih.
Data log Anda mungkin tersedia beberapa menit sebelum data rekaman aktivitas Anda tersedia. Jika Anda mengalami error saat melihat data rekaman aktivitas baik dengan menelusuri rekaman aktivitas menurut ID atau dengan mengikuti langkah-langkah dalam tugas ini, tunggu satu atau dua menit, lalu coba lagi tindakan tersebut.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan Logs Explorer, lihat Melihat log menggunakan Logs Explorer.
Langkah berikutnya
- OpenTelemetry
- Spesifikasi OTLP
- Logging terstruktur
- Memecahkan masalah Managed Service for Prometheus
- Memecahkan masalah Cloud Trace