Kumpulkan dan arahkan log tingkat organisasi ke tujuan yang didukung

Dokumen ini menjelaskan cara membuat sink agregat. Untuk informasi tentang mengelola sink yang ada, lihat Merutekan log ke tujuan yang didukung: Mengelola sink.

Ringkasan

Sink gabungan menggabungkan dan merutekan entri log dari resource Google Cloud yang dimuat oleh organisasi atau folder. Misalnya, Anda dapat menggabungkan dan merutekan entri log audit dari semua folder yang terdapat dalam organisasi ke bucket Cloud Storage.

Tanpa fitur sink gabungan, sink dibatasi untuk merutekan entri log dari resource yang sama persis dengan tempat sink dibuat: project, organisasi, folder, atau akun penagihan Google Cloud.

Anda dapat membuat sink gabungan untuk folder dan organisasi Google Cloud. Karena project Google Cloud atau akun penagihan tidak berisi resource turunan, Anda tidak dapat membuat sink gabungan untuk resource tersebut.

Tujuan yang didukung

Anda dapat menggunakan sink gabungan untuk merutekan log di dalam atau di antara organisasi dan folder yang sama ke tujuan berikut:

  • Bucket log Cloud Logging: Menyediakan penyimpanan di Cloud Logging. Bucket log dapat menyimpan log yang diterima oleh beberapa project Google Cloud. Anda dapat menggabungkan data Cloud Logging dengan data lain dengan mengupgrade bucket log untuk menggunakan Log Analytics, lalu membuat set data BigQuery yang tertaut. Untuk mengetahui informasi tentang cara melihat log yang disimpan di bucket log, baca Ringkasan kueri dan lihat log serta Melihat log yang dirutekan ke bucket Cloud Logging.
  • Project Google Cloud: Rutekan entri log ke project Google Cloud yang berbeda. Saat Anda mengarahkan log ke project Google Cloud yang berbeda, Router Log project tujuan akan menerima log dan memprosesnya. Sink dalam project tujuan menentukan cara perutean entri log yang diterima. Entri log yang dirutekan ke project Google Cloud lain tidak dapat dianalisis oleh Error Reporting.
  • Topik Pub/Sub: Memberikan dukungan untuk integrasi pihak ketiga, seperti Splunk. Entri log diformat ke JSON, lalu dirutekan ke topik Pub/Sub. Untuk mengetahui informasi tentang cara melihat log yang dirutekan ke Pub/Sub, lihat Melihat log yang dirutekan ke Pub/Sub.
  • Set data BigQuery: Menyediakan penyimpanan entri log di set data BigQuery. Anda dapat menggunakan kemampuan analisis {i>big data<i} pada log yang tersimpan. Untuk menggabungkan data Cloud Logging dengan sumber data lain, sebaiknya upgrade bucket log Anda untuk menggunakan Log Analytics, lalu buat set data BigQuery yang tertaut. Untuk mendapatkan informasi tentang cara melihat log yang dirutekan ke BigQuery, lihat Melihat log yang dirutekan ke BigQuery.
  • Bucket Cloud Storage: Menyediakan penyimpanan data log di Cloud Storage. Entri log disimpan sebagai file JSON. Untuk informasi tentang cara melihat log yang dirutekan ke Cloud Storage, baca bagian Melihat log yang dirutekan ke Cloud Storage.

Sebelum memulai

Sebelum Anda membuat sink, pastikan hal berikut:

  • Anda memiliki organisasi atau folder Google Cloud dengan log yang dapat dilihat di Logs Explorer.

  • Anda memiliki salah satu peran IAM berikut untuk organisasi atau folder Google Cloud tempat Anda merutekan log.

    • Pemilik (roles/owner)
    • Admin Logging (roles/logging.admin)
    • Penulis Konfigurasi Log (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.

  • Anda memiliki resource di tujuan yang didukung atau dapat membuatnya.

    Tujuan pemilihan rute harus dibuat sebelum sink, melalui Google Cloud CLI, Google Cloud Console, atau Google Cloud API. Anda dapat membuat tujuan di project Google Cloud apa pun di organisasi apa pun, tetapi Anda perlu memastikan bahwa akun layanan dari sink memiliki izin untuk menulis ke tujuan.

Membuat sink gabungan

Untuk menggunakan sink gabungan, buat sink di organisasi atau folder Google Cloud, dan tetapkan parameter includeChildren sink ke True. Saat Anda menetapkan parameter includeChildren, sink dapat merutekan entri log dari organisasi atau folder, serta (secara rekursif) dari folder, akun penagihan, atau project Google Cloud yang ada di dalamnya.

Untuk menentukan entri log yang ingin dirutekan ke tujuan, tetapkan filter penyertaan dan pengecualian sink.

Anda dapat membuat hingga 200 sink per folder atau organisasi.

Untuk membuat sink gabungan bagi folder atau organisasi Anda, lakukan langkah berikut:

Konsol

  1. Pada panel navigasi Google Cloud Console, pilih Logging, lalu pilih Log Router:

    Buka Router Log

  2. Pilih folder atau organisasi yang ada.

  3. Pilih Buat sink.

  4. Di panel Detail sink, masukkan detail berikut:

    • Nama sink: Memberikan ID untuk sink; perhatikan bahwa setelah membuat sink, Anda tidak dapat mengganti nama sink, tetapi dapat menghapusnya dan membuat sink baru.

    • Deskripsi wastafel (opsional): Jelaskan tujuan atau kasus penggunaan sink.

  5. Di panel Sink destination, pilih layanan dan tujuan sink:

    • Select sink service: Pilih layanan tempat Anda ingin merutekan log.

    Berdasarkan layanan yang dipilih, Anda dapat memilih dari tujuan berikut:

    • Bucket Cloud Logging: Pilih atau buat Logging bucket. Jika Anda membuat bucket log, bucket log tersebut harus berada di level project. Anda tidak dapat membuat bucket log di tingkat folder atau organisasi.
    • BigQuery table: Pilih atau buat set data tertentu untuk menerima log yang dirutekan. Anda juga memiliki opsi untuk menggunakan tabel yang dipartisi.
    • Bucket Cloud Storage: Pilih atau buat bucket Cloud Storage tertentu untuk menerima log yang dirutekan.
    • Pub/Sub topic: Pilih atau buat topik tertentu untuk menerima log yang dirutekan.
    • Splunk: Pilih topik Pub/Sub untuk layanan Splunk Anda.

      Misalnya, jika tujuan sink Anda adalah set data BigQuery, tujuan sink adalah sebagai berikut:

      bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
      
  6. Di panel Choose logs to include in sink, lakukan tindakan berikut:

    1. Pilih Sertakan log yang diserap oleh resource ini dan semua resource turunan, yang akan membuat sink agregat.

    2. Di kolom Build inclusion filter, masukkan ekspresi filter yang cocok dengan entri log yang ingin Anda sertakan. Jika Anda tidak menyetel filter, semua 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")
      

      Perhatikan bahwa panjang filter tidak boleh melebihi 20.000 karakter.

    3. Untuk memastikan bahwa Anda telah memasukkan filter yang benar, pilih Pratinjau log. Tindakan ini akan membuka Logs Explorer di tab baru dengan filter yang sudah diisi sebelumnya.

  7. (Opsional) Di panel Pilih log yang akan dikecualikan dari sink, lakukan hal berikut:

    1. Di kolom Nama filter pengecualian, masukkan nama.

    2. Di kolom Build an exception filter, masukkan ekspresi filter yang cocok dengan entri log yang ingin Anda kecualikan. Anda juga dapat menggunakan fungsi sample untuk memilih bagian entri log yang akan dikecualikan.

      Misalnya, untuk mengecualikan log dari project tertentu agar tidak dirutekan ke tujuan, tambahkan filter pengecualian berikut:

      logName:projects/PROJECT_ID
      

      Untuk mengecualikan log dari beberapa project, gunakan operator logical-OR untuk menggabungkan klausa logName.

    Anda dapat membuat hingga 50 filter pengecualian per sink. Perhatikan bahwa panjang filter tidak boleh melebihi 20.000 karakter.

  8. Pilih Buat sink.

API

Untuk membuat sink, gunakan organizations.sinks.create atau folders.sinks.create di Logging API. Siapkan argumen ke metode sebagai berikut:

  1. Tetapkan parameter parent menjadi organisasi atau folder Google Cloud untuk membuat sink. Induk harus berupa salah satu dari berikut:

    • organizations/ORGANIZATION_ID
    • folders/FOLDER_ID
  2. Pada objek LogSink dalam isi permintaan metode, lakukan hal berikut:

  3. Panggil organizations.sinks.create atau folders.sinks.create untuk membuat sink.

  4. Ambil nama akun layanan dari kolom writer_identity yang ditampilkan dari respons API.

  5. Beri akun layanan tersebut izin untuk menulis ke tujuan sink Anda.

    Jika Anda tidak memiliki izin untuk melakukan perubahan tersebut ke tujuan sink, kirim nama akun layanan kepada seseorang yang dapat melakukan perubahan itu untuk Anda.

    Untuk informasi selengkapnya tentang memberikan izin ke akun layanan untuk resource, lihat bagian menetapkan izin tujuan.

gcloud

Untuk membuat sink, gunakan perintah logging sinks create.

  1. Berikan nama sink, tujuan sink, filter, dan ID folder atau organisasi tempat Anda merutekan log:

    gcloud logging sinks create SINK_NAME \
      SINK_DESTINATION  --include-children \
      --folder=FOLDER_ID --log-filter="LOG_FILTER"
    

    Misalnya, jika Anda membuat sink gabungan pada level folder dan yang tujuannya adalah set data BigQuery, perintah Anda mungkin terlihat seperti berikut:

    gcloud logging sinks create SINK_NAME \
      bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID --include-children \
      --folder=FOLDER_ID --log-filter="logName:activity"
    

    Catatan:

    • Untuk membuat sink di tingkat organisasi, ganti --folder=FOLDER_ID dengan --organization=ORGANIZATION_ID.

    • Agar sink menyertakan semua resource dalam organisasi, flag --include-children harus ditetapkan, meskipun flag --organization diteruskan ke create. Jika ditetapkan ke false (default), sink hanya akan merutekan log dari resource host.

    • Untuk beberapa contoh filter yang berguna, lihat Membuat filter untuk sink agregat.

  2. Ambil nama akun layanan yang digunakan untuk membuat sink dari output perintah.

  3. Beri akun layanan tersebut izin untuk menulis ke tujuan sink Anda.

    Jika Anda tidak memiliki izin untuk melakukan perubahan tersebut ke tujuan sink, kirim nama akun layanan kepada seseorang yang dapat melakukan perubahan itu untuk Anda.

    Untuk informasi selengkapnya tentang memberikan izin ke akun layanan untuk resource, lihat bagian menetapkan izin tujuan.

Perubahan apa pun yang dibuat pada sink mungkin memerlukan waktu beberapa menit untuk diterapkan.

Membuat filter untuk sink agregat

Seperti sink lainnya, sink gabungan Anda berisi filter yang memilih masing-masing entri log. Untuk contoh filter yang mungkin Anda gunakan untuk membuat sink gabungan, lihat Contoh kueri menggunakan Logs Explorer.

Berikut adalah beberapa contoh perbandingan filter yang berguna saat menggunakan fitur sink agregat. Beberapa contoh menggunakan notasi berikut:

  • : adalah operator substring. Jangan ganti operator =.
  • ... mewakili perbandingan filter tambahan.
  • Variabel ditunjukkan dengan teks berwarna. Ganti dengan nilai yang valid.

Perhatikan bahwa panjang filter tidak boleh melebihi 20.000 karakter.

Untuk mengetahui detail selengkapnya tentang sintaksis pemfilteran, lihat Bahasa kueri logging.

Pilih sumber log

Untuk sink gabungan, untuk setiap resource turunan organisasi atau folder, filter penyertaan dan pengecualian sink diterapkan ke setiap entri log yang dikirim ke resource turunan. Entri log yang cocok dengan filter penyertaan dan yang tidak dikecualikan, akan dirutekan.

Jika Anda ingin sink merutekan log dari semua resource turunan, jangan menentukan project, folder, atau organisasi dalam filter penyertaan dan pengecualian sink Anda. Misalnya, Anda mengonfigurasi sink agregat untuk organisasi dengan filter berikut:

resource.type="gce_instance"

Dengan filter sebelumnya, log dengan jenis resource instance Compute Engine yang ditulis ke turunan mana pun dari organisasi tersebut akan dirutekan oleh sink gabungan ke tujuan.

Namun, mungkin ada situasi saat Anda ingin menggunakan sink gabungan untuk merutekan 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 miliknya sendiri. Dalam situasi tersebut, konfigurasikan filter penyertaan untuk menentukan setiap resource turunan yang log-nya ingin Anda arahkan. Jika Anda ingin merutekan 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 log untuk project, folder, atau organisasi Google Cloud tertentu:

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 hanya merutekan log yang ditulis ke instance Compute Engine yang ditulis ke folder my-folder, gunakan filter berikut:

logName:"folders/my-folder/logs/" AND resource.type="gce_instance"

Dengan filter sebelumnya, log yang ditulis ke resource apa pun selain my-folder, termasuk log yang ditulis ke project Google Cloud yang merupakan turunan dari my-folder, tidak dirutekan ke tujuan.

Pilih resource yang dipantau

Untuk merutekan log hanya dari resource tertentu yang dimonitor dalam project Google Cloud, gunakan beberapa perbandingan untuk menentukan resource dengan tepat:

logName:"projects/PROJECT_ID/logs" AND
resource.type=RESOURCE_TYPE AND
resource.labels.instance_id=INSTANCE_ID

Untuk daftar jenis resource, lihat Jenis resource yang dimonitor.

Pilih contoh entri log

Untuk merutekan sampel entri log acak, 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 selengkapnya tentang filter Cloud Logging, lihat Bahasa kueri logging.

Menetapkan izin tujuan

Bagian ini menjelaskan cara memberikan izin Identity and Access Management ke Logging untuk menulis log ke tujuan sink Anda. Untuk mengetahui daftar lengkap peran dan izin Logging, lihat Kontrol akses.

Saat Anda membuat atau memperbarui sink yang merutekan log ke tujuan apa pun selain bucket log dalam project saat ini, akun layanan untuk sink tersebut diperlukan. Logging akan otomatis membuat dan mengelola akun layanan untuk Anda:

  • Mulai 22 Mei 2023, saat Anda membuat sink dan tidak ada akun layanan untuk resource pokok yang ada, Logging akan membuat akun layanan. Logging menggunakan akun layanan yang sama untuk semua sink di resource yang mendasarinya. Resource dapat berupa project Google Cloud, organisasi, folder, atau akun penagihan.
  • Sebelum 22 Mei 2023, Logging membuat akun layanan untuk setiap sink. Mulai 22 Mei 2023, Logging menggunakan akun layanan bersama untuk semua sink di resource yang mendasarinya.

Identitas penulis sink adalah ID akun layanan yang terkait dengan sink tersebut. Semua sink memiliki identitas penulis kecuali jika ditulis ke bucket log dalam project Google Cloud saat ini.

Untuk merutekan log ke resource yang dilindungi oleh perimeter layanan, Anda harus menambahkan akun layanan untuk sink tersebut ke tingkat akses, lalu menetapkannya ke perimeter layanan tujuan. Hal ini tidak diperlukan untuk sink non-agregat. Untuk mengetahui detailnya, lihat Kontrol Layanan VPC: Cloud Logging.

Untuk menyetel izin agar sink Anda dirutekan ke tujuannya, lakukan hal berikut:

Konsol

  1. Untuk mendapatkan informasi tentang akun layanan untuk sink Anda, lakukan hal berikut:

    1. Pada panel navigasi Google Cloud Console, pilih Logging, lalu pilih Log Router:

      Buka Router Log

    2. Pilih Menu, lalu pilih View sink details.

      Di panel Sink details, kolom writerIdentity berisi identitas akun layanan. String serviceAccount: adalah bagian dari identitas akun layanan. Contoh:

      serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
      
  2. Pada project tujuan, berikan identitas penulis peran yang diperlukan oleh akun layanan untuk menulis ke tujuan. Untuk memberikan peran kepada akun utama, Anda harus memiliki peran Pemilik (roles/owner):

    • Untuk tujuan Cloud Storage, tambahkan identitas penulis sink sebagai akun utama dengan menggunakan IAM, lalu berikan peran Storage Object Creator (roles/storage.objectCreator).
    • Untuk tujuan BigQuery, tambahkan identitas penulis sink sebagai akun utama menggunakan IAM, lalu berikan peran BigQuery Data Editor (roles/bigquery.dataEditor).
    • Untuk tujuan Pub/Sub, termasuk Splunk, tambahkan identitas penulis sink sebagai akun utama menggunakan IAM, lalu berikan peran Pub/Sub Publisher (roles/pubsub.publisher).
    • Untuk tujuan bucket Logging dalam berbagai project Google Cloud, tambahkan identitas penulis sink sebagai akun utama menggunakan IAM, lalu berikan peran Penulis Bucket Log (roles/logging.bucketWriter).
    • Untuk tujuan project Google Cloud, tambahkan identitas penulis sink sebagai entity utama menggunakan IAM, lalu berikan peran Logs Writer (roles/logging.logWriter). Secara khusus, akun utama memerlukan izin logging.logEntries.route.
    Jika Anda tidak memiliki akses Pemilik ke tujuan sink, minta pemilik project untuk menambahkan identitas penulis sebagai akun utama.

API

  1. Untuk mendapatkan informasi tentang akun layanan untuk sink Anda, panggil metode API organizations.sinks.get atau folders.sinks.get.

    Kolom writerIdentity berisi identitas akun layanan. String serviceAccount: adalah bagian dari identitas akun layanan. Contoh:

    serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
    
  2. Pada project tujuan, berikan identitas penulis peran yang diperlukan oleh akun layanan untuk menulis ke tujuan. Untuk memberikan peran kepada akun utama, Anda harus memiliki peran Pemilik (roles/owner):

    • Untuk tujuan Cloud Storage, tambahkan identitas penulis sink sebagai akun utama dengan menggunakan IAM, lalu berikan peran Storage Object Creator (roles/storage.objectCreator).
    • Untuk tujuan BigQuery, tambahkan identitas penulis sink sebagai akun utama menggunakan IAM, lalu berikan peran BigQuery Data Editor (roles/bigquery.dataEditor).
    • Untuk tujuan Pub/Sub, termasuk Splunk, tambahkan identitas penulis sink sebagai akun utama menggunakan IAM, lalu berikan peran Pub/Sub Publisher (roles/pubsub.publisher).
    • Untuk tujuan bucket Logging dalam berbagai project Google Cloud, tambahkan identitas penulis sink sebagai akun utama menggunakan IAM, lalu berikan peran Penulis Bucket Log (roles/logging.bucketWriter).
    • Untuk tujuan project Google Cloud, tambahkan identitas penulis sink sebagai entity utama menggunakan IAM, lalu berikan peran Logs Writer (roles/logging.logWriter). Secara khusus, akun utama memerlukan izin logging.logEntries.route.
    Jika Anda tidak memiliki akses Pemilik ke tujuan sink, minta pemilik project untuk menambahkan identitas penulis sebagai akun utama.

gcloud

  1. Guna mendapatkan informasi tentang akun layanan untuk sink Anda, jalankan perintah berikut:

    gcloud logging sinks describe SINK_NAME
    

    Kolom writerIdentity berisi identitas akun layanan. String serviceAccount: adalah bagian dari identitas akun layanan. Contoh:

    serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
    
  2. Pada project tujuan, berikan identitas penulis peran yang diperlukan oleh akun layanan untuk menulis ke tujuan. Untuk memberikan peran kepada akun utama, Anda harus memiliki peran Pemilik (roles/owner):

    • Untuk tujuan Cloud Storage, tambahkan identitas penulis sink sebagai akun utama dengan menggunakan IAM, lalu berikan peran Storage Object Creator (roles/storage.objectCreator).
    • Untuk tujuan BigQuery, tambahkan identitas penulis sink sebagai akun utama menggunakan IAM, lalu berikan peran BigQuery Data Editor (roles/bigquery.dataEditor).
    • Untuk tujuan Pub/Sub, termasuk Splunk, tambahkan identitas penulis sink sebagai akun utama menggunakan IAM, lalu berikan peran Pub/Sub Publisher (roles/pubsub.publisher).
    • Untuk tujuan bucket Logging dalam berbagai project Google Cloud, tambahkan identitas penulis sink sebagai akun utama menggunakan IAM, lalu berikan peran Penulis Bucket Log (roles/logging.bucketWriter).
    • Untuk tujuan project Google Cloud, tambahkan identitas penulis sink sebagai entity utama menggunakan IAM, lalu berikan peran Logs Writer (roles/logging.logWriter). Secara khusus, akun utama memerlukan izin logging.logEntries.route.
    Jika Anda tidak memiliki akses Pemilik ke tujuan sink, minta pemilik project untuk menambahkan identitas penulis sebagai akun utama.

Langkah selanjutnya