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

Dokumen ini memberikan informasi yang Anda butuhkan 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 Cloud Run Functions, berisi agen logging terintegrasi. Untuk Compute Engine, Anda dapat menginstal Agen Operasional. Agen ini mengumpulkan log dari lokasi file atau layanan logging yang diketahui 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 Operasional dan sebagian besar library klien Logging memanggil Logging API gRPC. Library klien untuk beberapa bahasa memanggil REST Logging API.

Memilih agen atau library klien

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

Apakah aplikasi Anda berjalan di luar Google Cloud?

Jika aplikasi Anda tidak berjalan di Google Cloud, Anda memerlukan cara untuk mengirim log ke Logging API. Untuk merutekan log dari sistem lokal ke Logging, sebaiknya gunakan BindPlane, yang men-deploy dan mengelola pengumpul OpenTelemetry untuk mengirim telemetri ke Google Cloud. Untuk mengetahui informasi selengkapnya, lihat Tentang BindPlane.

Bindplane memungkinkan Anda mengumpulkan telemetri dari berbagai sumber dan
mengekspor data tersebut ke Cloud Monitoring dan
Cloud Logging.

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. 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 daripada menggunakan library klien adalah bahwa error aplikasi tidak akan mengganggu pengiriman log ke project Anda. Untuk mengetahui informasi tentang pengiriman 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 tersebut dapat memperkenalkan dependensi pada Logging untuk pengujian lokal, padahal Anda tidak memerlukannya. Penggunaan library klien juga mungkin memerlukan pengodean 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 menimbulkan kompleksitas yang lebih besar, menggunakan port tambahan, dan mengirim permintaan terpisah hanya dengan log dari aplikasi, yang bisa menjadi tidak efisien jika tidak banyak log.

Apakah log aplikasi perlu dapat diakses di lingkungan lokal Anda?

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

Saat menjalankan aplikasi di layanan Google Cloud yang tidak mendukung pengiriman otomatis log yang ditulis ke stdout dan stderr ke projectGoogle Cloud Anda, Anda dapat mengumpulkan log stdout dan stderr dalam file di disk dan mengonfigurasi agen untuk meng-scrape log tersebut dan mengirimkannya ke Logging. Untuk mengetahui informasi selengkapnya, lihat panduan konfigurasi untuk Agen Operasional.

Apakah proses penginstalan agen dilakukan secara manual atau otomatis?

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

Apakah Anda sudah menjalankan Fluentd di sistem Anda?

Jika sudah menjalankan Fluentd di sistem, dan ingin menggunakan daemon tersebut untuk mengirim log ke Logging, gunakan Google Cloud plugin 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 sesuai dengan kasus penggunaan Anda, Anda dapat menggunakan library klien Pemantauan untuk mengumpulkan metrik Anda.

Apakah aplikasi Anda memiliki fleksibilitas untuk mengubah format log?

Pertanyaan ini membantu Anda memutuskan apakah aplikasi Anda dapat membuat 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: yang pertama adalah menetapkan kolom tertentu dalam envelope LogEntry, dan yang kedua adalah menetapkan kolom jsonPayload dalam envelope 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 log sendiri yang tidak dapat Anda ubah, tetapi Anda ingin log tersebut dikenali sebagai log terstruktur, maka 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 agar memahami format Anda sendiri.

Ringkasan setiap opsi

  • 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 yang error akan menghentikan 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 menyimpan log di lingkungan lokal.
      • Anda mungkin dapat memulihkan log dari error aplikasi.
      • Ops Agent sedang dalam pengembangan aktif.
    • Kekurangan

      • Fluent Bit hanya mendukung encoding UTF-8. Tidak mendukung konversi encoding.
  • Log stdout dan stderr otomatis dikirim ke project Google Cloud Anda

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