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:
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:
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.
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:
- Entri log dirutekan ke tujuan sink gabungan yang mencegat.
- 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:
- Entri log tidak dirutekan oleh sink gabungan yang mencegat.
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 projectB
. 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
projectB
hanya menyimpan entri log yang berasal dari projectB
. Bucket log ini tidak menyimpan entri log apa pun yang berasal dari resource lain, termasuk yang berasal dari projectA
. - Jika hierarki resource project
A
dan projectB
berbeda, maka entri log yang dirutekan sink log di projectA
ke projectB
tidak dikirim ke sink gabungan dalam hierarki resource projectB
. - Jika project
A
dan projectB
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 projectA
.
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 projectB
. Asumsikan juga bahwa sink log di projectB
merutekan entri log ke bucket log. Dalam skenario ini, entri log yang dirutekan dari projectA
ke projectB
berkontribusi pada metrik berbasis log yang ditentukan sistem projectA
. Entri log ini juga berkontribusi pada metrik berbasis log yang ditentukan sistem projectB
.
- 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:
Data log: Panduan langkah demi langkah untuk mengatasi tantangan umum terkait kepatuhan
Tata kelola data: Prinsip untuk mengamankan dan mengelola log
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:
- Di folder Anda, buat project bernama
CentralStorage
. - 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 projectCentralStorage
. 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:
- Buat project bernama
CentralStorage
. - Untuk setiap project kecuali
CentralStorage
, Anda mengedit sink log_Default
dan menetapkan tujuannya ke project bernamaCentralStorage
.
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:
Untuk membuat sink guna merutekan entri log ke tujuan yang didukung, lihat Merutekan log ke tujuan yang didukung.
Untuk mempelajari cara membuat sink gabungan yang dapat merutekan entri log dari resource di folder atau organisasi, lihat Ringkasan sink gabungan.
Untuk mempelajari format entri log yang dirutekan dan cara log diatur di tujuan, lihat dokumen berikut: