Entri log rute

Dokumen ini menjelaskan cara Cloud Logging merutekan entri log yang diterima oleh Google Cloud. Ada beberapa jenis tujuan perutean. Misalnya, Anda dapat merutekan entri log ke tujuan seperti bucket log, yang menyimpan entri log. Jika ingin mengekspor data log ke tujuan pihak ketiga, Anda dapat mengarahkan entri log ke Pub/Sub. Selain itu, entri log dapat dirutekan ke beberapa tujuan.

Secara umum, berikut cara Cloud Logging merutekan dan menyimpan entri log:

Gambar yang mengilustrasikan cara Cloud Logging merutekan entri log.

Tentang Router Log

Setiap Google Cloud project, akun penagihan, folder, dan organisasi memiliki Log Router, yang mengelola alur entri log melalui sink tingkat resource. Router Log juga mengelola alur entri log melalui sink yang ada dalam hierarki resource entri. Sink mengontrol cara entri log dirutekan ke tujuan.

Router Log menyimpan entri log untuk sementara. Perilaku ini melindungi dari gangguan dan pemadaman sementara yang mungkin terjadi saat entri log mengalir melalui sink. Penyimpanan sementara tidak melindungi terhadap error konfigurasi.

Penyimpanan sementara Router Log berbeda dengan penyimpanan jangka panjang yang disediakan oleh bucket Logging.

Entri log masuk dengan stempel waktu yang lebih lama dari periode retensi log di masa lalu atau yang lebih dari 24 jam pada masa mendatang akan dihapus.

Tentang sink log

Saat menerima entri log, sink log akan menentukan apakah entri log tersebut harus diabaikan atau dirutekan. Keputusan ini dibuat dengan membandingkan entri log dengan filter di sink log. Saat entri log dirutekan, sink log akan mengirim entri log ke tujuan yang ditentukan oleh sink log. Tujuan tersebut dapat berupa project, lokasi penyimpanan, atau layanan.

Sink log termasuk dalam Google Cloud resource Google Cloud tertentu:project, akun penagihan, folder, dan organisasi. Resource ini juga berisi beberapa tujuan log. Saat menerima entri log, setiap sink log di resource tersebut akan mengevaluasi entri log secara independen. Akibatnya, beberapa tujuan log dapat merutekan entri log yang sama.

Secara default, data log disimpan di project tempat data berasal. Namun, ada beberapa alasan mengapa Anda mungkin ingin mengubah konfigurasi ini:

  • Untuk memusatkan penyimpanan data log Anda.
  • Untuk menggabungkan data log Anda dengan data bisnis lainnya.
  • Untuk mengatur data log Anda dengan cara yang berguna bagi Anda.
  • Untuk menstreaming log Anda ke aplikasi lain, repositori lain, atau pihak ketiga. Misalnya, Anda mungkin ingin mengekspor log dari Google Cloud agar Anda dapat melihatnya di platform pihak ketiga. Untuk mengekspor entri log Anda, buat sink log yang merutekan entri log Anda ke Pub/Sub.

Sink log yang salah dikonfigurasi tidak akan merutekan entri log. Jika sink salah dikonfigurasi, entri log yang melaporkan detail error akan ditulis. Selain itu, email akan dikirim ke Kontak Penting untuk resource tersebut. Untuk mengetahui informasi selengkapnya, lihat Pemecahan masalah: Melihat error.

Sink log tidak dapat merutekan entri log secara retroaktif. Artinya, tujuan log tidak dapat merutekan entri log yang diterima sebelum tujuan dibuat. Demikian pula, jika sink salah dikonfigurasi, sink hanya merutekan entri log yang tiba setelah error konfigurasi diselesaikan. Namun, Anda dapat menyalin data log secara retroaktif dari bucket log ke Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Menyalin log.

Dukungan untuk organisasi dan folder

Untuk membantu Anda mengelola data log di organisasi atau folder, Anda dapat melakukan hal berikut:

  • Anda dapat membuat sink gabungan, yang merutekan entri log untuk organisasi atau folder dan turunannya, ke tujuan yang ditentukan oleh sink. Ada dua jenis sink gabungan:

    • Sink gabungan yang tidak mencegat
    • Menyadap sink gabungan

    Perbedaan antara kedua jenis sink ini adalah bahwa sink yang mencegat pada satu tingkat dalam hierarki resource dapat memengaruhi perutean untuk resource yang lebih rendah dalam hierarki. Sink yang tidak menyadap tidak memengaruhi perutean untuk resource lainnya. Jika sink yang mencegat di resource cocok dengan entri log, entri log tidak akan dikirim ke sink di resource turunan, dengan pengecualian bahwa entri log selalu dikirim ke sink log _Required di resource tempat entri log berasal.

  • Anda dapat mengonfigurasi Setelan resource default untuk menentukan konfigurasi sink _Default yang dibuat sistem untuk resource baru dalam organisasi atau folder. Misalnya, Anda dapat menggunakan setelan ini untuk menonaktifkan penerima _Default atau menentukan filter di penerima tersebut.

Contoh perutean

Bagian ini menggambarkan cara entri log yang berasal dari project dapat mengalir melalui sinki dalam hierarki resource-nya.

Contoh: Tidak ada sink gabungan

Jika tidak ada sink gabungan dalam hierarki resource entri log, entri log akan dikirim ke sink log di project tempat entri log berasal. Sink tingkat project merutekan entri log ke tujuan sink jika entri log cocok dengan filter penyertaan sink, tetapi tidak cocok dengan filter pengecualian sink.

Contoh: Ada sink gabungan yang tidak menyadap

Asumsikan bahwa sink gabungan yang tidak menyadap ada di hierarki resource untuk entri log. Setelah Log Router mengirim entri log ke sink gabungan yang tidak mencegat, hal berikut akan terjadi:

  1. Sink gabungan yang tidak mencegat merutekan entri log ke tujuan sink jika entri log cocok dengan filter penyertaan, tetapi tidak cocok dengan filter pengecualian apa pun.

  2. Router Log mengirim entri log ke sink log di project tempat entri log berasal.

    Sink tingkat project merutekan entri log ke tujuan sink jika entri log cocok dengan filter penyertaan sink, tetapi tidak cocok dengan filter pengecualian sink.

Contoh: Sink gabungan yang mencegat ada

Asumsikan bahwa sink gabungan yang mencegat ada di hierarki resource untuk entri log. Setelah Log Router mengirim entri log ke sink gabungan yang mencegat, salah satu hal berikut akan terjadi:

  • Entri log cocok dengan filter penyertaan, tetapi tidak cocok dengan filter pengecualian mana pun:

    1. Entri log dirutekan ke tujuan sink gabungan yang mencegat.
    2. Entri log dikirim ke sink _Required di project tempat entri log berasal.
  • Entri log tidak cocok dengan filter penyertaan atau cocok dengan setidaknya satu filter pengecualian:

    1. Entri log tidak dirutekan oleh sink gabungan yang mencegat.
    2. Router Log mengirim entri log ke sink log di project tempat entri log berasal.

      Sink tingkat project merutekan entri log ke tujuan sink jika entri log cocok dengan filter penyertaan sink, tetapi tidak cocok dengan filter pengecualian sink.

Filter sink log

Setiap sink log berisi satu filter penyertaan dan dapat berisi beberapa filter pengecualian. Filter ini menentukan apakah sink log merutekan entri log ke tujuan sink. Jika Anda tidak menentukan filter apa pun, setiap entri log akan dirutekan ke tujuan sink.

Entri log dirutekan oleh sink log berdasarkan aturan berikut:

  • Jika entri log tidak cocok dengan filter penyertaan, entri log tidak akan dirutekan. Jika sink tidak menentukan filter penyertaan, setiap entri log akan cocok dengan filter tersebut.

  • Jika entri log cocok dengan filter penyertaan dan setidaknya satu filter pengecualian, entri log tersebut tidak akan dirutekan.

  • Jika entri log cocok dengan filter penyertaan dan tidak cocok dengan filter pengecualian apa pun, entri log tersebut akan dirutekan ke tujuan sink.

Filter di sink log ditentukan menggunakan Bahasa kueri Logging.

Anda tidak dapat menggunakan filter pengecualian untuk mengurangi konsumsi kuota API entries.write atau jumlah panggilan API entries.write. Filter pengecualian diterapkan setelah entri log diterima oleh Logging API.

Sink log yang dibuat sistem

Untuk setiap project, akun penagihan, folder, dan organisasi Google Cloud , Cloud Logging membuat dua sink log, satu bernama _Required dan yang lainnya bernama _Default. Filter penyertaan dan pengecualian untuk sink ini memverifikasi bahwa setiap entri log yang mencapai resource dirutekan oleh salah satu sink ini. Kedua sink mengarahkan data log ke bucket log yang berada di resource yang sama dengan sink log.

Bagian selanjutnya dalam bagian ini memberikan informasi tentang filter dan tujuan sink log yang dibuat sistem.

Sink log _Required

Sink log _Required dalam resource, merutekan subset log audit ke bucket log _Required resource. Sink ini tidak menentukan filter pengecualian apa pun, dan filter penyertaan adalah seperti yang ditunjukkan:

LOG_ID("cloudaudit.googleapis.com/activity") OR
LOG_ID("externalaudit.googleapis.com/activity") OR
LOG_ID("cloudaudit.googleapis.com/system_event") OR
LOG_ID("externalaudit.googleapis.com/system_event") OR
LOG_ID("cloudaudit.googleapis.com/access_transparency") OR
LOG_ID("externalaudit.googleapis.com/access_transparency")

Sink log _Required hanya cocok dengan entri log yang berasal dari resource tempat sink log _Required ditentukan. Misalnya, anggaplah sink log merutekan entri log aktivitas dari project A ke project B. Karena entri log tidak berasal dari project B, sink log _Required di project B tidak merutekan entri log ini ke bucket log _Required.

Anda tidak dapat mengubah atau menghapus sink log _Required.

Sink log _Default

Sink log _Default dalam resource, merutekan semua entri log kecuali entri yang cocok dengan filter sink log _Required, ke bucket log _Default resource. Karena filter inklusi untuk sink ini kosong, filter ini cocok dengan semua entri log. Namun, filter pengecualian dikonfigurasi sebagai berikut:

NOT LOG_ID("cloudaudit.googleapis.com/activity") AND
NOT LOG_ID("externalaudit.googleapis.com/activity") AND
NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND
NOT LOG_ID("externalaudit.googleapis.com/system_event") AND
NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND
NOT LOG_ID("externalaudit.googleapis.com/access_transparency")

Anda dapat mengubah dan menonaktifkan sink log _Default. Misalnya, Anda dapat mengedit sink log _Default dan mengubah tujuannya. Anda juga dapat mengubah filter yang ada dan menambahkan filter pengecualian.

Tujuan sink

Tujuan sink dapat berada di resource yang berbeda dengan sink. Misalnya, Anda dapat menggunakan sink log untuk merutekan entri log dari satu project ke bucket log yang disimpan di project lain.

Tujuan berikut didukung:

Google Cloud project

Pilih tujuan ini jika Anda ingin sink log di project tujuan merutekan ulang entri log Anda, atau jika Anda telah membuat sink gabungan yang mencegat. Sink log di project yang menjadi tujuan sink dapat mengalihkan entri log ke tujuan yang didukung kecuali project.

Bucket log
Pilih tujuan ini jika Anda ingin menyimpan data log di resource yang dikelola oleh Cloud Logging. Data log yang disimpan di bucket log dapat dilihat dan dianalisis menggunakan layanan seperti Logs Explorer.
Set data BigQuery
Pilih tujuan ini jika Anda ingin menggabungkan data log dengan data bisnis lainnya. Set data yang Anda tentukan harus diaktifkan untuk penulisan. Jangan menetapkan tujuan sink ke set data BigQuery yang ditautkan. Set data tertaut bersifat hanya baca.
Bucket Cloud Storage
Pilih tujuan ini jika Anda menginginkan penyimpanan jangka panjang untuk data log Anda. Bucket Cloud Storage dapat berada dalam project yang sama dengan tempat asal entri log, atau dalam project yang berbeda. Entri log disimpan sebagai file JSON.
Topik Pub/Sub
Pilih tujuan ini jika Anda ingin mengekspor data log dari Google Cloud , lalu menggunakan integrasi pihak ketiga seperti Splunk atau Datadog. Entri log diformat ke dalam JSON, lalu dirutekan ke topik Pub/Sub.

Batasan tujuan

Bagian ini menjelaskan batasan khusus tujuan:

  • Jika Anda mengarahkan entri log ke bucket log di project yang berbeda, Error Reporting tidak akan menganalisis entri log tersebut. Google Cloud Untuk mengetahui informasi selengkapnya, lihat Ringkasan Error Reporting.
  • Jika Anda mengarahkan entri log ke set data BigQuery, set data BigQuery harus diaktifkan untuk penulisan. Anda tidak dapat merutekan entri log ke set data tertaut, yang bersifat hanya baca.
  • Sink baru yang merutekan data log ke bucket Cloud Storage mungkin memerlukan waktu beberapa jam untuk mulai merutekan entri log. Sinkronisasi ini diproses setiap jam.
  • Batasan berikut berlaku saat tujuan sink log adalah project Google Cloud :

    • Ada batas satu lompatan.
    • Entri log yang cocok dengan filter sink log _Required hanya dirutekan ke bucket log _Required project tujuan jika berasal dari project tujuan.
    • Hanya sink gabungan yang berada dalam hierarki resource entri log yang memproses entri log.

    Misalnya, asumsikan tujuan sink log di project A adalah project B. Kemudian, hal berikut berlaku:

    • Karena batas satu hop, sink log di project B tidak dapat mengalihkan entri log ke project Google Cloud .
    • Bucket log _Required project B hanya menyimpan entri log yang berasal dari project B. Bucket log ini tidak menyimpan entri log apa pun yang berasal dari resource lain, termasuk yang berasal dari project A.
    • Jika hierarki resource project A dan project B berbeda, maka entri log yang dirutekan sink log di project A ke project B tidak dikirim ke sink gabungan dalam hierarki resource project B.
    • Jika project A dan project B memiliki hierarki resource yang sama, entri log akan dikirim ke sink gabungan dalam hierarki tersebut. Jika entri log tidak dicegat oleh sink gabungan, Log Router akan mengirimkan entri log ke sink di project A.

Pengaruh perutean entri log terhadap metrik berbasis log

Metrik berbasis log adalah metrik Cloud Monitoring yang berasal dari konten entri log. Misalnya, Anda dapat menggunakan metrik berbasis log untuk menghitung jumlah entri log yang berisi pesan tertentu atau untuk mengekstrak informasi latensi yang dicatat dalam entri log. Anda dapat menampilkan metrik berbasis log dalam diagram Cloud Monitoring, dan kebijakan pemberitahuan dapat memantau metrik ini.

Metrik berbasis log yang ditentukan sistem berlaku di tingkat project. Metrik berbasis log yang ditentukan pengguna dapat diterapkan di tingkat project atau tingkat bucket log. Metrik berbasis log dengan cakupan bucket berguna saat Anda menggunakan sink gabungan untuk merutekan entri log ke bucket log, dan saat Anda merutekan entri log dari satu project ke bucket log di project lain.

Metrik berbasis log yang ditentukan sistem
Router Log menghitung entri log jika semua hal berikut benar:
  • Entri log melewati sink log project tempat metrik berbasis log ditetapkan.
  • Entri log disimpan di bucket log. Bucket log dapat berada di project mana pun.

    Misalnya, anggap project A memiliki sink log yang tujuannya adalah project B. Asumsikan juga bahwa sink log di project B merutekan entri log ke bucket log. Dalam skenario ini, entri log yang dirutekan dari project A ke project B berkontribusi pada metrik berbasis log yang ditentukan sistem project A. Entri log ini juga berkontribusi pada metrik berbasis log yang ditentukan sistem project B.

Metrik berbasis log yang ditentukan pengguna
Router Log menghitung entri log jika semua hal berikut benar:
  • Penagihan diaktifkan di project tempat metrik berbasis log ditentukan.
  • Untuk metrik dengan cakupan bucket, entri log disimpan di bucket log tempat metrik berbasis log ditentukan.
  • Untuk metrik cakupan project, entri log melewati sink log project tempat metrik berbasis log ditentukan.

Untuk mengetahui informasi selengkapnya, lihat Ringkasan metrik berbasis log.

Praktik terbaik

Untuk mengetahui praktik terbaik tentang penggunaan perutean untuk tata kelola data atau untuk kasus penggunaan umum, lihat dokumen berikut:

Contoh: Memusatkan penyimpanan log

Bagian ini menguraikan cara Anda dapat mengonfigurasi penyimpanan terpusat. Penyimpanan terpusat menyediakan satu tempat untuk membuat kueri data log, yang menyederhanakan kueri Anda saat Anda menelusuri tren atau menyelidiki masalah. Dari perspektif keamanan, Anda juga memiliki satu lokasi penyimpanan, yang dapat menyederhanakan tugas analis keamanan Anda.

Jika Anda memusatkan penyimpanan log, pertimbangkan apakah akan mengenakan hak gadai pada project yang menyimpan data log Anda. Lien dapat mencegah penghapusan project secara tidak sengaja. Untuk mempelajari lebih lanjut, lihat Melindungi project dengan lien.

Memusatkan penyimpanan log untuk project dalam folder

Misalkan Anda mengelola folder dan ingin memusatkan penyimpanan entri log Anda. Untuk kasus penggunaan ini, Anda dapat melakukan hal berikut:

  1. Di folder Anda, buat project bernama CentralStorage.
  2. Buat sink gabungan yang mencegat untuk folder Anda dan konfigurasikan sink tersebut untuk merutekan semua entri log. Anda menetapkan tujuan sink menjadi project bernama CentralStorage.

Saat entri log yang berasal dari folder atau salah satu resource turunannya tiba, entri log tersebut akan dikirim ke sink gabungan yang mencegat yang Anda buat. Sink tersebut merutekan entri log ke project bernama CentralStorage. Sink log di project ini memproses entri log:

  • Sink log _Default merutekan semua entri log yang cocok dengan filter sink ke bucket log _Default. Bucket log ini adalah lokasi penyimpanan terpusat Anda.

  • Sink log _Required merutekan ke bucket log _Required entri log yang cocok dengan filter sink dan yang berasal dari project CentralStorage. Bucket log ini bukan lokasi penyimpanan terpusat. Namun, Anda dapat menyimpan semua data log Anda secara terpusat. Untuk melihat contohnya, lihat Menyimpan log audit di lokasi pusat.

Setelah pemrosesan sink gabungan selesai, entri log akan dikirim ke sink log _Required di resource tempat entri log berasal. Jika entri log cocok dengan filter di sink log _Required, entri log akan dirutekan ke bucket log _Required resource. Oleh karena itu, setiap Google Cloud project di folder Anda menyimpan entri log di bucket log _Required-nya.

Memusatkan penyimpanan log untuk sekumpulan project

Anda juga dapat menyimpan entri log di satu lokasi jika Anda tidak memiliki organisasi atau folder. Misalnya, Anda dapat melakukan hal berikut:

  1. Buat project bernama CentralStorage.
  2. Untuk setiap project kecuali CentralStorage, Anda mengedit sink log _Default dan menetapkan tujuannya ke project bernama CentralStorage.

Anda mungkin bertanya-tanya mengapa contoh sebelumnya menetapkan tujuan sink log _Default menjadi project, bukan bucket log _Default dalam project tersebut. Alasan utamanya adalah kesederhanaan dan konsistensi. Saat Anda merutekan entri log ke project, sink log di project tujuan akan mengontrol entri log mana yang disimpan dan tempat penyimpanannya. Artinya, Anda memusatkan fungsi filter dan tujuan. Jika Anda ingin mengubah entri log yang disimpan atau tempat penyimpanannya, Anda hanya perlu mengubah sink log di satu project.

Memusatkan penyimpanan log untuk log audit

Anda dapat menyimpan entri log yang cocok dengan sink log _Required secara terpusat. Jika Anda ingin menyimpan entri log ini secara terpusat, lakukan salah satu hal berikut:

  • Buat sink log yang merutekan entri log yang cocok dengan sink log _Required ke bucket log terpusat.

  • Konfigurasi sink log seperti dalam dua contoh sebelumnya, lalu tambahkan sink log di project tujuan yang merutekan entri log yang cocok dengan sink log _Required ke bucket log. Anda juga dapat mengedit filter di sink log _Default.

Sebelum Anda menerapkan strategi tersebut, tinjau panduan harga.

Harga

Untuk mempelajari harga Cloud Logging, lihat Harga Google Cloud Observability.

Langkah berikutnya

Untuk membantu Anda merutekan dan menyimpan data Cloud Logging, lihat dokumen berikut: