Mengumpulkan dan merutekan log tingkat organisasi dan folder ke tujuan yang didukung

Dokumen ini menjelaskan cara membuat sink agregat. Dengan sink gabungan, Anda dapat menggabungkan dan merutekan log yang dihasilkan oleh resourceGoogle Cloud di organisasi atau folder ke lokasi terpusat.

Sebelum memulai

Sebelum membuat sink, pastikan hal berikut:

  • Anda memahami perilaku sink gabungan. Untuk mempelajari sink ini, lihat Ringkasan sink gabungan.

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

  • Anda memiliki salah satu peran IAM berikut untuk organisasi atau folderGoogle Cloud 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 informasi tentang cara menetapkan peran IAM, lihat Panduan kontrol akses Logging.

  • Tujuan sink gabungan ada atau Anda memiliki kemampuan untuk membuatnya.

    Jika tujuannya adalah project Google Cloud , project tersebut dapat berada di organisasi mana pun. Semua tujuan lainnya dapat berada di project apa pun di organisasi apa pun.

  • Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    Untuk informasi selengkapnya, lihat Mengautentikasi untuk menggunakan REST dalam Google Cloud dokumentasi autentikasi.

Membuat sink gabungan

Untuk mengonfigurasi sink gabungan, buat sink, lalu berikan izin sink untuk menulis ke tujuan. Bagian ini menjelaskan cara membuat sink gabungan. Untuk informasi tentang memberikan izin ke sink, lihat bagian halaman ini yang berjudul Menetapkan izin tujuan.

Anda dapat membuat hingga 200 sink per folder atau organisasi.

Konsol

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

  1. Di konsol Google Cloud , buka halaman Log Router:

    Buka Router Log

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.

  2. Pilih folder atau organisasi yang ada.

  3. Pilih Create sink.

  4. Di panel Sink details, masukkan detail berikut:

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

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

  5. Di menu Select sink service, pilih jenis tujuan, lalu selesaikan 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 dari project Google Cloud tujuan:

      logging.googleapis.com/projects/DESTINATION_PROJECT_ID
      
    • Untuk 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_ID
        
      • Bucket Cloud Logging

        logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
        
      • BigQuery dataset

        Anda harus memasukkan nama set data yang sepenuhnya memenuhi syarat dan mengizinkan operasi tulis. Set data dapat berupa tabel yang dipartisi atau di-shard berdasarkan tanggal. Jangan masukkan nama set data tertaut. Set data tertaut bersifat hanya baca.

        bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
        
      • Bucket Cloud Storage

        storage.googleapis.com/BUCKET_NAME
        
      • Topik Pub/Sub

        pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
        
      • Splunk

        Masukkan topik Pub/Sub untuk layanan Splunk Anda.

  6. 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 yang tidak menyadap, pilih Sertakan log yang diserap oleh resource ini dan semua resource turunan.

  7. Di kolom Build inclusion filter, 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 akan terlihat seperti berikut:

    LOG_ID("cloudaudit.googleapis.com/data_access") OR LOG_ID("externalaudit.googleapis.com/data_access")
    

    Untuk contoh filter, lihat bagian Membuat filter untuk sink gabungan di halaman ini.

    Perhatikan bahwa panjang filter tidak boleh melebihi 20.000 karakter.

  8. Opsional: Untuk memverifikasi bahwa Anda memasukkan filter yang benar, pilih Pratinjau log. Tindakan ini akan membuka Logs Explorer di tab baru dengan filter yang telah diisi otomatis.

  9. Opsional: Di panel Choose logs to exclude from the sink, lakukan hal berikut:

    1. Di kolom Nama filter pengecualian, masukkan nama.

    2. Di kolom Build an exclusion filter, masukkan filter expression yang cocok dengan entri log yang ingin Anda kecualikan. Anda juga dapat menggunakan fungsi sample untuk memilih sebagian 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 logika untuk menggabungkan klausa logName.

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

  10. Pilih Create sink.

  11. Untuk menyelesaikan konfigurasi sink gabungan, berikan izin kepada akun layanan untuk sink agar dapat menulis entri log ke tujuan sink. Untuk mengetahui informasi selengkapnya, lihat Menetapkan izin tujuan.

gcloud

Untuk membuat sink gabungan, gunakan perintah logging sinks create:

  1. Untuk membuat sink, panggil perintah gcloud logging sinks create, dan pastikan Anda menyertakan opsi --include-children.

    Sebelum menggunakan perintah berikut, buat 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 inklusi untuk sink. Untuk contoh filter, lihat Membuat filter untuk sink gabungan.
    • FOLDER_ID: ID folder. Jika Anda ingin membuat sink di tingkat organisasi, ganti --folder=FOLDER_ID dengan -- 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"
    

    Anda juga dapat memberikan opsi berikut:

    • Untuk membuat sink intersepsi, sertakan opsi --intercept-children.

    Misalnya, jika Anda membuat sink gabungan di tingkat folder dan 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"
  2. Berikan izin sink ke akun layanan untuk 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 ke metode sebagai berikut:

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

    • organizations/ORGANIZATION_ID
    • folders/FOLDER_ID
  2. Dalam objek LogSink di isi permintaan metode, lakukan salah satu hal berikut:

    • Tetapkan includeChildren ke True.

    • Untuk membuat sink intersepsi, tetapkan kolom interceptChildren ke True.

  3. Tetapkan kolom filter agar cocok dengan entri log yang ingin Anda sertakan.

    Untuk contoh filter, lihat Membuat filter untuk sink gabungan.

    Panjang filter tidak boleh melebihi 20.000 karakter.

  4. Tetapkan kolom LogSink yang tersisa seperti yang Anda lakukan untuk sink apa pun. Untuk mengetahui informasi selengkapnya, lihat Merutekan log ke tujuan yang didukung.

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

  6. Berikan izin sink ke akun layanan untuk 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.

Filter untuk sink gabungan

Bagian ini memberikan contoh filter yang dapat 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 di filter penyertaan dan pengecualian sink Anda. Misalnya, Anda mengonfigurasi sink gabungan untuk organisasi dengan filter berikut:

resource.type="gce_instance"

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

Namun, mungkin ada situasi saat Anda ingin menggunakan sink gabungan untuk merutekan entri log hanya dari resource turunan tertentu. Misalnya, karena alasan kepatuhan, Anda dapat menyimpan log audit dari folder atau project tertentu di bucket Cloud Storage-nya sendiri. Dalam situasi ini, konfigurasikan filter penyertaan untuk menentukan setiap resource turunan yang entri lognya ingin Anda arahkan. Jika Anda ingin merutekan entri log dari folder dan semua project dalam folder tersebut, filter harus mencantumkan folder dan setiap project yang terdapat dalam folder tersebut, dan juga menggabungkan pernyataan dengan klausa OR.

Filter berikut membatasi entri log ke 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 merutekan hanya entri 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, entri log yang ditulis ke resource selain my-folder, termasuk entri log yang ditulis ke project Google Cloud yang merupakan turunan my-folder, tidak dirutekan ke tujuan.

Pilih resource yang dimonitor

Untuk merutekan entri log hanya dari resource tertentu yang dipantau 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 daftar jenis resource, lihat Jenis resource yang dimonitor.

Memilih contoh entri log

Untuk merutekan sampel acak entri log, tambahkan fungsi bawaan sample. Misalnya, untuk merutekan hanya sepuluh persen entri log yang cocok dengan filter saat ini, gunakan penambahan 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 entri log ke tujuan sink Anda. Untuk daftar lengkap peran dan izin Logging, lihat Kontrol akses.

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

  • Mulai 22 Mei 2023, saat Anda membuat sink dan tidak ada akun layanan untuk resource pokok, Logging akan membuat akun layanan. Logging menggunakan akun layanan yang sama untuk semua sink di resource pokok. Resource dapat berupa Google Cloud project, 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 pokok.

Identitas penulis sink adalah ID akun layanan yang terkait dengan sink tersebut. Semua sink memiliki identitas penulis kecuali jika menulis ke bucket log dalam project Google Cloud saat ini. Alamat email dalam identitas penulis mengidentifikasi akun utama yang harus memiliki akses untuk menulis data ke tujuan.

Untuk merutekan entri 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 yang tidak digabungkan. Untuk mengetahui detailnya, lihat Kontrol Layanan VPC: Cloud Logging.

Untuk menetapkan 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. Di konsol Google Cloud , buka halaman Log Router:

      Buka Router Log

      Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.

    2. Pilih Menu, lalu pilih Lihat detail sink. Identitas penulis muncul di panel Sink details.

    3. Jika nilai kolom writerIdentity berisi alamat email, lanjutkan ke langkah berikutnya. Jika nilainya None, Anda tidak perlu mengonfigurasi izin tujuan.

    4. Salin identitas penulis sink ke papan klip Anda. Berikut ini ilustrasi identitas penulis:

      serviceAccount:service-123456789012@gcp-sa-logging.
      
  2. Berikan izin kepada akun utama yang ditentukan oleh identitas penulis sink untuk menulis data log ke tujuan:

    1. Di konsol Google Cloud , buka halaman IAM:

      Buka IAM

      Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah IAM & Admin.

    2. Di toolbar Google Cloud console, pilih project yang menyimpan tujuan sink gabungan. Jika tujuannya adalah project, pilih project tersebut.

    3. Klik Berikan akses.

    4. Masukkan akun utama yang ditentukan oleh identitas penulis sink, lalu berikan peran IAM:

gcloud

  1. Pastikan Anda memiliki akses Pemilik di projectGoogle Cloud yang berisi tujuan. Jika Anda tidak memiliki akses Pemilik ke tujuan sink, minta pemilik project untuk menambahkan identitas penulis sebagai akun utama.

  2. Untuk mendapatkan informasi tentang akun layanan untuk sink Anda, panggil metode gcloud logging sinks describe.

    Sebelum menggunakan perintah berikut, buat 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_NAME
    
  3. Jika detail sink berisi kolom berlabel writerIdentity, lanjutkan ke langkah berikutnya. Jika detail tidak menyertakan kolom writerIdentity, Anda tidak perlu mengonfigurasi izin tujuan untuk sink.

  4. Salin identitas penulis sink ke papan klip Anda. Berikut ini ilustrasi identitas penulis:

    serviceAccount:service-123456789012@gcp-sa-logging.
    
  5. Berikan izin kepada identitas penulis sink untuk menulis data log ke tujuan dengan memanggil perintah gcloud projects add-iam-policy-binding.

    Sebelum menggunakan perintah berikut, buat 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 dimiliki PRINCIPAL, lihat ID utama.
    • ROLE: Peran IAM. Berikan peran IAM kepada identitas penulis sink berdasarkan tujuan sink log:

    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.

Langkah berikutnya