Mengoptimalkan penyerapan peristiwa dan log analisis dalam skala besar

Last reviewed 2022-08-22 UTC

Artikel ini menjelaskan arsitektur untuk mengoptimalkan penyerapan analisis berskala besar di Google Cloud. Untuk tujuan artikel ini, berskala besar berarti lebih dari 100.000 peristiwa per detik, atau memiliki total ukuran payload peristiwa kumulatif lebih dari 100 MB per detik.

Anda dapat menggunakan layanan terkelola yang elastis dan skalabel dari Google Cloud untuk mengumpulkan sejumlah besar peristiwa analisis dan log yang masuk, lalu memprosesnya untuk dimasukkan ke data warehouse, seperti BigQuery.

Arsitektur untuk penyerapan data analisis dalam jumlah besar harus mempertimbangkan data yang perlu diakses mendekati real-time dan yang dapat ditangani setelah penundaan singkat, serta memisahkannya dengan tepat. Pendekatan tersegmentasi memiliki manfaat berikut:

  • Integritas log. Anda dapat melihat log lengkap. Tidak ada log yang hilang akibat batas kuota streaming atau pengambilan sampel.
  • Pengurangan biaya. Streaming insert peristiwa dan log ditagih dengan tarif yang lebih tinggi daripada yang disisipkan dari Cloud Storage menggunakan tugas batch.
  • Resource kueri yang dicadangkan. Memindahkan log berprioritas lebih rendah ke pemuatan batch akan mencegahnya berdampak pada resource kueri yang dicadangkan.

Diagram arsitektur berikut menunjukkan sistem tersebut dan memperkenalkan konsep hot path dan cold path untuk penyerapan:

jalur penyerapan umum

Ringkasan arsitektur

Dalam arsitektur ini, data berasal dari dua kemungkinan sumber:

Setelah penyerapan dari salah satu sumber, berdasarkan persyaratan latensi pesan, data dimasukkan ke hot path atau cold path. Hot path menggunakan input streaming, yang dapat menangani dataflow berkelanjutan, sedangkan cold path adalah proses batch, yang memuat data pada jadwal yang Anda tentukan.

Mencatat peristiwa ke dalam log

Anda dapat menggunakan Cloud Logging untuk menyerap pencatatan peristiwa ke dalam log yang dihasilkan oleh fasilitas logging sistem operasi standar. Cloud Logging tersedia di sejumlah lingkungan Compute Engine secara default, termasuk image standar, dan juga dapat diinstal di banyak sistem operasi dengan menggunakan Agen Cloud Logging. Agen logging adalah sink logging default untuk App Engine dan Google Kubernetes Engine.

Hot path

logging hot path

Pada hot path, log penting yang diperlukan untuk pemantauan dan analisis layanan Anda dipilih dengan menentukan filter di sink Cloud Logging, lalu di-streaming ke beberapa tabel BigQuery. Gunakan tabel terpisah untuk level logging ERROR dan WARN, lalu bagi lebih lanjut berdasarkan layanan jika diperkirakan volume tinggi. Praktik terbaik ini menjaga jumlah penyisipan per detik per tabel di bawah batas 100.000 dan menjaga kueri terhadap data ini berperforma baik.

Cold path

logging cold path

Untuk cold path, log yang tidak memerlukan analisis mendekati real-time dipilih menggunakan sink Cloud Logging yang diarahkan ke bucket Cloud Storage. Log dikelompokkan dan ditulis ke file log dalam batch per jam Cloud Storage. Log ini kemudian dapat dimuat secara batch ke BigQuery menggunakan proses impor file Cloud Storage standar, yang dapat dimulai menggunakan Konsol Google Cloud, antarmuka command line (CLI), atau bahkan skrip sederhana. Pemuatan batch tidak memengaruhi penyerapan streaming hot path atau performa kueri. Dalam sebagian besar kasus, sebaiknya gabungkan log cold path langsung ke tabel yang sama dengan yang digunakan oleh log hot path untuk mempermudah pemecahan masalah dan pembuatan laporan.

Peristiwa Analytics

Peristiwa Analytics dapat dibuat oleh layanan aplikasi Anda di Google Cloud atau dikirim dari klien jarak jauh. Menyerap peristiwa analisis ini melalui Pub/Sub, lalu memprosesnya di Dataflow akan menghasilkan sistem throughput tinggi dengan latensi rendah. Meskipun peristiwa analisis hot dan cold dapat dikirim ke dua topik Pub/Sub yang terpisah, Anda harus mengirim semua peristiwa ke satu topik serta memprosesnya menggunakan tugas Dataflow hot path dan cold path yang terpisah. Dengan demikian, Anda dapat mengubah jalur yang diikuti peristiwa analisis dengan memperbarui tugas Dataflow, yang lebih mudah daripada men-deploy aplikasi atau versi klien baru.

Hot path

peristiwa hot path

Beberapa peristiwa membutuhkan analisis segera. Misalnya, peristiwa mungkin menunjukkan perilaku klien yang tidak diinginkan atau pihak tidak bertanggung jawab. Sebaiknya Anda memilih peristiwa tersebut dari Pub/Sub menggunakan tugas penskalaan otomatis Dataflow, lalu mengirimkannya langsung ke BigQuery. Data ini dapat dipartisi berdasarkan tugas Dataflow untuk memastikan bahwa batas 100.000 baris per detik per tabel tidak tercapai. Hal ini juga membuat kueri berperforma baik.

Cold path

peristiwa cold path

Peristiwa yang perlu dilacak dan dianalisis setiap jam atau setiap hari, tetapi tidak pernah langsung, dapat didorong oleh Dataflow ke objek di Cloud Storage. Pemuatan dapat dimulai dari Cloud Storage ke BigQuery menggunakan Cloud Console, Google Cloud CLI, atau bahkan skrip sederhana. Anda dapat menggabungkannya ke dalam tabel yang sama dengan peristiwa hot path. Seperti halnya cold path logging, peristiwa analisis yang dimuat batch tidak memengaruhi resource kueri yang dicadangkan, dan menjaga agar pemuatan jalur penyerapan streaming tetap wajar.

Untuk informasi selengkapnya tentang pemuatan data ke BigQuery, lihat Pengantar pemuatan data.

Langkah selanjutnya