Manakah yang harus Anda gunakan: Agen logging atau library klien?

Dokumen ini memberikan informasi yang Anda perlukan untuk membantu memutuskan apakah akan mengirim log aplikasi secara terprogram ke Cloud Logging menggunakan library klien atau dengan menggunakan agen logging. Agen logging mengirim data yang ditulis ke file, seperti stdout atau file, sebagai log ke Cloud Logging. Layanan, seperti Google Kubernetes Engine, lingkungan fleksibel App Engine, dan Cloud Functions, berisi agen logging terintegrasi. Untuk Compute Engine, Anda dapat menginstal Agen Operasional atau agen Cloud Logging lama. Agen ini mengumpulkan log dari lokasi file yang diketahui atau layanan logging seperti Windows Event Log, journald, atau syslogd.

Jika tidak dapat menggunakan library klien atau agen Logging, atau jika hanya ingin bereksperimen, Anda dapat menulis log dengan menggunakan perintah gcloud logging write atau dengan mengirimkan perintah HTTP ke endpoint Cloud Logging API entries.write. Cloud Logging API mendukung panggilan HTTP dan gRPC. Agen Operasional dan sebagian besar library klien Logging memanggil gRPC Logging API. Library klien dan agen Logging lama untuk beberapa bahasa memanggil REST Logging API.

Memilih library klien atau agen

Saat Anda memutuskan antara agen atau library klien, pertimbangkan pertanyaan-pertanyaan berikut:

Apakah aplikasi Anda berjalan di luar Google Cloud?

Jika aplikasi Anda tidak berjalan di Google Cloud, Anda memerlukan beberapa cara untuk mengirim log ke Logging API. Untuk merutekan log dari sistem lokal ke Logging, sebaiknya gunakan BindPlane oleh observIQ. Untuk informasi selengkapnya tentang BindPlane, lihat Tentang observIQ dan BindPlane.

Atau, Anda dapat merutekan log ke Logging langsung dari aplikasi menggunakan library klien. Untuk lingkungan sementara, seperti komputasi Serverless, Anda harus menggunakan library klien untuk melakukan panggilan langsung ke Logging API.

Apakah layanan Google Cloud yang menjalankan aplikasi Anda mendukung
menulis konten stdout dan stderr ke project Anda?

Beberapa layanan Google Cloud terkelola sepenuhnya, sehingga Anda tidak perlu menggunakan agen untuk mengirim log ke project Google Cloud. Anda dapat menggunakan framework logging yang mapan dalam bahasa pilihan Anda, seperti Go, Node.js, dan Python, untuk mengirim log ke produk Logging yang secara default mendukung stdout dan stderr. Keuntungan mengandalkan stdout dan stderr daripada menggunakan library klien adalah error aplikasi tidak merusak pengiriman log ke project Anda. Untuk mengetahui informasi tentang cara mengirim log terstruktur melalui stdout dan stderr, lihat bagian Apakah aplikasi Anda memiliki fleksibilitas untuk mengubah format log?.

Anda dapat menggunakan library klien Logging, tetapi perlu diingat bahwa library ini mungkin memunculkan dependensi pada Logging untuk pengujian lokal, saat Anda tidak memerlukannya. Menggunakan library klien mungkin juga memerlukan coding yang lebih kompleks untuk menangani buffering dan percobaan ulang secara eksplisit. Selain itu, setiap penggunaan library klien Logging akan membuat aliran koneksi baru ke API. Koneksi baru ini menyebabkan lebih banyak kerumitan, menggunakan port tambahan, dan mengirim permintaan terpisah hanya dengan log dari aplikasi, yang dapat sia-sia jika tidak ada banyak log.

Apakah log aplikasi harus dapat diakses di lingkungan lokal Anda?

Jika perlu mengakses log aplikasi di lingkungan lokal Anda, untuk proses debug dan tujuan lainnya, Anda dapat menggunakan modul logging dalam beberapa bahasa untuk menghasilkan output ke stdout dan stderr. Logging library klien untuk beberapa bahasa mendukung perutean log ke stdout dan stderr.

Saat menjalankan aplikasi Anda di layanan Google Cloud yang tidak mendukung pengiriman log yang ditulis ke stdout dan stderr secara otomatis ke project Google Cloud, Anda dapat mengumpulkan log stdout dan stderr dalam file di disk dan mengonfigurasi agen untuk menyalinnya dan mengirimkannya ke Logging. Untuk mengetahui informasi selengkapnya, lihat panduan konfigurasi untuk Agen Operasional atau Agen logging lama.

Apakah proses penginstalan agen manual atau otomatis?

Beberapa layanan menginstal agen secara otomatis atau memungkinkan Anda menginstal agen sendiri. Jika layanan yang digunakan tidak mengizinkan Anda menginstal agen, Anda harus menggunakan library klien untuk menggunakan Logging.

Apakah Anda sudah menjalankan Fluentd di sistem?

Agen Logging lama didasarkan pada Fluentd.

Jika Anda sudah menjalankan Fluentd di sistem, dan ingin menggunakan daemon tersebut untuk mengirim log ke Logging, gunakan plugin Google Cloud Logging untuk fluentd.

Apakah Anda juga mengumpulkan metrik aplikasi untuk Cloud Monitoring?

Di VM Compute Engine, Agen Operasional dapat mengumpulkan log dan sebagian besar metrik. Lihat fitur Agen Operasional untuk mengetahui informasi selengkapnya.

Jika Agen Operasional tidak mengatasi kasus penggunaan tersebut, Anda dapat menggunakan agen Monitoring lama atau library klien Monitoring untuk mengumpulkan metrik.

Apakah aplikasi Anda memiliki fleksibilitas untuk mengubah format log?

Pertanyaan ini membantu Anda memutuskan apakah aplikasi dapat menghasilkan log terstruktur. Logging akan mengenali log terstruktur jika Anda mengirim log tersebut ke Logging API dalam format logging terstruktur. Library klien menyediakan metode untuk menangani format ini.

Ada dua cara untuk menulis log terstruktur: pertama dengan menetapkan kolom tertentu dalam amplop LogEntry, dan cara lainnya dengan menetapkan kolom jsonPayload dalam amplop LogEntry. Skema untuk resource pertama ditentukan oleh Cloud Logging, sedangkan skema untuk resource pertama ditentukan oleh pengguna.

Anda harus mengonfigurasi agen untuk mengenali log terstruktur. Secara default, agen dikonfigurasi untuk mendeteksi log dalam format JSON dan untuk menanganinya sebagai log terstruktur. Jika aplikasi Anda memiliki format log sendiri yang tidak dapat Anda ubah, tetapi Anda ingin log dikenali sebagai log terstruktur, Anda harus menulis log dalam format logging terstruktur, biasanya JSON, ke stdout dan stderr, sehingga agen dapat mengenalinya sebagai log terstruktur. Jika tidak, Anda harus mengonfigurasi agen untuk memahami format Anda sendiri.

Ringkasan setiap opsi

Diagram pola logging

  • Library klien Cloud Logging

    • Kelebihan

      • Anda dapat merutekan log langsung ke Cloud Logging API.
      • Beberapa bahasa dapat menghasilkan log ke stdout dan stderr menggunakan library.
    • Kekurangan

      • Aplikasi mengalami error saat mengirim log ke project Google Cloud Anda.
  • Agen Operasional

    • Kelebihan
      • Agen Operasional dapat mengirim log dan metrik menggunakan teknologi open source yang stabil: Fluent Bit untuk pengumpulan log dan OpenTelemetry Collector untuk pengumpulan metrik.
      • Anda dapat mengumpulkan log dan metrik dari berbagai aplikasi umum; lihat Memantau dan mengumpulkan log dari aplikasi pihak ketiga.
      • Anda dapat menyimpan log di lingkungan lokal.
      • Anda mungkin dapat memulihkan log dari error aplikasi.
      • Agen Operasional sedang aktif dikembangkan.
  • Agen Logging Lama

    • Kelebihan
      • Agen menggunakan Fluentd untuk mengumpulkan log.
      • Anda dapat menyimpan log di lingkungan lokal.
      • Anda mungkin dapat memulihkan log dari error aplikasi.
    • Kekurangan
      • Agen saat ini didukung, tetapi tidak dalam pengembangan aktif.
  • Log stdout dan stderr otomatis dikirim ke project Google Cloud Anda

    • Kelebihan
      • Proses ini adalah cara umum untuk memunculkan log ke lingkungan lokal.
      • Anda dapat menggunakan library logging arbitrer.
      • Anda mungkin dapat memulihkan log dari error aplikasi.
    • Kekurangan
      • Tidak semua lingkungan secara otomatis mengarahkan log ke Logging.