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

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) seperti pubsub.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_allowed dan 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_IDENTITY sebagai jenis identitas dalam aturan ingress. Anda tidak dapat menggunakan ANY_SERVICE_ACCOUNT atau ANY_USER_ACCOUNT sebagai 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.

  • 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.

    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:

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

    Buka Log Router

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

  2. Pilih folder atau organisasi yang sudah ada.

  3. Pilih Create sink.

  4. 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.

  5. 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_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 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.

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

  7. 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.

  8. 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.

  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 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 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.

  10. Pilih Create sink.

  11. 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:

  1. Untuk membuat sink, jalankan perintah gcloud logging sinks create dan 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_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"
    

    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"
  2. 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:

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

    • 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 juga kolom interceptChildren ke true.

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

    Misalnya, lihat Filter untuk sink gabungan.

    Panjang filter tidak boleh melebihi 20.000 karakter.

  4. Tetapkan kolom LogSink yang tersisa seperti yang Anda lakukan untuk sink mana 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. 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

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

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

      Buka Log Router

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

    2. Pilih Menu, lalu pilih View sink details. Identitas penulis akan muncul di panel Sink details.

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

    4. 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
      
  2. Beri akun utama yang ditentukan oleh identitas penulis sink izin 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 konsol Google Cloud , pilih project yang menyimpan tujuan sink gabungan. Jika tujuannya adalah project, pilih project tersebut.

    3. Klik Grant access.

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

gcloud

  1. 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.

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

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

    serviceAccount:service-123456789012@gcp-sa-logging.iam.gserviceaccount.com
    
  5. Berikan 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 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.

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