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

Dokumen ini memberikan informasi yang Anda perlukan untuk membantu Anda memutuskan apakah akan mengirim log aplikasi ke Cloud Logging secara terprogram menggunakan library klien atau 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 fungsi Cloud Run, 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 menggunakan perintah gcloud logging write atau dengan mengirim perintah HTTP ke endpoint Cloud Logging API entries.write. Cloud Logging API mendukung panggilan HTTP dan gRPC. Agen Ops dan sebagian besar library klien Logging memanggil gRPC Logging API. Agen Logging dan library klien lama untuk beberapa bahasa memanggil REST Logging API.

Memilih library klien atau agen

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

Apakah aplikasi Anda berjalan di luar Google Cloud?

Jika aplikasi 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 dari 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 dikelola sepenuhnya, sehingga Anda tidak perlu menggunakan agen untuk mengirim log ke project Google Cloud. Anda dapat menggunakan framework logging yang sudah ada dalam bahasa pilihan Anda, seperti Go, Node.js, dan Python, untuk mengirim log ke Logging di produk yang mendukung stdout dan stderr secara default. Keuntungan mengandalkan stdout dan stderr, bukan menggunakan library klien, adalah error aplikasi tidak akan mengganggu 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 dapat menyebabkan dependensi pada Logging untuk pengujian lokal, saat Anda tidak terlalu membutuhkannya. Penggunaan 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 streaming koneksi baru ke API. Koneksi baru ini akan menimbulkan lebih banyak kompleksitas, menggunakan port tambahan, dan mengirim permintaan terpisah hanya dengan log dari aplikasi, yang dapat menjadi pemborosan jika tidak ada banyak log.

Apakah log aplikasi perlu dapat diakses di lingkungan lokal Anda?

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

Saat menjalankan aplikasi 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 mengambilnya dan mengirimnya ke Logging. Untuk mengetahui informasi selengkapnya, lihat panduan konfigurasi untuk Agen Operasional atau Agen logging lama.

Apakah proses penginstalan agen dilakukan secara manual atau otomatis?

Beberapa layanan menginstal agen secara otomatis atau mengizinkan Anda menginstal agen sendiri. Jika layanan yang Anda gunakan 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 Ops dapat mengumpulkan log dan sebagian besar metrik. Lihat Fitur Ops Agent untuk mengetahui informasi selengkapnya.

Jika Agen Operasional tidak menangani kasus penggunaan Anda, 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 Anda dapat menghasilkan log terstruktur. Logging mengenali log terstruktur jika Anda mengirim log ke Logging API dalam format logging terstruktur. Library klien menyediakan metode untuk menangani format ini.

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

Anda harus mengonfigurasi agen untuk mengenali log terstruktur. Secara default, agen dikonfigurasi untuk mendeteksi log dalam format JSON dan menanganinya sebagai log terstruktur. Jika aplikasi Anda memiliki format lognya sendiri yang tidak dapat Anda ubah, tetapi Anda ingin log tersebut 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

      • Error aplikasi akan mengganggu pengiriman 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 banyak aplikasi umum; lihat Memantau dan mengumpulkan log dari aplikasi pihak ketiga.
      • Anda dapat mempertahankan log di lingkungan lokal.
      • Anda mungkin dapat memulihkan log dari error aplikasi.
      • Ops Agent sedang dalam pengembangan aktif.
  • 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 sedang dalam pengembangan aktif.
  • Log stdout dan stderr otomatis dikirim ke project Google Cloud Anda

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