Sink gabungan di Cloud Logging memungkinkan Anda menggabungkan dan merutekan entri log dari semua resource dalam folder atau organisasi ke tujuan pusat. Anda dapat mengonfigurasi sink gabungan sebagai sink yang mencegat atau tidak mencegat, menentukan filter untuk mengontrol entri log mana yang dirutekan, dan memberikan izin sink untuk menulis ke tujuannya.
Batasan
Saat Anda mengonfigurasi sink gabungan, batasan berikut berlaku:
Jalur tujuan hanya dapat menyertakan endpoint layanan global, seperti
pubsub.googleapis.com. Anda tidak dapat menyertakan endpoint layanan regional (REP) sepertipubsub.LOCATION.rep.googleapis.com. Untuk mengetahui daftar jalur tujuan yang didukung, lihat Format jalur tujuan.Perutean data log ke topik Pub/Sub dengan batasan dalam pengiriman tidak didukung. Jika Anda mengonfigurasi sink log ke topik Pub/Sub dengan batasan dalam pengiriman, Anda mungkin melihat error konfigurasi
topic_region_not_alloweddan log yang dihapus.
Merutekan entri log ke resource yang dilindungi oleh perimeter layanan mengharuskan Anda menambahkan aturan ingress ke perimeter yang mengizinkan akses dari akun layanan sink:
Jika Anda menggunakan sink log gabungan untuk merutekan entri log ke bucket Cloud Storage yang berada dalam perimeter, gunakan
ANY_IDENTITYsebagai jenis identitas dalam aturan ingress. Anda tidak dapat menggunakanANY_SERVICE_ACCOUNTatauANY_USER_ACCOUNTsebagai jenis identitas untuk tujuan ini.Anda tidak perlu mengonfigurasi aturan ingress untuk sink yang tidak digabungkan.
Sebelum memulai
Sebelum Anda membuat sink, pastikan hal berikut:
Anda memahami perilaku sink gabungan. Untuk mengetahui informasi selengkapnya, lihat Ringkasan sink gabungan.
Anda memiliki folder Google Cloud atau organisasi dengan entri log yang dapat Anda lihat di Logs Explorer.
Anda memiliki salah satu peran Identity and Access Management berikut untuk Google Cloud organisasi atau folder tempat Anda merutekan entri log:
- Pemilik (
roles/owner) - Logging Admin (
roles/logging.admin) - Logs Configuration Writer (
roles/logging.configWriter)
Izin yang terdapat dalam peran ini memungkinkan Anda membuat, menghapus, atau mengubah sink. Untuk mengetahui informasi tentang cara menetapkan peran IAM, lihat Panduan kontrol akses Logging.
- Pemilik (
Tujuan sink gabungan ada atau Anda memiliki kemampuan untuk membuatnya. Tujuan dapat berada di project Google Cloud mana pun dan di organisasi mana pun. Untuk mengetahui daftar tujuan yang didukung dan batasannya, lihat Tujuan yang didukung.
Pilih antarmuka yang ingin Anda gunakan:
Konsol
Saat menggunakan konsol Google Cloud untuk mengakses layanan dan API Google Cloud , Anda tidak perlu menyiapkan autentikasi.
gcloud
Di konsol Google Cloud , aktifkan Cloud Shell.
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI.
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
Membuat sink gabungan
Untuk mengonfigurasi sink gabungan, buat sink, lalu beri sink izin untuk menulis ke tujuan. Bagian ini menjelaskan cara membuat sink gabungan. Untuk mengetahui informasi tentang cara memberikan izin ke sink, lihat Menetapkan izin tujuan.
Anda dapat membuat hingga 200 sink per folder atau organisasi.
Konsol
Untuk membuat sink gabungan untuk folder atau organisasi Anda, lakukan hal berikut:
-
Di konsol Google Cloud , buka halaman Log Router:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
Pilih folder atau organisasi yang sudah ada.
Pilih Create sink.
Di panel Sink details, masukkan detail berikut:
Sink name: Berikan ID untuk sink. Setelah membuat sink, Anda tidak dapat mengganti namanya, tetapi Anda dapat menghapusnya dan membuat yang baru.
Deskripsi sink (opsional): Jelaskan tujuan atau kasus penggunaan sink.
Di menu Select sink service, pilih jenis tujuan, lalu lengkapi dialog untuk menentukan tujuan. Anda dapat memilih tujuan yang ada atau membuat tujuan.
Untuk sink intersepsi, pilih Google Cloud project, lalu masukkan nama yang sepenuhnya memenuhi syarat untuk tujuan Google Cloud project:
logging.googleapis.com/projects/DESTINATION_PROJECT_IDUntuk sink non-intersepsi, pilih tujuan, lalu masukkan nama tujuan yang sepenuhnya memenuhi syarat. Tujuan berikut didukung:
Google Cloud project
logging.googleapis.com/projects/DESTINATION_PROJECT_IDBucket logging
logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
BigQuery dataset
Masukkan nama set data yang dapat ditulis. Jangan masukkan nama set data BigQuery tertaut; set data ini bersifat hanya baca. Anda dapat menggunakan tabel berpartisi.
bigquery.googleapis.com/projects/DESTINATION_PROJECT_ID/datasets/DATASET_ID
Bucket Cloud Storage
storage.googleapis.com/BUCKET_NAME
Topik Pub/Sub
Jangan masukkan nama topik Pub/Sub yang menerapkan batasan saat transit.
pubsub.googleapis.com/projects/DESTINATION_PROJECT_ID/topics/TOPIC_ID
Splunk
Masukkan topik Pub/Sub untuk layanan Splunk Anda.
Di panel Choose logs to include in sink, pilih resource yang akan disertakan dalam sink.
Untuk sink intersepsi, pilih Intercept logs ingested by this organization and all child resources.
Untuk sink non-penyisipan, pilih Sertakan log yang diserap oleh resource ini dan semua resource turunan.
Di kolom Filter sertakan build, masukkan ekspresi filter yang cocok dengan entri log yang ingin Anda sertakan. Jika Anda tidak menetapkan filter, semua entri log dari resource yang dipilih akan dirutekan ke tujuan.
Misalnya, Anda mungkin ingin membuat filter untuk merutekan semua log audit Akses Data ke satu bucket Logging. Filter ini terlihat seperti berikut:
LOG_ID("cloudaudit.googleapis.com/data_access") OR LOG_ID("externalaudit.googleapis.com/data_access")Untuk mengetahui contohnya, lihat Filter untuk sink gabungan.
Perhatikan bahwa panjang filter tidak boleh melebihi 20.000 karakter.
Opsional: Untuk memverifikasi bahwa Anda memasukkan filter yang benar, pilih Preview logs. Tindakan ini akan membuka Logs Explorer di tab baru dengan filter yang telah diisi otomatis.
Opsional: Di panel Choose logs to exclude from the sink, lakukan hal berikut:
Di kolom Nama filter pengecualian, masukkan nama.
Di kolom Build an exclusion filter, masukkan ekspresi filter yang cocok dengan entri log yang ingin Anda kecualikan. Anda juga dapat menggunakan fungsi
sampleuntuk memilih bagian entri log yang akan dikecualikan.Misalnya, untuk mengecualikan entri log dari project tertentu agar tidak dirutekan ke tujuan, tambahkan filter pengecualian berikut:
logName:projects/PROJECT_ID
Untuk mengecualikan entri log dari beberapa project, gunakan operator OR logis untuk menggabungkan klausa
logName.
Anda dapat membuat hingga 50 filter pengecualian per sink. Perhatikan bahwa panjang filter tidak boleh melebihi 20.000 karakter.
Pilih Create sink.
Untuk menyelesaikan konfigurasi sink gabungan, berikan izin kepada akun layanan sink untuk menulis entri log ke tujuan sink. Untuk mengetahui informasi selengkapnya, lihat Menetapkan izin tujuan.
gcloud
Untuk membuat sink gabungan, gunakan perintah logging sinks create:
Untuk membuat sink, jalankan perintah
gcloud logging sinks createdan sertakan flag--include-children.Sebelum menggunakan perintah berikut, lakukan penggantian berikut:
- SINK_NAME: Nama sink log. Anda tidak dapat mengubah nama sink setelah membuatnya.
- SINK_DESTINATION: Layanan atau project tempat Anda ingin merutekan entri log. Untuk informasi tentang format tujuan ini, lihat Format jalur tujuan.
- INCLUSION_FILTER: Filter penyertaan untuk sink. Untuk mengetahui contohnya, lihat Filter untuk sink gabungan.
- FOLDER_ID: ID folder. Jika Anda ingin membuat sink di tingkat organisasi, ganti
--folder=FOLDER_IDdengan--organization=ORGANIZATION_ID.
Jalankan perintah
gcloud logging sinks create:gcloud logging sinks create SINK_NAME \ SINK_DESTINATION --include-children \ --folder=FOLDER_ID --log-filter="INCLUSION_FILTER"
Untuk membuat sink intersepsi, sertakan juga flag
--intercept-children.Misalnya, jika Anda membuat sink gabungan tingkat folder yang tujuannya adalah topik Pub/Sub, perintah Anda mungkin terlihat seperti berikut:
gcloud logging sinks create SINK_NAME \ pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID --include-children \ --folder=FOLDER_ID --log-filter="logName:activity"
Beri akun layanan untuk sink izin menulis ke tujuan sink Anda. Untuk mengetahui informasi selengkapnya, lihat Menetapkan izin tujuan.
REST
Untuk membuat sink gabungan, gunakan metode Logging API organizations.sinks.create atau folders.sinks.create.
Siapkan argumen untuk metode ini sebagai berikut:
Tetapkan kolom
parentmenjadi organisasi atau folder Google Cloud tempat sink akan dibuat. Induk harus berupa salah satu dari berikut:organizations/ORGANIZATION_IDfolders/FOLDER_ID
Dalam objek
LogSinkdi isi permintaan metode, lakukan salah satu hal berikut:Tetapkan
includeChildrenketrue.Untuk membuat sink intersepsi, tetapkan juga kolom
interceptChildrenketrue.
Tetapkan kolom
filteragar cocok dengan entri log yang ingin Anda sertakan.Misalnya, lihat Filter untuk sink gabungan.
Panjang filter tidak boleh melebihi 20.000 karakter.
Tetapkan kolom
LogSinkyang tersisa seperti yang Anda lakukan untuk sink mana pun. Untuk mengetahui informasi selengkapnya, lihat Merutekan log ke tujuan yang didukung.Panggil
organizations.sinks.createataufolders.sinks.createuntuk membuat sink.Beri akun layanan untuk sink izin menulis ke tujuan sink Anda. Untuk mengetahui informasi selengkapnya, lihat Menetapkan izin tujuan.
Setiap perubahan yang dilakukan pada sink mungkin memerlukan waktu beberapa menit untuk diterapkan.
Menetapkan izin tujuan
Bagian ini menjelaskan cara memberikan izin IAM yang diperlukan kepada identitas penulis sink log agar sink dapat menulis entri log ke tujuan sink. Identitas penulis adalah ID akun layanan yang terkait dengan sink; identitas ini mencakup alamat email yang mengidentifikasi akun utama yang harus memiliki akses untuk menulis data ke tujuan.
Anda tidak perlu menetapkan izin tujuan saat sink log merutekan entri log ke bucket log dalam project yang sama. Untuk konfigurasi ini, akun layanan tidak diperlukan. Untuk semua konfigurasi lainnya, Logging otomatis membuat dan mengelola akun layanan untuk sink log, dan Anda harus menetapkan izin tujuan:
- Mulai 22 Mei 2023, Logging menggunakan akun layanan yang sama untuk semua sink di resource yang mendasarinya. Resource dapat berupa Google Cloud project, organisasi, folder, atau akun penagihan.
- Sebelum 22 Mei 2023, Logging membuat akun layanan untuk setiap sink.
Jika tujuan sink dilindungi oleh perimeter layanan Kontrol Layanan VPC, Anda juga harus menambahkan aturan ingress ke perimeter tujuan yang mengizinkan akses dari identitas penulis sink. Untuk mengetahui informasi selengkapnya, lihat Batasan.
Untuk menetapkan izin bagi sink Anda agar dapat merutekan ke tujuannya, lakukan hal berikut:
Konsol
Untuk mendapatkan informasi tentang akun layanan untuk sink Anda, lakukan hal berikut:
-
Di konsol Google Cloud , buka halaman Log Router:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
Pilih more_vert Menu, lalu pilih View sink details. Identitas penulis akan muncul di panel Sink details.
Jika nilai kolom
writerIdentityberisi alamat email, lanjutkan ke langkah berikutnya. Jika nilainya adalahNone, Anda tidak perlu mengonfigurasi izin tujuan.Salin identitas penulis sink ke papan klip Anda. Identitas penulis mungkin terlihat berbeda bergantung pada resource tempat sink Anda berada, tetapi selalu diawali dengan
serviceAccount:. Berikut adalah contoh identitas penulis:serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
-
Beri akun utama yang ditentukan oleh identitas penulis sink izin untuk menulis data log ke tujuan:
-
Di konsol Google Cloud , buka halaman IAM:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah IAM & Admin.
Di toolbar konsol Google Cloud , pilih project yang menyimpan tujuan sink gabungan. Jika tujuannya adalah project, pilih project tersebut.
Klik Grant access.
Masukkan akun utama yang ditentukan oleh identitas penulis sink, lalu berikan peran IAM:
- Untuk semua tujuan, berikan
peran Logs Writer
(
roles/logging.logWriter). Secara khusus, akun utama memerlukan izinlogging.logEntries.route. - Berikan salah satu peran berikut berdasarkan tujuan:
- Bucket log: Berikan
peran Logs Bucket Writer
(
roles/logging.bucketWriter). - Bucket Cloud Storage: Berikan
peran Storage Object Creator
(
roles/storage.objectCreator). - Set data BigQuery: Berikan
peran BigQuery Data Editor
(
roles/bigquery.dataEditor). - Topik Pub/Sub, termasuk Splunk: Berikan
peran Pub/Sub Publisher
(
roles/pubsub.publisher).
- Bucket log: Berikan
peran Logs Bucket Writer
(
- Untuk semua tujuan, berikan
peran Logs Writer
(
-
gcloud
Pastikan Anda memiliki akses Owner di Google Cloud project yang berisi tujuan. Jika Anda tidak memiliki akses Owner ke tujuan sink, minta pemilik project untuk menambahkan identitas penulis sebagai akun utama.
Untuk mendapatkan informasi tentang akun layanan untuk sink Anda, jalankan perintah
gcloud logging sinks describe.Sebelum menggunakan perintah berikut, lakukan penggantian berikut:
- SINK_NAME: Nama sink log. Anda tidak dapat mengubah nama sink setelah membuatnya.
Jalankan perintah
gcloud logging sinks describe:gcloud logging sinks describe SINK_NAMEJika detail sink berisi kolom berlabel
writerIdentity, lanjutkan ke langkah berikutnya. Jika detailnya tidak menyertakan kolomwriterIdentity, Anda tidak perlu mengonfigurasi izin tujuan untuk sink.Salin identitas penulis sink ke papan klip Anda. Berikut ini mengilustrasikan identitas penulis:
serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.comBerikan izin kepada identitas penulis sink untuk menulis data log ke tujuan dengan menjalankan perintah
gcloud projects add-iam-policy-binding.Sebelum menggunakan perintah berikut, lakukan penggantian berikut:
- PROJECT_ID: ID project. Pilih project yang menyimpan tujuan sink gabungan. Jika tujuannya adalah project, pilih project tersebut.
- PRINCIPAL: ID untuk akun utama yang ingin Anda
berikan peran. ID utama biasanya memiliki bentuk berikut:
PRINCIPAL-TYPE:ID. Misalnya,user:my-user@example.com. Untuk mengetahui daftar lengkap format yang dapat dimilikiPRINCIPAL, lihat ID utama. ROLE: Peran IAM. Berikan peran IAM kepada identitas penulis sink berdasarkan tujuan sink log:
- Untuk semua tujuan, berikan
peran Logs Writer
(
roles/logging.logWriter). Secara khusus, akun utama memerlukan izinlogging.logEntries.route. - Berikan salah satu peran berikut berdasarkan tujuan:
- Bucket log: Berikan
peran Logs Bucket Writer
(
roles/logging.bucketWriter). - Bucket Cloud Storage: Berikan
peran Storage Object Creator
(
roles/storage.objectCreator). - Set data BigQuery: Berikan
peran BigQuery Data Editor
(
roles/bigquery.dataEditor). - Topik Pub/Sub, termasuk Splunk: Berikan
peran Pub/Sub Publisher
(
roles/pubsub.publisher).
- Bucket log: Berikan
peran Logs Bucket Writer
(
- Untuk semua tujuan, berikan
peran Logs Writer
(
Jalankan perintah
gcloud projects add-iam-policy-binding:gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role=ROLE
REST
Sebaiknya gunakan konsol Google Cloud atau Google Cloud CLI untuk memberikan peran ke akun layanan.
Filter untuk sink gabungan
Bagian ini memberikan contoh filter yang mungkin Anda gunakan di sink gabungan. Untuk contoh lainnya, lihat Contoh kueri menggunakan Logs Explorer.
Beberapa contoh menggunakan notasi berikut:
:adalah operator substring. Jangan mengganti operator=....mewakili perbandingan filter tambahan.- Variabel ditunjukkan dengan teks berwarna. Ganti dengan nilai yang valid.
Panjang filter dibatasi hingga 20.000 karakter.
Untuk mengetahui detail selengkapnya tentang sintaksis pemfilteran, lihat Bahasa kueri logging.
Pilih sumber log
Untuk merutekan entri log dari semua resource turunan, jangan tentukan project, folder, atau organisasi dalam filter penyertaan dan filter kecualikan sink Anda. Misalnya, Anda mengonfigurasi sink gabungan untuk organisasi dengan filter berikut:
resource.type="gce_instance"
Dengan filter ini, sink gabungan akan merutekan entri log dari instance Compute Engine di resource turunan organisasi tersebut ke tujuan.
Namun, mungkin ada situasi saat Anda ingin menggunakan sink gabungan
untuk merutekan entri log hanya dari resource turunan tertentu. Misalnya, untuk alasan kepatuhan, Anda mungkin ingin menyimpan log audit dari folder atau project tertentu di bucket Cloud Storage-nya sendiri. Dalam situasi ini,
konfigurasikan filter penyertaan Anda untuk menentukan setiap resource turunan yang entri
lognya ingin Anda rutekan. Jika Anda ingin merutekan entri log dari folder dan semua
project dalam folder tersebut, filter harus mencantumkan folder dan setiap
project yang ada dalam folder tersebut, serta menggabungkan pernyataan dengan klausa OR.
Filter berikut membatasi entri log ke project, folder, atau organisasi tertentu Google Cloud :
logName:"projects/PROJECT_ID/logs/" AND ...
logName:("projects/PROJECT_A_ID/logs/" OR "projects/PROJECT_B_ID/logs/") AND ...
logName:"folders/FOLDER_ID/logs/" AND ...
logName:"organizations/ORGANIZATION_ID/logs/" AND ...
Misalnya, untuk merutekan hanya entri log yang dihasilkan oleh instance Compute Engine dan berasal dari folder my-folder, gunakan filter berikut:
logName:"folders/my-folder/logs/" AND resource.type="gce_instance"
Dengan filter ini, entri log yang berasal dari resource selain
my-folder, termasuk entri log yang berasal dari project Google Cloud
yang merupakan turunan dari my-folder, tidak akan dirutekan ke tujuan.
Pilih resource yang dimonitor
Untuk merutekan entri log hanya dari resource yang dimonitor tertentu dalam projectGoogle Cloud , gunakan beberapa perbandingan untuk menentukan resource secara tepat:
logName:"projects/PROJECT_ID/logs" AND resource.type=RESOURCE_TYPE AND resource.labels.instance_id=INSTANCE_ID
Untuk mengetahui daftar jenis resource, lihat Jenis resource yang dimonitor.
Memilih sampel entri log
Untuk merutekan sampel acak entri log, tambahkan fungsi bawaan sample. Misalnya, untuk merutekan hanya sepuluh persen entri log yang cocok dengan filter Anda saat ini, gunakan tambahan ini:
sample(insertId, 0.10) AND ...
Untuk mengetahui informasi selengkapnya, lihat
fungsi sample.
Untuk mengetahui informasi tentang filter Logging, lihat Bahasa kueri logging.
Langkah berikutnya
Membuat tampilan log di bucket log: Tampilan log memungkinkan Anda memberikan akses baca kepada entitas ke subset entri log yang disimpan dalam bucket log.