Men-deploy tugas untuk mengimpor log dari Cloud Storage ke Cloud Logging

Last reviewed 2025-02-19 UTC

Dokumen ini menjelaskan cara Anda men-deploy arsitektur referensi yang dijelaskan dalam Mengimpor log dari Cloud Storage ke Cloud Logging.

Petunjuk ini ditujukan untuk engineer dan developer, termasuk DevOps, engineer keandalan situs (SRE), dan penyelidik keamanan, yang ingin mengonfigurasi dan menjalankan tugas impor log. Dokumen ini juga mengasumsikan bahwa Anda sudah memahami cara menjalankan tugas impor Cloud Run, serta cara menggunakan Cloud Storage dan Cloud Logging.

Arsitektur

Diagram berikut menunjukkan cara penggunaan layanan Google Cloud dalam arsitektur referensi ini:

Diagram alur kerja impor log dari Cloud Storage ke Cloud Logging.

Untuk mengetahui detailnya, lihat artikel Mengimpor log dari Cloud Storage ke Cloud Logging.

Tujuan

  • Membuat dan mengonfigurasi tugas impor Cloud Run
  • Buat akun layanan untuk menjalankan tugas

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Pastikan log yang ingin Anda impor sebelumnya diekspor ke Cloud Storage, yang berarti log tersebut sudah disusun dalam format ekspor yang diharapkan.

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Ganti PROJECT_ID dengan project ID tujuan.

  4. Pastikan penagihan diaktifkan untuk Google Cloud project Anda.

  5. Peran yang diperlukan

    Untuk mendapatkan izin yang Anda perlukan untuk men-deploy solusi ini, minta administrator Anda untuk memberi Anda peran IAM berikut:

    • Untuk memberikan peran Logs Writer pada bucket log: Project IAM Admin (roles/resourcemanager.projectIamAdmin) pada project tujuan
    • Untuk memberikan peran Storage Object Viewer pada bucket penyimpanan: Storage Admin (roles/storage.admin) pada project tempat bucket penyimpanan dihosting
    • Untuk membuat akun layanan: Buat Akun Layanan (roles/iam.serviceAccountCreator) di project tujuan
    • Untuk mengaktifkan layanan di project: Service Usage Admin (roles/serviceusage.serviceUsageAdmin) di project tujuan
    • Untuk mengupgrade bucket log dan menghapus log yang diimpor: Logging Admin (roles/logging.admin) di project tujuan
    • Untuk membuat, menjalankan, dan mengubah tugas impor: Developer Cloud Run (roles/run.developer) di project tujuan

    Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran yang telah ditentukan lainnya.

    Mengupgrade bucket log untuk menggunakan Log Analytics

    Sebaiknya gunakan bucket log default, dan upgrade bucket tersebut untuk menggunakan Log Analytics. Namun, di lingkungan produksi, Anda dapat menggunakan bucket log Anda sendiri jika bucket default tidak memenuhi persyaratan Anda. Jika memutuskan untuk menggunakan bucket Anda sendiri, Anda harus merutekan log yang di-ingest ke project tujuan ke bucket log ini. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi bucket log dan Membuat sink.

    Saat mengupgrade bucket, Anda dapat menggunakan SQL untuk membuat kueri dan menganalisis log. Tidak ada biaya tambahan untuk mengupgrade bucket atau menggunakan Log Analytics.

    Untuk mengupgrade bucket log default di project tujuan, lakukan hal berikut:

    • Mengupgrade bucket log default untuk menggunakan Log Analytics:

      gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics
      

      Ganti kode berikut:

      • BUCKET_ID: nama bucket log (misalnya, _Default)
      • LOCATION: wilayah yang didukung (misalnya, global)

    Buat tugas impor Cloud Run

    Saat membuat tugas, Anda dapat menggunakan image container bawaan yang disediakan untuk arsitektur referensi ini. Jika Anda perlu mengubah penerapan untuk mengubah periode retensi 30 hari atau jika Anda memiliki persyaratan lain, Anda dapat membuat image kustom Anda sendiri.

    • Di Cloud Shell, buat tugas dengan konfigurasi dan variabel lingkungan:

      gcloud run jobs create JOB_NAME \
      --image=IMAGE_URL \
      --region=REGION \
      --tasks=TASKS \
      --max-retries=0 \
      --task-timeout=60m \
      --cpu=CPU \
      --memory=MEMORY \
      --set-env-vars=END_DATE=END_DATE,LOG_ID=LOG_ID,\
      START_DATE=START_DATE,STORAGE_BUCKET_NAME=STORAGE_BUCKET_NAME,\
      PROJECT_ID=PROJECT_ID
      

      Ganti kode berikut:

      • JOB_NAME: nama tugas Anda.
      • IMAGE_URL: referensi ke image container; gunakan us-docker.pkg.dev/cloud-devrel-public-resources/samples/import-logs-solution atau URL image kustom, jika Anda membuatnya menggunakan petunjuk di GitHub.
      • REGION: region tempat Anda ingin tugas berada; untuk menghindari biaya tambahan, sebaiknya pertahankan region tugas yang sama atau dalam multi-region yang sama dengan region bucket Cloud Storage. Misalnya, jika bucket Anda adalah multi-region AS, Anda dapat menggunakan us-central1. Untuk mengetahui detailnya, lihat Pengoptimalan biaya.
      • TASKS: jumlah tugas yang harus dijalankan oleh tugas. Nilai defaultnya adalah 1. Anda dapat meningkatkan jumlah tugas jika terjadi waktu tunggu.
      • CPU: batas CPU, yang dapat berupa 1, 2, 4, 6, atau 8 CPU. Nilai defaultnya adalah 2. Anda dapat menambah jumlahnya jika terjadi waktu tunggu habis; untuk mengetahui detailnya, lihat Mengonfigurasi batas CPU.
      • MEMORY: batas memori. Nilai defaultnya adalah 2Gi. Anda dapat menambah jumlah jika terjadi waktu tunggu; untuk mengetahui detailnya, lihat Mengonfigurasi batas memori.
      • END_DATE: akhir rentang tanggal dalam format MM/DD/YYYY. Log dengan stempel waktu yang lebih awal atau sama dengan tanggal ini akan diimpor.
      • LOG_ID: ID log dari log yang ingin Anda impor. ID log adalah bagian dari kolom logName entri log. Contohnya, cloudaudit.googleapis.com
      • START_DATE: awal rentang tanggal dalam format MM/DD/YYYY. Log dengan stempel waktu yang lebih baru atau sama dengan tanggal ini akan diimpor.
      • STORAGE_BUCKET_NAME: nama bucket Cloud Storage tempat log disimpan (tanpa awalan gs://).

      Opsi max-retries disetel ke nol untuk mencegah percobaan ulang tugas yang gagal, yang dapat menyebabkan entri log duplikat.

      Jika tugas Cloud Run gagal karena waktu tunggu habis, impor yang tidak selesai dapat terjadi. Untuk mencegah impor yang tidak lengkap karena waktu tunggu habis, tingkatkan nilai tasks, serta resource CPU dan memori.

    Meningkatkan nilai ini dapat meningkatkan biaya. Untuk mengetahui detail tentang biaya, lihat Pengoptimalan biaya.

    Buat akun layanan untuk menjalankan tugas Cloud Run

    1. Di Cloud Shell, buat akun layanan yang dikelola pengguna:

      gcloud iam service-accounts create SA_NAME
      

      Ganti SA_NAME dengan nama akun layanan.

    2. Berikan peran Storage Object Viewer di bucket penyimpanan:

      gcloud storage buckets add-iam-policy-binding gs://STORAGE_BUCKET_NAME \
      --member=serviceAccount:SA_NAME@PROJECT_ID. \
      --role=roles/storage.objectViewer
      

      Ganti kode berikut:

      • STORAGE_BUCKET_NAME: nama bucket penyimpanan yang Anda gunakan dalam konfigurasi tugas impor. Contoh, my-bucket.
      • PROJECT_ID: ID project tujuan.
    3. Berikan peran Penulis Log pada bucket log:

      gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:SA_NAME@PROJECT_ID. \
      --role=roles/logging.logWriter
      
    4. Tetapkan akun layanan untuk tugas Cloud Run:

      gcloud run jobs update JOB_NAME \
      --region=REGION \
      --service-account SA_NAME@PROJECT_ID.
      

      Ganti REGION dengan region yang sama tempat Anda men-deploy tugas impor Cloud Run.

    Menjalankan tugas impor

    • Di Cloud Shell, jalankan tugas yang dibuat:

      gcloud run jobs execute JOB_NAME \
      --region=REGION
      

    Untuk mengetahui informasi selengkapnya, lihat Menjalankan tugas dan Mengelola eksekusi tugas.

    Jika Anda perlu menjalankan ulang tugas, hapus log yang sebelumnya diimpor untuk menghindari pembuatan duplikat. Untuk mengetahui detailnya, lihat Menghapus log yang diimpor nanti dalam dokumen ini.

    Saat Anda membuat kueri log yang diimpor, duplikat tidak akan muncul di hasil kueri. Cloud Logging menghapus duplikat (entri log dari project yang sama, dengan ID penyisipan dan stempel waktu yang sama) dari hasil kueri. Untuk mengetahui informasi selengkapnya, lihat kolom insert_id dalam referensi Logging API.

    Memverifikasi hasil

    Untuk memvalidasi bahwa tugas telah berhasil diselesaikan, di Cloud Shell, Anda dapat membuat kueri hasil impor:

      gcloud logging read 'log_id("imported_logs") AND timestamp<=END_DATE'
    

    Output menampilkan log yang diimpor. Jika project ini digunakan untuk menjalankan lebih dari satu tugas impor dalam jangka waktu yang ditentukan, output akan menampilkan log yang diimpor dari tugas tersebut juga.

    Untuk mengetahui opsi dan detail selengkapnya tentang membuat kueri entri log, lihat gcloud logging read.

    Menghapus log yang diimpor

    Jika Anda perlu menjalankan tugas yang sama lebih dari satu kali, hapus log yang diimpor sebelumnya untuk menghindari entri duplikat dan peningkatan biaya.

    • Untuk menghapus log yang diimpor, di Cloud Shell, jalankan penghapusan log:

      gcloud logging logs delete imported_logs
      

    Perhatikan bahwa penghapusan log yang diimpor akan menghapus semua entri log yang diimpor ke project tujuan, bukan hanya hasil eksekusi tugas impor terakhir.

    Langkah Berikutnya

    Kontributor

    Penulis: Leonid Yankulin | Developer Relations Engineer

    Kontributor lainnya: