Men-deploy Pengumpul OpenTelemetry Buatan Google di Compute Engine

Dokumen ini menunjukkan cara menjalankan Google-Built OpenTelemetry Collector di Compute Engine untuk mengumpulkan log, metrik, dan trace OTLP dari aplikasi yang diinstrumentasi, lalu mengekspor data tersebut ke Google Cloud.

Sebelum memulai

Menjalankan Google-Built OpenTelemetry Collector memerlukan resource berikut:

  1. Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  8. Instance Compute Engine. Jika Anda tidak memiliki instance Compute Engine ikuti petunjuk di Membuat dan memulai instance Compute Engine.
  9. Penginstalan gcloud. Untuk mengetahui informasi tentang cara menginstal gcloud, lihat Menginstal gcloud CLI.

Mengonfigurasi izin untuk Collector

Secara default, instance Compute Engine menggunakan akun layanan Compute Engine default, PROJECT_NUMBER-compute@developer.gserviceaccount.com. Akun layanan ini biasanya memiliki peran Identity and Access Management (IAM) yang diperlukan untuk menulis metrik dan log yang dijelaskan dalam dokumen ini:

Jika Anda memilih untuk menggunakan akun layanan yang dikelola pengguna, bukan akun default, akun tersebut harus diberi peran yang sama. Untuk mengetahui informasi selengkapnya, lihat Akun layanan.

Menginstal Collector

Untuk menginstal Google-Built OpenTelemetry Collector sebagai paket untuk instance Compute Engine, selesaikan langkah-langkah berikut.

Debian &Ubuntu

  1. Buka koneksi terminal ke instance VM Anda menggunakan SSH atau alat serupa dan pastikan Anda memiliki akses sudo.

  2. Jalankan perintah berikut untuk menyiapkan repositori paket:

    sudo mkdir -p /etc/apt/keyrings
    sudo curl -o /etc/apt/keyrings/otelcol-google.asc https://packages.cloud.google.com/apt/doc/apt-key.gpg
    cat <<EOF | sudo tee /etc/apt/sources.list.d/otelcol-google.list
    deb [signed-by=/etc/apt/keyrings/otelcol-google.asc] https://us-apt.pkg.dev/projects/cloud-ops-agents-artifacts google-cloud-opentelemetry-collector-apt main
    EOF
    
  3. Muat ulang pengelola paket Anda dan instal paket:

    sudo apt update
    sudo apt install otelcol-google
    

    Setelah diinstal, Google-Built OpenTelemetry Collector akan otomatis dimulai.

CentOS, RHEL &Rocky Linux

  1. Buka koneksi terminal ke instance VM Anda menggunakan SSH atau alat serupa dan pastikan Anda memiliki akses sudo.

  2. Jalankan perintah berikut untuk menyiapkan repositori paket:

    cat <<EOF | sudo tee /etc/yum.repos.d/otelcol-google.repo
    [otelcol-google]
    name=Google Built OpenTelemetry Collector
    baseurl=https://us-yum.pkg.dev/projects/cloud-ops-agents-artifacts/google-cloud-opentelemetry-collector-yum
    autorefresh=0
    enabled=1
    type=rpm-md
    gpgcheck=1
    repo_gpgcheck=0
    gpgkey=http://dl.google.com/linux/linux_signing_key.pub
    EOF
    
  3. Instal paket:

    sudo yum install otelcol-google
    

    Setelah diinstal, Google-Built OpenTelemetry Collector akan otomatis dimulai.

SLES

  1. Buka koneksi terminal ke instance VM Anda menggunakan SSH atau alat serupa dan pastikan Anda memiliki akses sudo.

  2. Jalankan perintah berikut untuk menyiapkan repositori paket:

    cat <<EOF | sudo tee /etc/zypp/repos.d/otelcol-google.repo
    [otelcol-google]
    name=Google Built OpenTelemetry Collector
    baseurl=https://us-yum.pkg.dev/projects/cloud-ops-agents-artifacts/google-cloud-opentelemetry-collector-yum
    autorefresh=0
    enabled=1
    type=rpm-md
    gpgkey=http://dl.google.com/linux/linux_signing_key.pub
    EOF
    
  3. Instal paket:

    sudo zypper install otelcol-google
    

    Setelah diinstal, Google-Built OpenTelemetry Collector akan otomatis dimulai.

Windows

  1. Hubungkan ke instance Anda menggunakan RDP atau alat serupa dan login ke Windows.

  2. Buka terminal PowerShell dengan hak istimewa administrator dengan mengklik kanan ikon PowerShell dan memilih Run as Administrator.

  3. Jalankan perintah PowerShell berikut untuk menyiapkan repositori paket:

    googet addrepo otelcol-google `
        https://us-googet.pkg.dev/projects/cloud-ops-agents-artifacts/repos/google-cloud-opentelemetry-collector-googet
    
  4. Instal paket:

    googet install otelcol-google
    

    Setelah diinstal, Google-Built OpenTelemetry Collector akan otomatis dimulai.

Men-deploy Collector

Google-Built OpenTelemetry Collector menyertakan konfigurasi minimal secara default yang tidak mengekspor telemetri. Untuk mengekspor telemetri, setelah menginstal Collector, konfigurasikan Collector dengan mengganti konfigurasi default. Tempatkan konfigurasi untuk Collector di file berikut:

  • Untuk Linux: /etc/otelcol-google/config.yaml
  • Untuk Windows: C:\Program Files\Google\OpenTelemetry Collector\config.yaml

Mengonfigurasi Collector

Kami menyediakan konfigurasi OpenTelemetry Collector untuk Anda gunakan dengan Collector buatan Google. Konfigurasi ini dirancang untuk mengirimkan metrik, log, dan trace OTLP dalam volume tinggi. Konfigurasi ini juga dirancang untuk mencegah masalah penyerapan umum. Anda dapat menambahkan konfigurasi, tetapi sebaiknya jangan menghapus elemen.

Bagian ini menjelaskan konfigurasi yang disediakan, komponen utama seperti pengekspor, prosesor, penerima, dan komponen lain yang tersedia.

Konfigurasi Collector yang disediakan

Anda dapat menemukan konfigurasi Collector di google-built-opentelemetry-collector direktori di opentelemetry-operations-collector repositori:

receivers:
  # Open two OTLP servers:
  # - On port 4317, open an OTLP GRPC server
  # - On port 4318, open an OTLP HTTP server
  #
  # Docs:
  # https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver/otlpreceiver
  otlp:
    protocols:
      grpc:
        endpoint: localhost:4317
      http:
        cors:
          # This effectively allows any origin
          # to make requests to the HTTP server.
          allowed_origins:
          - http://*
          - https://*
        endpoint: localhost:4318

processors:
  # The batch processor is in place to regulate both the number of requests
  # being made and the size of those requests.
  #
  # Docs:
  # https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/batchprocessor
  batch:
    send_batch_max_size: 200
    send_batch_size: 200
    timeout: 5s

  # The memorylimiter will check the memory usage of the collector process.
  #
  # Docs:
  # https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/memorylimiterprocessor
  memory_limiter:
    check_interval: 1s
    limit_percentage: 65
    spike_limit_percentage: 20

  # The resourcedetection processor is configured to detect GCP resources.
  # Resource attributes that represent the GCP resource the collector is
  # running on will be attached to all telemetry that goes through this
  # processor.
  #
  # Docs:
  # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/resourcedetectionprocessor
  # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/resourcedetectionprocessor#gcp-metadata
  resourcedetection:
    detectors: [gcp]
    timeout: 10s

  # The resource/gcp_project_id processor sets the GCP project ID attribute on telemetry data exported via OTLP.
  #
  # Docs:
  # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/resourceprocessor
  resource/gcp_project_id:
    attributes:
    - action: insert
      key: gcp.project_id
      value: ${GOOGLE_CLOUD_PROJECT}

  # The metricstarttime processor sets start time on delta metrics for OTLP export.
  #
  # Docs:
  # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/metricstarttimeprocessor
  metricstarttime:
    strategy: subtract_initial_point

  transform/collision:
    metric_statements:
    - context: datapoint
      statements:
      - set(attributes["exported_location"], attributes["location"])
      - delete_key(attributes, "location")
      - set(attributes["exported_cluster"], attributes["cluster"])
      - delete_key(attributes, "cluster")
      - set(attributes["exported_namespace"], attributes["namespace"])
      - delete_key(attributes, "namespace")
      - set(attributes["exported_job"], attributes["job"])
      - delete_key(attributes, "job")
      - set(attributes["exported_instance"], attributes["instance"])
      - delete_key(attributes, "instance")
      - set(attributes["exported_project_id"], attributes["project_id"])
      - delete_key(attributes, "project_id")

  # For each Prometheus unknown-typed metric, which is a gauge, create a counter that is an exact copy of this metric.
  # The GCP OTLP endpoint will add appropriate suffixes for the counter and gauge.
  transform/prometheus_unknown_types:
    error_mode: ignore
    metric_statements:
    - context: metric
      statements:
      - copy_metric(Concat([metric.name, "unknowncounter"], ":")) where metric.metadata["prometheus.type"] == "unknown" and not HasSuffix(metric.name, ":unknowncounter")
      - convert_gauge_to_sum("cumulative", true) where HasSuffix(metric.name, ":unknowncounter")
      - set(metric.name, Substring(metric.name, 0, Len(metric.name)-Len(":unknowncounter"))) where HasSuffix(metric.name, ":unknowncounter")

  transform/otlp_grpc/preserve_instrumentation_source_version:
    error_mode: ignore
    log_statements:
    - context: log
      statements:
      - set(attributes["instrumentation_source"], instrumentation_scope.name) where instrumentation_scope.name != ""
      - set(attributes["instrumentation_version"], instrumentation_scope.version) where instrumentation_scope.version != ""

  transform/otlp_grpc/copy_service_resource_labels:
    error_mode: ignore
    log_statements:
    - context: log
      statements:
      - set(attributes["service.name"], resource.attributes["service.name"]) where resource.attributes["service.name"] != nil
      - set(attributes["service.namespace"], resource.attributes["service.namespace"]) where resource.attributes["service.namespace"] != nil
      - set(attributes["service.instance.id"], resource.attributes["service.instance.id"]) where resource.attributes["service.instance.id"] != nil

exporters:
  # The otlp_grpc exporter is used to send telemetry (logs, metrics, traces) to GCP Telemetry API using OTLP gRPC.
  #
  # Docs:
  # https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlpexporter
  otlp_grpc:
    endpoint: telemetry.googleapis.com:443
    balancer_name: pick_first
    auth:
      authenticator: googleclientauth

extensions:
  # Opens an endpoint on 13133 that can be used to check the
  # status of the collector. Since this does not configure the
  # `path` config value, the endpoint will default to `/`.
  #
  # When running on Cloud Run, this extension is required and not optional.
  # In other environments it is recommended but may not be required for operation
  # (i.e. in Container-Optimized OS or other GCE environments).
  #
  # Docs:
  # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/healthcheckextension
  health_check:
    endpoint: 0.0.0.0:13133
  googleclientauth:

service:
  extensions:
  - health_check
  - googleclientauth
  pipelines:
    logs:
      receivers:
      - otlp
      processors:
      - resourcedetection
      - resource/gcp_project_id
      - transform/otlp_grpc/preserve_instrumentation_source_version
      - transform/otlp_grpc/copy_service_resource_labels
      - memory_limiter
      - batch
      exporters:
      - otlp_grpc
    metrics/otlp:
      receivers:
      - otlp
      processors:
      - resourcedetection
      - resource/gcp_project_id
      - transform/collision
      - transform/prometheus_unknown_types
      - metricstarttime
      - memory_limiter
      - batch
      exporters:
      - otlp_grpc
    traces:
      receivers:
      - otlp
      processors:
      - resourcedetection
      - resource/gcp_project_id
      - memory_limiter
      - batch
      exporters:
      - otlp_grpc
  # Internal telemetry for the collector supports both push and pull-based telemetry data transmission.
  # Leveraging the pre-configured OTLP receiver eliminates the need for an additional port.
  #
  # Docs:
  # https://opentelemetry.io/docs/collector/internal-telemetry/
  telemetry:
    metrics:
      readers:
        - periodic:
            exporter:
              otlp:
                protocol: grpc
                endpoint: http://localhost:4317
                insecure: true

Pengekspor

Konfigurasi Collector menggunakan hal berikut:

Prosesor

Konfigurasi Collector mencakup prosesor berikut:

  • batch: Dikonfigurasi untuk mengelompokkan permintaan telemetri pada Google Cloud jumlah maksimum entri per permintaan, atau pada Google Cloud interval minimum setiap 5 detik (mana pun yang lebih dulu).

  • memory_limiter: Membatasi penggunaan memori Collector untuk mencegah error kehabisan memori dengan menghapus titik data saat batas terlampaui.

  • resourcedetection: Otomatis mendeteksi Google Cloud label resource seperti project_id.

Penerima

Konfigurasi Collector hanya mencakup penerima otlp. Untuk mengetahui informasi tentang cara menginstrumentasi aplikasi Anda untuk mengirim trace dan metrik OTLP ke endpoint OTLP Collector, lihat Memilih pendekatan instrumentasi.

Komponen yang tersedia

Google-Built OpenTelemetry Collector berisi komponen yang paling dibutuhkan pengguna untuk mengaktifkan pengalaman yang kaya dalam Google Cloud Observability. Untuk daftar lengkap komponen yang tersedia, lihat Komponen di repositori opentelemetry-operations-collector.

Untuk meminta perubahan atau penambahan pada komponen yang tersedia, buka permintaan fitur. di repositori opentelemetry-operations-collector.

Membuat telemetri

Anda dapat menguji konfigurasi menggunakan alat open source telemetrygen. Petunjuk untuk mendownload dan menjalankan alat ini disertakan di link. Untuk menjalankan alat ini, Anda harus menginstal Go atau Docker.

Setelah beberapa menit, telemetri yang dibuat oleh aplikasi akan mulai mengalir melalui Collector ke Google Cloud konsol untuk setiap sinyal.

Melihat telemetri

Google-Built OpenTelemetry Collector mengirim metrik, log, dan trace dari aplikasi yang diinstrumentasi ke Google Cloud Observability. Collector juga mengirim metrik observabilitas mandiri. Bagian berikut menjelaskan cara melihat telemetri ini.

Melihat metrik

Google-Built OpenTelemetry Collector mengumpulkan metrik Prometheus yang dapat Anda lihat menggunakan Metrics Explorer. Metrik yang dikumpulkan bergantung pada instrumentasi aplikasi, meskipun Collector buatan Google juga menulis beberapa metrik mandiri.

Untuk melihat metrik yang dikumpulkan oleh Google-Built OpenTelemetry Collector, lakukan langkah berikut:
  1. Di Google Cloud konsol, 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 Google Cloud konsol, pilih Google Cloud project Anda. Untuk App Hub konfigurasi, pilih project host App Hub atau project pengelolaan folder yang mengaktifkan aplikasi.
  3. Pada elemen Metric, luaskan menu Select a metric, masukkan Prometheus Target di panel filter, lalu gunakan submenu untuk memilih jenis dan metrik resource tertentu:
    1. Pada menu Active resources, pilih Prometheus Target.
    2. Untuk memilih metrik, gunakan menu Active metric categories dan Active metrics. Metrik yang dikumpulkan oleh Google-Built OpenTelemetry Collector memiliki awalan prometheus.googleapis.com.
    3. Klik Apply.
  4. Untuk menambahkan filter, yang menghapus deret waktu dari hasil kueri, gunakan elemen Filter.

  5. Konfigurasi cara data dilihat.

    Jika pengukuran untuk metrik bersifat kumulatif, Metrics Explorer akan otomatis menormalkan data yang diukur berdasarkan periode perataan, sehingga diagram menampilkan nilai. Untuk mengetahui informasi selengkapnya, lihat Jenis, jenis, dan konversi.

    Saat nilai bilangan bulat atau ganda diukur, seperti dengan metrik counter, Metrics Explorer akan otomatis menjumlahkan semua deret waktu. Untuk mengubah perilaku ini, tetapkan menu pertama entri Aggregation ke None.

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

Melihat trace

Untuk melihat data trace, lakukan langkah berikut:

  1. Di Google Cloud konsol, buka halaman Trace explorer:

    Buka Trace explorer

    Anda juga dapat menemukan halaman ini menggunakan kotak penelusuran.

  2. Di toolbar konsol Google Cloud , pilih Google Cloud project Anda. Untuk konfigurasi App Hub, pilih project host App Hub atau project pengelolaan.
  3. Di bagian tabel halaman, pilih baris.
  4. Di diagram Gantt pada panel Trace details , pilih rentang.

    Panel akan terbuka dan menampilkan informasi tentang permintaan yang dilacak. Detail ini mencakup metode, kode status, jumlah byte, dan agen pengguna pemanggil.

  5. Untuk melihat log yang terkait dengan trace ini, pilih tab Logs &Events.

    Tab ini menampilkan 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 Cloud Trace explorer, lihat Menemukan dan menjelajahi trace.

Melihat log

Dari Logs Explorer, Anda dapat memeriksa log, dan Anda juga dapat melihat trace terkait, jika ada.

  1. Di Google Cloud konsol, buka halaman Logs Explorer:

    Buka Logs Explorer

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

  2. Temukan entri log dari aplikasi yang diinstrumentasi. Untuk melihat detailnya, luaskan entri log.

  3. Klik Traces pada entri log dengan pesan trace, lalu pilih View trace details.

    Panel Trace details akan terbuka dan menampilkan trace yang dipilih.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan Logs Explorer, lihat Melihat log menggunakan Logs Explorer.

Mengamati dan men-debug Collector

Google-Built OpenTelemetry Collector otomatis menyediakan metrik observabilitas mandiri untuk membantu Anda memantau performanya dan memastikan waktu aktif pipeline penyerapan OTLP terus berlanjut.

Untuk memantau Collector, instal contoh dasbor untuk Collector. Dasbor ini menawarkan insight sekilas tentang beberapa metrik dari Collector, termasuk waktu aktif, penggunaan memori, dan panggilan API ke Google Cloud Observability.

Untuk menginstal dasbor, lakukan langkah berikut:

  1. Di Google Cloud konsol, buka halaman  Dashboards:

    Buka Dashboards

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

  2. Klik Dashboard Templates.
  3. Telusuri dasbor OpenTelemetry Collector.
  4. Opsional: Untuk melihat pratinjau dasbor, pilih dasbor.
  5. Klik Add dashboard to your list dan lalu selesaikan dialog.

    Dialog ini memungkinkan Anda memilih nama dasbor, dan menambahkan label ke dasbor.

Untuk mengetahui informasi selengkapnya tentang cara menginstal dasbor, lihat Menginstal template dasbor.