Menginstrumentasikan aplikasi untuk Pemantauan Aplikasi

Anda dapat melengkapi aplikasi App Hub sehingga Google Cloud Observability melampirkan label khusus aplikasi ke metrik dan data trace yang dihasilkan aplikasi Anda. Untuk workload yang berjalan di Google Kubernetes Engine, Anda juga dapat mengekspor metrik server HTTP OpenTelemetry yang digunakan Application Monitoring untuk melaporkan tingkat traffic, rasio error server, dan latensi untuk permintaan HTTP.

Tentang label khusus aplikasi

Label khusus aplikasi mengacu pada label atau atribut yang dimasukkan ke dalam data log, metrik, atau trace. Label ini mengidentifikasi layanan atau workload yang menghasilkan data. Anda dapat menggunakan label khusus aplikasi seperti label lainnya. Misalnya, Anda dapat memfilter data menurut ID aplikasi. Telemetri yang dihasilkan oleh infrastruktur yang didukung secara otomatis menyertakan label ini. Dengan instrumentasi, metrik dan trace yang ditulis oleh aplikasi Anda dapat menyertakan label ini.

Di bagian ini, tafsirkan a.b.{x,y} sebagai a.b.x dan a.b.y.

Data metrik dari instrumentasi yang Anda tambahkan ke aplikasi dapat menyertakan label metrik berikut:

  • metric.labels.apphub_application_{container,id,location}
  • metric.labels.apphub_workload_{criticality_type,environment_type,id}

Span trace yang dihasilkan oleh instrumentasi yang Anda tambahkan ke aplikasi dapat menyertakan atribut resource berikut:

  • gcp.apphub.application.{container,id,location}
  • gcp.apphub.{workload,service}.{criticality_type,environment_type,id}

Tentang metrik server HTTP OpenTelemetry

Tidak ada metrik sistem untuk workload yang berjalan di Google Kubernetes Engine yang dapat melaporkan tingkat traffic, rasio error server, atau latensi untuk permintaan HTTP. Namun, nilai untuk sinyal emas ini dapat diperoleh dari metrik http.server.request.duration, yang otomatis dikumpulkan oleh library klien HTTP OpenTelemetry.

Pengekspor googlemanagedprometheus mengonversi metrik OpenTelemetry http.server.request.duration menjadi metrik Prometheus yang memiliki properti berikut:

  • Nama: prometheus/http_server_request_duration_seconds/histogram
  • Metrik: prometheus.googleapis.com/http_server_request_duration_seconds/histogram
  • Jenis resource: prometheus_target
  • Unit: s
  • Kind: CUMULATIVE
  • Jenis nilai: DISTRIBUTION

Jika project Google Cloud Anda berisi metrik http_server_request_duration_seconds, dasbor Pemantauan Aplikasi akan menampilkan tingkat traffic, rasio error server, dan latensi untuk permintaan HTTP.

Untuk mempelajari cara mengonfigurasi aplikasi Anda agar mengekspor metrik http_server_request_duration_seconds, lihat bagian Menggunakan OpenTelemetry di Kubernetes dalam dokumen ini.

Menambahkan label aplikasi ke data metrik

Google Cloud Observability berupaya mengidentifikasi sumber metrik Prometheus dengan membandingkan atribut yang dilampirkan ke metrik Prometheus yang dikirim ke project Anda dengan data yang ditampilkan dari App Hub API. Bagian selanjutnya mencantumkan konfigurasi yang memungkinkan Google Cloud Observability mengidentifikasi aplikasi App Hub.

Menggunakan OpenTelemetry di Kubernetes

Agar Google Cloud Observability melampirkan label aplikasi ke data metrik yang dihasilkan oleh workload aplikasi Anda yang berjalan di Google Kubernetes Engine, lakukan hal berikut:

  1. Instrumentasikan aplikasi dengan OpenTelemetry.

  2. Deploy Collector buatan Google atau OpenTelemetry Collector, dan konfigurasikan collector sebagai berikut:

    • Ekspor data metrik dengan pengekspor googlemanagedprometheus.
    • Konfigurasikan pemroses k8sattributes untuk mengekstrak metadata, seperti namespace, dari lingkungan.
    • Konfigurasikan pemroses transform/collision untuk menetapkan atribut project_id, location, cluster, dan namespace.
    • Konfigurasikan pemroses transform/aco-gke untuk mengisi label top_level_controller_name dan top_level_controller_type.

    Sebagai contoh, lihat otlp-k8s-ingest/config/collector.yaml, yang merupakan file konfigurasi untuk Kolektor buatan Google. Untuk mempelajari kolektor ini lebih lanjut, lihat Men-deploy Kolektor OpenTelemetry Buatan Google di GKE.

  3. Daftarkan workload aplikasi Anda ke App Hub.

Menggunakan Google Cloud Managed Service for Prometheus di GKE

Agar Google Cloud Observability melampirkan label aplikasi ke data metrik yang dihasilkan oleh workload aplikasi Anda yang berjalan di cluster Google Kubernetes Engine, lakukan hal berikut:

  1. Gunakan Google Cloud Managed Service for Prometheus dengan koleksi terkelola.

  2. Deploy workload Anda di cluster Google Kubernetes Engine yang versinya minimal 1.32.1-gke.1439000.

  3. Daftarkan workload aplikasi Anda ke App Hub.

Google Cloud Managed Service for Prometheus menemukan nilai label aplikasi melalui metadata penemuan layanan, lalu menambahkan label top_level_controller_{name,type} ke targetLabels.metadata. Selama penyerapan metrik, Google Cloud Observability menggunakan label top_level_controller_{name,type} dan App Hub API untuk mengidentifikasi aplikasi App Hub Anda dan menambahkan label yang sesuai ke data metrik Anda.

Menggunakan Cloud Run

Agar Google Cloud Observability melampirkan label aplikasi ke data metrik yang dihasilkan oleh workload Cloud Run Anda, lakukan hal berikut:

  1. Lakukan instrumentasi pada aplikasi Anda menggunakan OpenTelemetry atau Managed Service for Prometheus sidecar untuk Cloud Run. Untuk mengetahui informasi tentang pendekatan ini, lihat dokumen berikut:

  2. Daftarkan workload aplikasi Anda ke App Hub.

Memverifikasi label metrik

Untuk memverifikasi bahwa aplikasi Anda mengirim metrik Prometheus ke project Anda, lakukan hal berikut:

  1. Pastikan aplikasi Anda mengirim metrik Prometheus ke project Anda:
    1. Di konsol Google Cloud , buka halaman  Metrics explorer:

      Buka Metrics explorer

      Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

    2. Di toolbar konsol Google Cloud , pilih project Google Cloud Anda. Untuk konfigurasi App Hub, pilih project host App Hub atau project pengelolaan folder khusus aplikasi.
    3. Pada elemen Metrik, luaskan menu Pilih metrik, masukkan Prometheus Target di kolom filter, lalu gunakan submenu untuk memilih jenis dan metrik resource tertentu:
      1. Di menu Active resources, pilih Prometheus Target.
      2. Untuk memilih metrik, gunakan menu Kategori metrik aktif dan Metrik aktif.
      3. Klik Terapkan.
    4. Untuk menambahkan filter, yang menghapus deret waktu dari hasil kueri, gunakan elemen Filter.

    5. Konfigurasi cara data dilihat.

      Untuk melihat label, luaskan menu Filter. Setiap entri dalam menu Filter sesuai dengan label.

      Untuk informasi selengkapnya tentang cara mengonfigurasi diagram, lihat Memilih metrik saat menggunakan Metrics Explorer.

    Jika Anda tidak melihat metrik Prometheus, tinjau konfigurasi Anda.

Jika metrik Prometheus Anda tidak berisi label aplikasi, lakukan hal berikut:

  1. Pastikan Anda mendaftarkan workload atau layanan Anda ke App Hub.

  2. Periksa log Anda untuk menentukan apakah ada error.

    Misalnya, jika Anda men-deploy OpenTelemetry Collector atau Collector buatan Google dan berjalan di Google Kubernetes Engine, Anda dapat melakukan hal berikut:

    1. Di konsol Google Cloud , buka halaman Workloads:

      Buka Workloads

      Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Kubernetes Engine.

    2. Pilih deployment kolektor Anda, lalu pilih tab Logs.
  3. Jika Anda menggunakan OpenTelemetry Collector atau Collector buatan Google, tinjau konfigurasi collector Anda. Kolektor Anda harus melakukan hal berikut:

    • Ekspor data metrik dengan pengekspor googlemanagedprometheus.
    • Konfigurasikan pemroses k8sattributes untuk mengekstrak metadata, seperti namespace, dari lingkungan.
    • Konfigurasikan pemroses transform/collision untuk menetapkan atribut project_id, location, cluster, dan namespace.
    • Konfigurasikan pemroses transform/aco-gke untuk mengisi label top_level_controller_name dan top_level_controller_type.

    Sebagai contoh, lihat file konfigurasi Collector yang dibuat Google: otlp-k8s-ingest/config/collector.yaml.

Menambahkan atribut aplikasi ke span trace

Anda tidak menginstrumentasikan aplikasi sedemikian rupa sehingga atribut khusus aplikasi dilampirkan ke span yang dikirim ke project Google Cloud Anda. Sebagai gantinya, Google Cloud Observability menggunakan atribut resource OpenTelemetry dan App Hub API untuk mengidentifikasi aplikasi App Hub yang terkait dengan span, lalu menambahkan atribut khusus aplikasi sebelum menyimpan span.

Agar Google Cloud Observability melampirkan atribut resource khusus aplikasi ke data trace yang dihasilkan oleh layanan dan workload aplikasi Anda, lakukan semua hal berikut:

Untuk mengetahui informasi selengkapnya tentang atribut ini, lihat Google Cloud Konvensi semantik App Hub.

Atribut yang diperlukan

Bagian ini berlaku untuk konfigurasi yang tidak menggunakan salah satu kolektor yang direkomendasikan. Misalnya, Anda mungkin ingin menulis kolektor sendiri, atau mungkin lebih memilih untuk mengekspor data trace secara langsung.

Atribut yang mengidentifikasi project dan lokasi resource Anda

Tetapkan atribut berikut:

  • Tetapkan cloud.provider ke "gcp".
  • cloud.account.id: Tetapkan ke project ID Anda.
  • cloud.availability_zone atau cloud.region: Tetapkan ke zona atau region tempat resource Anda berada. Anda dapat menetapkan kedua atribut.

Detektor resource dapat membantu Anda menetapkan atribut sebelumnya:

Atribut untuk workload Google Kubernetes Engine

Untuk workload Google Kubernetes Engine, konfigurasikan kolektor atau instrumentasi Anda untuk melakukan hal berikut:

  • Ekstrak metadata, seperti namespace, dari lingkungan.
  • Mengekstrak metadata yang relevan dari pemroses k8sattributes.
  • Tetapkan atribut project_id, location, cluster, dan namespace untuk metrik.
  • Tetapkan label top_level_controller_name dan top_level_controller_type untuk metrik.

Untuk contoh berbasis kolektor, lihat otlp-k8s-ingest/config/collector.yaml. Kolektor tersebut menggunakan pemroses k8sattributesprocessor.

Atribut untuk workload VM

Jika Anda men-deploy aplikasi di VM, VM tersebut harus dikaitkan dengan Grup Instance Terkelola (MIG). Anda juga harus menyertakan atribut berikut:

  • gcp.gce.instance_group_manager.name
  • gcp.gce.instance_group_manager.region atau gcp.gce.instance_group_manager.zone