Logging terstruktur

Di Cloud Logging, objek LogEntry dapat menyimpan payload log sebagai data terstruktur atau teks tidak terstruktur. Entri log terstruktur menyimpan payload-nya sebagai objek JSON di kolom jsonPayload, sedangkan entri log tidak terstruktur menyimpan payload-nya sebagai string di kolom textPayload.

Dengan memformat payload log sebagai objek JSON, Anda dapat membuat kueri berdasarkan jalur JSON di Logs Explorer, membuat kueri setiap kolom di halaman Observability Analytics, dan mengindeks kolom tertentu untuk mempercepat kueri. Dengan log tidak terstruktur, Anda dapat menelusuri string teks, tetapi Anda tidak dapat mengkueri atau mengindeks setiap kunci.

Cara penulisan log terstruktur

Cara entri log terstruktur ditulis ke Logging bergantung pada lingkungan Anda dan cara log dikumpulkan:

  • OpenTelemetry dan Telemetry (OTLP) API: Saat Anda mengirim data log OpenTelemetry Protocol (OTLP) ke Logging, Google Cloud Observability akan mengonversi data log terstruktur menjadi kolom jsonPayload. Lihat Pemetaan data log OTLP ke entri log.
  • Agen logging bawaan: Di lingkungan komputasi terkelola (seperti Google Kubernetes Engine dan Cloud Run), agen bawaan mengurai JSON satu baris yang ditulis ke stdout atau stderr ke dalam kolom jsonPayload. Lihat Memilih framework logging.
  • Agen Operasional: Di VM Compute Engine, agen menulis log terstruktur saat mengumpulkan log JSON atau mengurai log teks. Lihat Mengonfigurasi Agen Operasional.
  • Library klien Logging: Library ini menulis log terstruktur saat Anda meneruskan objek atau peta JSON sebagai payload, atau saat library ini menghasilkan JSON satu baris ke stdout atau stderr. Lihat Menulis log terstruktur.
  • BindPlane: Layanan ini mengirimkan log dengan payload JSON dari sumber lokal atau hybrid ke Logging. Lihat panduan memulai BindPlane.

Kolom JSON khusus dalam payload terstruktur

Saat agen logging menyerap log terstruktur, mereka dapat memetakan kolom tertentu dalam data log Anda ke kolom tingkat teratas di objek LogEntry, bukan membiarkannya di jsonPayload:

  • Agen Operasional: Untuk kolom JSON yang dipetakan Agen Operasional secara otomatis saat Anda menggunakan prosesor parse_json atau penerima tcp dan fluent_forward, lihat Kolom khusus dalam payload terstruktur.

  • OpenTelemetry (OTLP): Untuk mengetahui informasi tentang cara Google Cloud Observability memetakan data log OTLP ke kolom LogEntry, lihat Pemetaan data log OTLP ke entri log.

  • Agen logging bawaan (stdout dan stderr): Di platform komputasi terkelola seperti Google Kubernetes Engine, Cloud Run, Cloud Run Functions, dan App Engine, agen logging bawaan mengenali kunci JSON level teratas berikut dan memindahkan nilainya ke kolom LogEntry yang sesuai:

    • severity: Menetapkan kolom LogEntry.severity.
    • message: Menetapkan pesan log utama yang ditampilkan di Logs Explorer.
    • httpRequest: Menetapkan kolom LogEntry.httpRequest.
    • time atau timestamp (atau timestampSeconds dan timestampNanos): Menetapkan kolom LogEntry.timestamp.
    • logging.googleapis.com/insertId: Menetapkan kolom LogEntry.insertId.
    • logging.googleapis.com/labels: Menetapkan key-value pair LogEntry.labels yang ditentukan pengguna.
    • logging.googleapis.com/operation: Menetapkan kolom LogEntry.operation.
    • logging.googleapis.com/sourceLocation: Menetapkan kolom LogEntry.sourceLocation.
    • logging.googleapis.com/trace, logging.googleapis.com/spanId, dan logging.googleapis.com/trace_sampled: Tetapkan kolom trace, spanId, dan traceSampled untuk menautkan log dengan trace.

    Kolom yang tersisa dalam data JSON tetap berada di kolom LogEntry.jsonPayload.

Langkah berikutnya