Mengumpulkan log dari alur kerja Anda

Halaman ini menguraikan proses pengumpulan log dari alur kerja Anda di lingkungan appliance air gap Google Distributed Cloud (GDC) untuk memfasilitasi logging dan kemampuan pengamatan data.

Log mencatat kondisi dan tindakan saat Anda mengelola operasi dari layanan di GDC. Anda dapat meng-scrape log yang dihasilkan komponen untuk mencatat peristiwa dan aktivitas. Platform logging menawarkan API kustom untuk mengumpulkan log tingkat project yang dihasilkan oleh alur kerja Anda melalui target logging.

Untuk mulai mengumpulkan data log, deploy resource kustom LoggingTarget ke namespace project Anda di server Management API. Setelah pengumpul log menarik data dari alur kerja Anda, platform logging akan menggabungkan log dari semua sumber log, menambahkan indeks, dan mengaitkan log dengan label sesuai dengan konfigurasi dari resource kustom LoggingTarget.

Akses log yang dikumpulkan menggunakan antarmuka pengguna Grafana seperti yang dijelaskan dalam Mengkueri dan melihat log.

Untuk mengetahui praktik terbaik dalam menerapkan logging untuk kemampuan pengamatan data, lihat pedoman komunitas Kubernetes:

https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md.

Sebelum memulai

Untuk mendapatkan izin yang diperlukan untuk mengelola resource kustom LoggingTarget, minta Admin IAM Organisasi atau Admin IAM Project Anda untuk memberi Anda salah satu peran LoggingTarget terkait.

Bergantung pada tingkat akses dan izin yang Anda perlukan, Anda mungkin mendapatkan peran pembuat, editor, atau pelihat untuk resource ini di organisasi atau project. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan izin IAM.

  • Operator Aplikasi: Untuk mendapatkan izin yang Anda perlukan untuk mengelola resource kustom LoggingTarget dalam project di server API pengelolaan, minta Admin IAM Project Anda untuk memberi Anda salah satu peran berikut di namespace project Anda:

    • LoggingTarget Creator: membuat resource kustom LoggingTarget. Minta peran LoggingTarget Creator (loggingtarget-creator).
    • Editor LoggingTarget: mengedit atau mengubah LoggingTarget resource kustom. Minta peran LoggingTarget Editor (loggingtarget-editor).
    • LoggingTarget Viewer: melihat LoggingTarget resource kustom. Minta peran LoggingTarget Viewer (loggingtarget-viewer).
  • Administrator Platform: Untuk mendapatkan izin yang Anda perlukan untuk mengelola resource kustom LoggingTarget di namespace platform-obs di server Management API, minta Admin IAM Organisasi Anda untuk memberi Anda salah satu peran cluster berikut di namespace platform-obs:

    • LoggingTarget PA Creator: membuat resource kustom LoggingTarget. Minta peran cluster LoggingTarget PA Creator (loggingtarget-pa-creator).
    • Editor PA LoggingTarget: mengedit atau mengubah LoggingTarget resource kustom. Minta peran cluster LoggingTarget PA Editor (loggingtarget-pa-editor).
    • LoggingTarget PA Viewer: melihat resource kustom LoggingTarget. Minta peran cluster LoggingTarget PA Viewer (loggingtarget-pa-viewer).

Mengumpulkan log operasional

Log operasional mencatat kondisi, perubahan, dan tindakan saat Anda mengelola operasi yang sedang berlangsung di aplikasi dan layanan di GDC. Deploy resource kustom LoggingTarget ke server Management API untuk mengonfigurasi pipeline logging sistem guna mengumpulkan log operasional dari layanan tertentu di tingkat project.

Selesaikan langkah-langkah berikut untuk mengumpulkan log operasional dari layanan:

  1. Konfigurasi resource kustom LoggingTarget di server Management API, dengan menentukan pod yang dipilih untuk mengumpulkan log operasional Anda, namespace project, dan setelan tambahan. Untuk mempelajari tampilan LoggingTarget, lihat Mengonfigurasi resource kustom LoggingTarget.
  2. Deploy resource kustom LoggingTarget ke namespace project Anda di server Management API:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f LOGGING_TARGET_NAME
    

    Ganti kode berikut:

    • MANAGEMENT_API_SERVER: jalur kubeconfig server Management API zonal.
    • LOGGING_TARGET_NAME: nama resource kustom LoggingTarget, seperti my-service-logging-target.yaml.

    Pipeline mulai mengumpulkan log dari komponen tambahan project Anda.

  3. Buat kueri log dari instance Grafana project Anda. Untuk mengetahui informasi selengkapnya, lihat Mengirim kueri dan melihat log.

Gunakan fitur kode warna bawaan Grafana untuk berbagai level log layanan. Untuk mengetahui informasi selengkapnya tentang cara menyetel nilai tingkat log, lihat https://grafana.com/docs/grafana/latest/explore/logs-integration/.

Mengonfigurasi resource kustom LoggingTarget

Resource kustom LoggingTarget menginstruksikan pipeline logging untuk mengumpulkan log dari layanan tertentu dalam project GDC Anda. Anda dapat menentukan target yang lognya Anda kumpulkan, parser log, tingkat akses, dan setelan tambahan.

Resource ini menentukan konfigurasi berikut:

  • Target: Kriteria untuk memilih pod dan penampung yang ingin Anda kumpulkan lognya. Anda dapat menentukan nama cluster, awalan nama pod, dan awalan nama container.
  • Penganalisis log: Parser yang telah ditentukan sebelumnya untuk menafsirkan entri log, memetakan output log ke label, dan mengekstrak kolom yang relevan.
  • Identifikasi layanan: Nama layanan yang diterapkan sebagai label pada entri log untuk memudahkan identifikasi dan pemfilteran.
  • Otorisasi: Tingkat akses untuk entri log, yang mengontrol siapa yang dapat melihat log yang dikumpulkan.

Dengan mengonfigurasi parameter ini dalam resource kustom LoggingTarget, Anda dapat mengontrol pengumpulan dan penataan log dari layanan Anda secara tepat.

Ikuti langkah-langkah berikut untuk mengumpulkan log operasional dari layanan:

  1. Tentukan project GDC tempat Anda ingin mengumpulkan log.
  2. Dalam konfigurasi LoggingTarget, tentukan pod untuk mengumpulkan log operasional, namespace project, dan setelan tambahan.

    File YAML berikut menunjukkan contoh konfigurasi LoggingTarget di my-project-namespace, dengan awalan nama pod untuk mengumpulkan log dari adalah my-pod-prefix, tingkat akses untuk entri log diberikan kepada Operator Aplikasi (ao), nama layanan adalah my-service-name, dan format log adalah JSON:

    # Configures a log scraping job
    apiVersion: logging.gdc.goog/v1
    kind: LoggingTarget
    metadata:
      # Choose a namespace that matches the namespace of the workload pods.
      namespace: my-project-namespace
      name: my-service-logging-target
    spec:
      selector:
        matchPodNames:
          - my-pod-prefix
      parser: json
      logAccessLevel: ao
      serviceName: my-service-name
    

    Lihat spesifikasi LoggingTarget lengkap dan dokumentasi referensi API untuk mengetahui kolom dan opsi tambahan.

  3. Terapkan konfigurasi LoggingTarget ke server Management API dalam namespace yang sama dengan pod target Anda:

    kubectl --kubeconfig KUBECONFIG_PATH apply -f LOGGING_TARGET_NAME.yaml
    

    Ganti kode berikut:

    • KUBECONFIG_PATH: jalur ke file kubeconfig untuk server Management API.
    • LOGGING_TARGET_NAME: nama file definisi LoggingTarget, seperti my-service-logging-target.

    Pipeline logging mulai mengumpulkan log dari komponen tambahan project Anda.

Anda dapat membuat kueri log yang dikumpulkan menggunakan antarmuka pengguna Grafana atau Log Query API. Untuk mengetahui informasi selengkapnya, lihat Mengkueri dan melihat log.

Jika menggunakan Grafana untuk membuat kueri log, Anda dapat menggunakan fitur pemberian kode warna bawaan untuk berbagai tingkat log layanan. Untuk mengetahui informasi selengkapnya tentang cara menyetel nilai tingkat log, lihat https://grafana.com/docs/grafana/latest/explore/logs-integration/.

Spesifikasi LoggingTarget lengkap

File YAML berikut menunjukkan contoh untuk spesifikasi lengkap resource kustom LoggingTarget. Untuk mengetahui informasi selengkapnya dan deskripsi lengkap kolom, lihat dokumentasi referensi API.

# Configures a log scraping job
apiVersion: logging.gdc.goog/v1
kind: LoggingTarget
metadata:
  # Choose a namespace that matches the namespace of the workload pods.
  namespace: PROJECT_NAMESPACE
  name: LOGGING_TARGET_NAME
spec:
  # Choose a matching pattern that identifies the pods for this job.
  # Optional.
  # Relationship between different selectors: 'AND'
  selector:
    # The clusters to collect logs from.
    # The default configuration is to collect logs from all clusters.
    # The relationship between different clusters is an 'OR' relationship.
    # Optional
    matchClusters:
    - my-cluster
    - another-cluster

    # The pod name prefixes to collect logs from.
    # The logging platform scrapes all pods with names
    # that start with the specified prefixes.
    # The values must contain '[a-z0-9-]' characters only.
    # The relationship between different list elements is an 'OR' relationship.
    # Optional.
    matchPodNames:
      - my-pod-prefix
      - another-pod-prefix

    # The container name prefixes to collect logs from.
    # The logging platform scrapes all containers with names
    # that start with the specified prefixes.
    # The values must contain '[a-z0-9-]' characters only.
    # The relationship between different list elements is an 'OR' relationship.
    # Optional.
    matchContainerNames:
      - my-container-prefix
      - another-container-prefix

  # Choose the predefined parser for log entries.
  # Use parsers to map the log output to labels and extract fields.
  # Specify the log format.
  # Optional.
  # Options: klog_text, klog_json, klogr, gdch_json, json
  parser: klog_text

  # Specify an access level for log entries.
  # The default value is 'ao'.
  # Optional.
  # Options: ao, pa, io
  logAccessLevel: ao

  # Specify a service name to be applied as a label.
  # For user workloads consider this field as a workload name.
  # Required.
  serviceName: my-service-name

  # The additional static fields to apply to log entries.
  # The field is a key-value pair, where the field name is the key and
  # the field value is the value.
  # Optional.
  additionalFields:
    app: workload2
    key: value

Ganti kode berikut:

  • PROJECT_NAMESPACE: namespace project Anda.
  • LOGGING_TARGET_NAME: nama file definisi LoggingTarget.