Dokumen ini menjelaskan cara men-deploy arsitektur referensi yang dijelaskan dalam artikel Mengimpor log dari Cloud Storage ke Cloud Logging.
Petunjuk ini ditujukan bagi engineer dan developer, termasuk DevOps, engineer keandalan situs (SRE), dan penyelidik keamanan yang ingin mengonfigurasi dan menjalankan tugas pengimporan log. Dokumen ini juga menganggap Anda sudah memahami cara menjalankan tugas impor Cloud Run, serta cara menggunakan Cloud Storage dan Cloud Logging.
Arsitektur
Diagram berikut menunjukkan cara layanan Google Cloud digunakan dalam arsitektur referensi ini:
Untuk mengetahui detailnya, lihat 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 menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
Pastikan log yang ingin Anda impor sebelumnya telah diekspor ke Cloud Storage, yang berarti log tersebut sudah diatur dalam format ekspor yang diharapkan.
Di konsol Google Cloud, aktifkan Cloud Shell.
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
Aktifkan API Cloud Run and Identity and Access Management (IAM):
gcloud services enable run.googleapis.com
iam.googleapis.com
Ganti PROJECT_ID dengan project ID tujuan.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk men-deploy solusi ini, minta administrator 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
) di project tempat bucket penyimpanan dihosting -
Untuk membuat akun layanan:
Create Service Accounts (
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
) pada project tujuan -
Untuk membuat, menjalankan, dan mengubah tugas impor:
Cloud Run Developer (
roles/run.developer
) di project tujuan
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Mengupgrade bucket log untuk menggunakan Log Analytics
Sebaiknya gunakan bucket log default, lalu upgrade untuk menggunakan Log Analytics. Namun, dalam 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 mengarahkan log yang diserap 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. Upgrade bucket atau menggunakan Log Analytics tidak dikenai biaya tambahan.
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
)
- BUCKET_ID: nama bucket log (misalnya,
Membuat tugas impor Cloud Run
Saat membuat tugas, Anda dapat menggunakan image container bawaan yang disediakan untuk arsitektur referensi ini. Jika perlu mengubah implementasi untuk mengubah periode retensi 30 hari atau jika Anda memiliki persyaratan lain, Anda dapat membuat image kustom 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 pekerjaan 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 menempatkan tugas. 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 di 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 menambah jumlah tugas jika waktu tunggu habis. - CPU: batas CPU, yang dapat berupa 1, 2, 4, 6, atau 8 CPU.
Nilai defaultnya adalah
2
. Anda dapat menambah jumlah jika waktu tunggu terjadi; untuk mengetahui detailnya, lihat Mengonfigurasi batas CPU. - MEMORY: batas memori.
Nilai defaultnya adalah
2Gi
. Anda dapat menambah angkanya jika waktu tunggu terjadi; untuk mengetahui detailnya, lihat Mengonfigurasi batas memori. - END_DATE: akhir rentang tanggal dalam format BB/HH/TTTT. Log dengan stempel waktu yang lebih awal dari 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 BB/HH/TTTT. Log dengan stempel waktu yang lebih lama dari 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.
Menaikkan nilai ini dapat meningkatkan biaya. Untuk mengetahui detail tentang biaya, lihat Pengoptimalan biaya.
Buat akun layanan untuk menjalankan tugas Cloud Run Anda
Di Cloud Shell, buat akun layanan yang dikelola pengguna:
gcloud iam service-accounts create SA_NAME
Ganti SA_NAME dengan nama akun layanan.
Berikan peran Storage Object Viewer pada bucket penyimpanan:
gcloud storage buckets add-iam-policy-binding gs://STORAGE_BUCKET_NAME \ --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --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: project ID tujuan.
- STORAGE_BUCKET_NAME: nama bucket penyimpanan yang Anda gunakan dalam konfigurasi tugas
impor. Contoh,
Berikan peran Logs Writer pada bucket log:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.logWriter
Tetapkan akun layanan untuk tugas Cloud Run:
gcloud run jobs update JOB_NAME \ --region=REGION \ --service-account SA_NAME@PROJECT_ID.iam.gserviceaccount.com
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 kembali tugas, hapus log yang diimpor sebelumnya 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 berhasil diselesaikan, di Cloud Shell, Anda dapat membuat kueri hasil impor:
gcloud logging read 'log_id("imported_logs") AND timestamp<=END_DATE'
Output akan menampilkan log yang diimpor. Jika project ini digunakan untuk menjalankan lebih dari satu tugas impor dalam jangka waktu yang ditentukan, output juga akan menampilkan log yang diimpor dari tugas tersebut.
Untuk opsi dan detail selengkapnya tentang cara membuat kueri entri log, lihat
gcloud logging read
.
Hapus log yang diimpor
Jika Anda perlu menjalankan tugas yang sama lebih dari satu kali, hapus log yang sebelumnya diimpor untuk menghindari entri duplikat dan peningkatan biaya.
Untuk menghapus log yang diimpor, di Cloud Shell, jalankan penghapusan log:
gcloud logging logs delete imported_logs
Perlu diketahui bahwa menghapus log yang diimpor akan menghapus permanen semua entri log yang diimpor ke project tujuan, bukan hanya hasil eksekusi tugas impor terakhir.
Langkah Berikutnya
- Tinjau kode implementasi di repositori GitHub.
- Pelajari cara menganalisis log yang diimpor menggunakan Log Analytics dan SQL.
- Pelajari cara mengekspor log ke bucket Cloud Storage.
- Untuk mengetahui lebih banyak tentang arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.
Kontributor
Penulis: Leonid Yankulin | Developer Relations Engineer
Kontributor lainnya:
- Summit Tuladhar | Staf Software Engineer
- Wilton Wong | Arsitek Perusahaan
- Xiang Shen | Arsitek Solusi Cloud