Dokumen ini menjelaskan cara Cloud Logging merutekan entri log yang diterima oleh Google Cloud. Ada beberapa jenis tujuan rute. 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 merutekan 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 level resource. Log Router 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 melakukan buffering terhadap gangguan dan pemadaman sementara yang mungkin terjadi saat entri log mengalir melalui sink. Penyimpanan sementara tidak melindungi dari error konfigurasi.
Penyimpanan sementara Router Log berbeda dengan penyimpanan jangka panjang yang disediakan oleh bucket Logging.
Entri log masuk dengan stempel waktu yang lebih 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 akan mengabaikan atau merutekan entri log. 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.
Penampung log termasuk dalam Google Cloud resource: Google Cloud project, akun penagihan, folder, dan organisasi tertentu. Resource ini juga berisi beberapa sink log. Saat resource menerima entri log, setiap sink log di resource tersebut akan mengevaluasi entri log secara independen. Akibatnya, beberapa sink 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 dengan cara yang berguna bagi Anda.
- Untuk melakukan streaming log ke aplikasi lain, repositori lain, atau pihak ketiga. Misalnya, Anda mungkin ingin mengekspor log dari Google Cloud agar dapat melihatnya di platform pihak ketiga. Untuk mengekspor entri log, buat sink log yang merutekan entri log ke Pub/Sub.
Sink log yang salah dikonfigurasi tidak merutekan entri log. Jika sink salah dikonfigurasi, entri log yang melaporkan detail error akan ditulis. Selain itu, email akan dikirim ke Kontak Penting untuk fasilitas tersebut. Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah: Melihat error.
Sink log tidak dapat merutekan entri log secara retroaktif. Artinya, sink log tidak dapat me-rutekan entri log yang diterima sebelum sink dibuat. Demikian pula, jika sink salah dikonfigurasi, sink hanya akan merutekan entri log yang masuk setelah error konfigurasi di-resolve. Namun, Anda dapat menyalin data log dari bucket log ke Cloud Storage secara retroaktif. 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 penampung gabungan, yang merutekan entri log untuk organisasi atau folder dan turunannya, ke tujuan yang ditentukan oleh penampung. Ada dua jenis sink gabungan:
- Sink gabungan yang tidak menyadap
- Mencegat sink gabungan
Perbedaan antara kedua jenis sink ini adalah bahwa sink intersepsi pada satu tingkat dalam hierarki resource dapat memengaruhi pemilihan rute untuk resource yang lebih rendah dalam hierarki. Sink yang tidak menyadap tidak memengaruhi perutean untuk resource lain. Jika sink intersepsi dalam resource cocok dengan entri log, entri log tidak akan dikirim ke sink dalam resource turunan, dengan pengecualian bahwa entri log selalu dikirim ke sink log
_Required
dalam resource tempat entri log berasal.Anda dapat mengonfigurasi Setelan resource default untuk menentukan konfigurasi sink
_Default
yang dibuat sistem untuk resource baru di organisasi atau folder. Misalnya, Anda dapat menggunakan setelan ini untuk menonaktifkan sink_Default
atau menentukan filter di sink tersebut.
Contoh pemilihan rute
Bagian ini mengilustrasikan bagaimana entri log yang berasal dari project dapat mengalir melalui sink 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 saat 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 dalam hierarki resource untuk entri log. Setelah Log Router mengirim entri log ke sink gabungan yang tidak menyadap, hal berikut akan terjadi:
Sink gabungan yang tidak mengintersepsi merutekan entri log ke tujuan sink saat entri log cocok dengan filter penyertaan, tetapi tidak cocok dengan filter pengecualian apa pun.
Router Log mengirim entri log ke sink log dalam project tempat entri log berasal.
Sink tingkat project merutekan entri log ke tujuan sink saat entri log cocok dengan filter penyertaan sink, tetapi tidak cocok dengan filter pengecualian sink.
Contoh: Penampung gabungan yang menyadap ada
Asumsikan bahwa sink gabungan yang menyadap ada dalam 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 apa pun:
- Entri log dirutekan ke tujuan sink gabungan yang mengintersepsi.
- 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 dalam project tempat entri log berasal.
Sink tingkat project merutekan entri log ke tujuan sink saat 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 tersebut 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 penggunaan
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 Google Cloud project, akun penagihan, folder, dan organisasi,
Cloud Logging membuat dua sink log, satu bernama _Required
dan yang lainnya
bernama _Default
. Filter penyertaan dan pengecualian untuk sink ini memastikan bahwa setiap entri log yang mencapai resource dirutekan oleh salah satu sink ini.
Kedua sink merutekan data log ke bucket log yang berada di resource yang sama dengan
sink log.
Bagian selanjutnya dari bagian ini memberikan informasi tentang filter dan tujuan sink log yang dibuat sistem.
Sink log _Required
Penampung log _Required
di resource merutekan sebagian log audit ke bucket log _Required
resource.
Sink ini tidak menentukan filter pengecualian, 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, 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 yang cocok dengan filter sink log _Required
, ke bucket log _Default
resource.
Karena filter inklusi untuk sink ini kosong, filter tersebut 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 memodifikasi 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, atau jika Anda telah membuat sink gabungan yang menangkap. Sink log dalam project yang merupakan tujuan sink dapat mengalihkan rute entri log ke tujuan apa pun 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 dalam 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 ditulis. Jangan tetapkan tujuan sink sebagai set data BigQuery yang tertaut. Set data tertaut bersifat hanya baca.
- Bucket Cloud Storage
- Pilih tujuan ini jika Anda menginginkan penyimpanan data log jangka panjang. Bucket Cloud Storage dapat berada dalam project yang sama dengan 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 dariGoogle Cloud , lalu menggunakan integrasi pihak ketiga seperti Splunk atau Datadog. Entri log diformat menjadi JSON, lalu dirutekan ke topik Pub/Sub.
Batasan tujuan iklan
Bagian ini menjelaskan batasan khusus tujuan:
- Jika Anda merutekan entri log ke bucket log dalam project Google Cloud yang berbeda, Error Reporting tidak akan menganalisis entri log tersebut. Untuk mengetahui informasi selengkapnya, lihat Ringkasan Pelaporan Error.
- Jika Anda merutekan entri log ke set data BigQuery, set data BigQuery harus mengaktifkan operasi tulis. 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. Penyerapan ini diproses setiap jam.
Batasan berikut berlaku jika tujuan sink log adalah project Google Cloud :
- Ada batas satu hop.
- 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 yang berasal dari resource lain, termasuk yang berasal dari projectA
. - Jika hierarki resource project
A
dan projectB
berbeda, entri log yang dirutekan sink log di projectA
ke projectB
tidak akan 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, Router Log akan mengirimkan entri log ke sink di projectA
.
Pengaruh entri log pemilihan rute 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 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 level project atau level 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 akan melewati sink log project tempat metrik berbasis log ditentukan.
Entri log disimpan di bucket log. Bucket log dapat berada di project mana pun.
Misalnya, 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 cakupan bucket, entri log disimpan di bucket log tempat metrik berbasis log ditentukan.
- Untuk metrik cakupan project, entri log akan melewati sink log project tempat metrik berbasis log ditentukan.
Untuk informasi selengkapnya, lihat Ringkasan metrik berbasis log.
Praktik terbaik
Untuk 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 kepatuhan umum
Tata kelola data: Prinsip untuk mengamankan dan mengelola log
Contoh: Memusatkan penyimpanan log
Bagian ini menguraikan cara mengonfigurasi penyimpanan terpusat. Penyimpanan terpusat menyediakan satu tempat untuk membuat kueri data log, yang menyederhanakan kueri saat Anda menelusuri tren atau menyelidiki masalah. Dari perspektif keamanan, Anda juga memiliki satu lokasi penyimpanan, yang dapat menyederhanakan tugas analis keamanan Anda.
Memusatkan penyimpanan log untuk project dalam folder
Misalkan Anda mengelola folder dan ingin memusatkan penyimpanan entri log. Untuk kasus penggunaan ini, Anda dapat melakukan hal berikut:
- Di folder, Anda membuat project bernama
CentralStorage
. - Buat sink gabungan intersepsi 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
turunan tiba, entri log tersebut akan dikirim ke
sink gabungan yang menangkap yang Anda buat. Penampung tersebut merutekan entri log
ke project bernama CentralStorage
. Penampung log dalam 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 secara terpusat. Untuk contohnya, lihat Menyimpan log audit di lokasi pusat.
Setelah pemrosesan sink gabungan selesai, entri log 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. Akibatnya, setiap project Google Cloud 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 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 sebagai 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 mengontrol entri log mana yang disimpan dan tempat penyimpanannya.
Artinya, Anda memusatkan fungsi filter dan tujuan. Jika 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 secara terpusat yang cocok dengan
sink log _Required
. 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.Konfigurasikan sink log seperti pada 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 menerapkan strategi tersebut, tinjau panduan penetapan 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: