Memilih pendekatan instrumentasi

Anda dapat memilih pendekatan instrumentasi yang paling efektif untuk aplikasi Anda berdasarkan platform komputasi dan persyaratan telemetri Anda. Google Cloud Panduan ini memberikan rekomendasi untuk Google Kubernetes Engine (GKE), Compute Engine, dan Cloud Run, yang membantu Anda memutuskan antara Kolektor OpenTelemetry Buatan Google, Agen Operasional, dan ekspor OpenTelemetry dalam proses langsung.

Dokumen ini memberikan rekomendasi umum, serta panduan untuk platform berikut:

Untuk aplikasi contoh, lihat Contoh dan panduan penerapan.

Rekomendasi di halaman ini bukanlah satu-satunya solusi, dan pendekatan lain dapat berhasil. Untuk panduan tambahan, hubungi Cloud Customer Care.

Rekomendasi umum

Bagian ini berisi rekomendasi umum tentang cara melengkapi aplikasi Anda. Untuk panduan khusus platform, lihat Rekomendasi platform.

  • Data log: Sebaiknya gunakan framework yang dapat dikonfigurasi untuk menghasilkan log terstruktur JSON untuk Cloud Logging. Untuk menulis data log, sebaiknya lakukan hal berikut:

  • Data metrik: Sebaiknya gunakan OpenTelemetry atau library klien Prometheus:

    • OpenTelemetry menyediakan framework open source dan library klien yang tidak bergantung pada vendor untuk menginstrumentasikan aplikasi untuk metrik.
    • Library klien Prometheus (Go, Java, Python, dll.) menghasilkan metrik yang dapat diekspos di endpoint HTTP dan di-scrape oleh agen.
  • Data trace: Sebaiknya gunakan OpenTelemetry untuk membuat data trace terdistribusi dari kode aplikasi Anda.

Arsitektur pengumpulan OpenTelemetry

Saat melengkapi aplikasi dengan library OpenTelemetry, Anda dapat merutekan telemetri melalui OpenTelemetry Collector mandiri atau mengekspor langsung dari proses aplikasi Anda. File konfigurasi OpenTelemetry Collector mengontrol cara kolektor menerima, memproses, dan mengekspor telemetri. Secara umum, sebaiknya kolektor menerima dan mengekspor telemetri menggunakan OpenTelemetry Protocol (OTLP). Telemetry (OTLP) API mengimplementasikan protokol ini.

Ada dua pendekatan mendasar untuk mengirim telemetri ke project Google Cloud Anda:

  • Ekspor berbasis kolektor (netral vendor): Anda menginstrumentasikan kode aplikasi dengan OpenTelemetry SDK dan menggunakan pengekspor OTLP dalam proses untuk mengirim data ke kolektor OpenTelemetry, seperti Kolektor OpenTelemetry Buatan Google atau penerima Agen Operasional. Kolektor menerima telemetri dan meneruskannya ke project Google Cloud Anda. Kode aplikasi Anda tetap sepenuhnya netral terhadap vendor.

  • Ekspor langsung (khusus vendor): Anda melengkapi kode aplikasi dengan SDK OpenTelemetry dan mengonfigurasi OpenTelemetry untuk mengirim telemetri ke project Anda menggunakan Telemetry API. Anda tidak perlu men-deploy kolektor, tetapi kode aplikasi Anda menyertakan dependensi khusus vendor.

Sebaiknya gunakan kolektor OpenTelemetry jika lingkungan komputasi Anda mendukungnya. Untuk lingkungan yang tidak memungkinkan menjalankan proses kolektor terpisah, gunakan ekspor langsung dalam proses.

Rekomendasi platform

Karena lingkungan komputasi Google Cloud memiliki kemampuan siklus proses dan sidecar yang berbeda, pola pengumpulan yang optimal bervariasi menurut platform. Bagian berikut memberikan rekomendasi khusus untuk lingkungan deployment Anda.

GKE

Untuk mengetahui informasi umum tentang GKE, lihat Ringkasan GKE.

Jenis Rekomendasi
Metrik

Sebaiknya gunakan Google Cloud Managed Service for Prometheus.

Untuk instrumentasi, lakukan salah satu hal berikut:

Trace

Lakukan tindakan berikut:

  1. Men-deploy Kolektor OpenTelemetry Buatan Google di Google Kubernetes Engine.

    Kolektor menerima data trace dari pengekspor OTLP dalam proses SDK, memproses data tersebut, lalu mengirimkan data yang diproses ke project Google Cloud Anda menggunakan Telemetry (OTLP) API.

  2. Gunakan OpenTelemetry SDK dan pengekspor OTLP untuk bahasa Anda.
Log

Konfigurasikan aplikasi Anda untuk menghasilkan log terstruktur JSON ke stdout dan stderr. Untuk mengetahui daftar framework, lihat Framework logging yang direkomendasikan.

GKE mengumpulkan log yang ditulis ke stdout dan stderr secara otomatis. Untuk mengetahui informasi selengkapnya, lihat Tentang log GKE.

Compute Engine

Untuk informasi umum tentang Compute Engine, lihat Instance virtual machine.

Jenis Rekomendasi
Metrik dan Trace

Lakukan tindakan berikut:

  1. Menggunakan Agen Operasional untuk mengumpulkan metrik dan trace.

    Sebagai contoh, lihat Mengumpulkan metrik dan trace OpenTelemetry Protocol (OTLP). Panduan ini menjelaskan cara mengonfigurasi Agen Operasional untuk menerima data metrik dan trace dari pengekspor OTLP dalam proses SDK, mengubah data tersebut, lalu mengirim data ke project Google Cloud Anda. Data metrik dikirim menggunakan Cloud Monitoring API dan data trace dikirim menggunakan Cloud Trace API.

  2. Gunakan OpenTelemetry SDK dan pengekspor OTLP untuk bahasa Anda.

Atau, jika Anda hanya ingin mengonfigurasi pengumpulan untuk metrik berformat Prometheus, gunakan penerima Prometheus Agen Operasional untuk mengumpulkan metrik yang diinstrumentasikan menggunakan library klien Prometheus atau OpenTelemetry SDK.

Log

Lakukan tindakan berikut:

  1. Konfigurasikan aplikasi Anda untuk menghasilkan log terstruktur JSON ke file. Untuk mengetahui daftar framework, lihat Framework logging yang direkomendasikan.
  2. Menginstal Agen Operasional dan mengonfigurasi penerima. Misalnya, lihat Penerima logging.

Cloud Run

Untuk mengetahui informasi umum tentang Cloud Run, lihat Apa itu Cloud Run.

Jenis Rekomendasi
Metrik dan Trace

Lakukan tindakan berikut:

  1. Gunakan OpenTelemetry SDK dan pengekspor OTLP untuk bahasa Anda.
  2. Men-deploy file bantuan OpenTelemetry untuk mengumpulkan metrik dan trace.

    Untuk mengetahui contohnya, lihat dokumen berikut:

  3. Untuk layanan Cloud Run Anda, gunakan penagihan berbasis instance. Dengan penagihan berbasis instance, CPU dialokasikan untuk seluruh siklus proses instance, yang diperlukan karena instrumentasi OpenTelemetry melakukan pemrosesan latar belakang. Untuk mengetahui informasi selengkapnya, lihat Setelan penagihan untuk layanan Cloud Run.

Atau, jika Anda hanya ingin mengonfigurasi pengumpulan untuk metrik berformat Prometheus, gunakan sidecar Prometheus untuk Cloud Run guna mengumpulkan metrik yang diinstrumentasikan menggunakan library klien Prometheus atau OpenTelemetry SDK.

Log

Konfigurasikan aplikasi Anda untuk menghasilkan log terstruktur JSON ke stdout dan stderr. Untuk mengetahui daftar framework, lihat Framework logging yang direkomendasikan.

Cloud Run mengumpulkan log yang ditulis ke stdout dan stderr secara otomatis. Untuk mengetahui informasi selengkapnya, lihat Menulis log container.

Cloud Run Functions

Untuk mengetahui informasi umum tentang Cloud Run Functions, lihat Ringkasan Cloud Run Functions.

Jenis Rekomendasi
Metrik Menulis data metrik secara langsung tidak didukung di Cloud Run Functions. Anda dapat membuat metrik berbasis log.
Trace Gunakan OpenTelemetry SDK dan pengekspor OTLP untuk bahasa Anda.
Log

Konfigurasikan aplikasi Anda untuk menghasilkan log terstruktur JSON ke stdout dan stderr. Untuk mengetahui daftar framework, lihat Framework logging yang direkomendasikan.

Cloud Run Functions mengumpulkan log yang ditulis ke stdout dan stderr secara otomatis. Untuk mengetahui informasi selengkapnya, lihat Cloud Run Functions: Ringkasan pemantauan dan logging.

App Engine

Untuk informasi umum tentang App Engine, lihat Ringkasan App Engine.

Jenis Rekomendasi
Metrik Gunakan OpenTelemetry SDK dan pengekspor OTLP untuk bahasa Anda.
Trace Gunakan OpenTelemetry SDK dan pengekspor OTLP untuk bahasa Anda.
Log

Konfigurasikan aplikasi Anda untuk menghasilkan log terstruktur JSON ke stdout dan stderr. Untuk mengetahui daftar framework, lihat Framework logging yang direkomendasikan.

App Engine mengumpulkan log yang ditulis ke stdout dan stderr secara otomatis. Untuk mengetahui informasi selengkapnya, lihat Menulis dan menampilkan log.

Contoh dan panduan penerapan

Dokumentasi OpenTelemetry

Bagian ini menyediakan link ke OpenTelemetry SDK dan pengekspor OTLP dalam berbagai bahasa.

Referensi umum:

Go

Java

JavaScript

Python