Dokumen ini menjelaskan cara mengubah aplikasi Python untuk mengumpulkan data trace dan metrik menggunakan framework OpenTelemetry open source, dan cara menulis log JSON terstruktur ke output standar. Dokumen ini juga memberikan informasi tentang contoh aplikasi Python yang dapat Anda instal dan jalankan. Aplikasi ini menggunakan framework web Flask dan dikonfigurasi untuk menghasilkan metrik, rekaman aktivitas, dan log.
Untuk mempelajari instrumentasi lebih lanjut, lihat dokumen berikut:
Tentang instrumentasi manual dan otomatis
Untuk bahasa ini, OpenTelemetry mendefinisikan instrumentasi otomatis sebagai praktik pengumpulan telemetri dari library dan framework tanpa membuat perubahan kode. Namun, Anda harus menginstal modul dan menetapkan variabel lingkungan.
Dokumen ini tidak menjelaskan instrumentasi otomatis. Untuk informasi tentang topik tersebut, lihat Instrumentasi Otomatis untuk Python.
Untuk informasi umum, lihat Instrumentasi OpenTelemetry untuk Python.
Sebelum memulai
Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.
Menginstrumentasikan aplikasi untuk mengumpulkan trace, metrik, dan log
Untuk melengkapi 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 berikutnya dalam dokumen ini:
Mengonfigurasi OpenTelemetry
Contoh aplikasi ini dikonfigurasi untuk menggunakan OpenTelemetry Python SDK guna mengekspor trace dan metrik menggunakan protokol OTLP. Secara default, OpenTelemetry Python SDK menggunakan format Konteks Trace W3C untuk menyebarkan konteks trace, yang memastikan bahwa span memiliki hubungan induk-turunan yang benar dalam trace.
Contoh kode berikut mengilustrasikan modul Python untuk menyiapkan OpenTelemetry. Untuk melihat contoh lengkapnya, klik more_vert Lainnya, lalu pilih Lihat di GitHub.
Aplikasi Flask mengandalkan Gunicorn untuk menayangkan permintaan HTTP dengan mengikuti rekomendasi dalam panduan Men-deploy ke Produksi Flask.
Gunicorn memulai beberapa salinan aplikasi Anda yang berjalan dalam proses pekerja independen
untuk meningkatkan throughput. Untuk memastikan metrik dari proses pekerja tidak bertentangan satu sama lain, sebaiknya setiap proses pekerja menetapkan nilai unik untuk atribut resource service.instance.id
. Salah satu cara untuk melakukannya adalah dengan menyertakan
ID proses dalam service.instance.id
. Untuk mengetahui informasi selengkapnya, lihat
Tabrakan deret waktu.
Untuk informasi selengkapnya dan opsi konfigurasi, lihat instrumentasi Python OpenTelemetry.
Mengonfigurasi logging terstruktur
Untuk menulis log terstruktur yang ditautkan ke rekaman aktivitas, konfigurasikan aplikasi Anda untuk
menghasilkan log berformat JSON ke output standar dengan kunci yang berisi informasi
rekaman aktivitas. Contoh kode berikut mengilustrasikan cara mengonfigurasi library
logging
standar untuk menghasilkan log terstruktur JSON menggunakan
library python-json-logger
, dan cara menggunakan
paket opentelemetry-instrumentation-logging
untuk menyertakan informasi
pelacakan.
Konfigurasi sebelumnya mengekstrak informasi tentang span aktif dari pesan log, lalu menambahkan informasi tersebut sebagai atribut ke log terstruktur JSON. Atribut ini kemudian dapat digunakan untuk mengaitkan log dengan rekaman aktivitas:
logging.googleapis.com/trace
: Nama resource rekaman aktivitas yang terkait dengan entri log.logging.googleapis.com/spanId
: ID span 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
.
Menjalankan aplikasi contoh yang dikonfigurasi untuk mengumpulkan telemetri
Aplikasi contoh menggunakan format yang netral vendor, termasuk JSON untuk log dan OTLP
untuk metrik dan rekaman aktivitas. Telemetri dari aplikasi dirutekan ke Google Cloud menggunakan
Collector
OpenTelemetry yang dikonfigurasi dengan pengekspor Google. API ini menggunakan
Flask untuk menayangkan permintaan HTTP, dan library requests untuk
membuat permintaan HTTP. Untuk membuat metrik dan rekaman aktivitas untuk klien dan
server HTTP, aplikasi contoh menginstal
library instrumentasi
opentelemetry-instrumentation-flask
dan
opentelemetry-instrumentation-requests
:
Aplikasi ini memiliki dua endpoint:
Endpoint
/multi
ditangani oleh fungsimulti
. Generator beban di aplikasi mengirimkan 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 fungsisingle
. Saat menerima permintaan, endpoint ini akan tidur selama penundaan singkat, 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-python
Buka direktori contoh:
cd opentelemetry-operations-python/samples/instrumentation-quickstart
Build dan jalankan contoh:
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
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.
- Pada elemen Metric, luaskan menu Select a metric,
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 Active metrics, pilih metrik.
- Klik Terapkan.
- Konfigurasikan cara data dilihat.
Jika pengukuran untuk suatu metrik bersifat kumulatif, Metrics Explorer akan otomatis menormalisasi data yang diukur berdasarkan periode penyelarasan, sehingga diagram akan 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
Untuk melihat data rekaman aktivitas, lakukan hal berikut:
-
Di konsol Google Cloud, buka halaman Trace Explorer:
Anda juga dapat menemukan halaman ini menggunakan kotak penelusuran.
- Pada diagram sebar, pilih rekaman aktivitas dengan URI
/multi
. Pada diagram Gantt di panel Trace details, pilih rentang yang berlabel
/multi
.Panel akan terbuka dan menampilkan informasi tentang permintaan HTTP. 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 menampilkan setiap log. Untuk melihat detail entri log, luaskan entri log. Anda juga dapat mengklik View Logs dan melihat log menggunakan Logs Explorer.
Untuk informasi selengkapnya tentang cara menggunakan Cloud Trace Explorer, lihat Menemukan dan menjelajahi trace.
Melihat log
Dari Logs Explorer, Anda dapat memeriksa log, dan 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.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan Logs Explorer, lihat Melihat log menggunakan Logs Explorer.
Langkah selanjutnya
- OpenTelemetry
- Spesifikasi OTLP
- Logging terstruktur
- Memecahkan masalah Managed Service for Prometheus
- Memecahkan masalah Cloud Trace