Dokumen ini menjelaskan cara men-deploy arsitektur referensi yang dijelaskan dalam Mengimpor log dari Cloud Storage ke Cloud Logging.
Petunjuk ini ditujukan untuk engineer dan developer, termasuk DevOps, site reliability engineer (SRE), dan investigator keamanan, yang ingin mengonfigurasi dan menjalankan tugas impor log. Dokumen ini juga mengasumsikan bahwa Anda sudah terbiasa menjalankan tugas impor Cloud Run, dan cara menggunakan Cloud Storage dan Cloud Logging.
Arsitektur
Diagram berikut menunjukkan cara Google Cloud layanan 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
- Membuat akun layanan untuk menjalankan tugas
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen yang dapat ditagih berikut Google Cloud:
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 Google Cloud konsol, aktifkan Cloud Shell.
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Memilih project: Memilih project tidak memerlukan peran IAM tertentu Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih Google Cloud project yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama Google Cloud project Anda.
Ganti PROJECT_ID dengan ID project tujuan.
Pastikan penagihan diaktifkan untuk Google Cloud project Anda.
Aktifkan Cloud Run dan Identity and Access Management (IAM) API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable run.googleapis.com
iam.googleapis.com
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk men-deploy solusi ini, minta administrator untuk memberi Anda peran IAM berikut:
-
Untuk memberikan peran Penulis Log di bucket log:
Admin IAM Project (
roles/resourcemanager.projectIamAdmin) di project tujuan -
Untuk memberikan peran Storage Object Viewer di bucket penyimpanan:
Admin Penyimpanan (
roles/storage.admin) di project tempat bucket penyimpanan dihosting -
Untuk membuat akun layanan:
Membuat Akun Layanan (
roles/iam.serviceAccountCreator) di project tujuan -
Untuk mengaktifkan layanan di project:
Admin Penggunaan Layanan (
roles/serviceusage.serviceUsageAdmin) di project tujuan -
Untuk mengupgrade bucket log dan menghapus log yang diimpor:
Admin Logging (
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 khusus atau peran bawaan lainnya.
Mengupgrade bucket log untuk menggunakan Observability Analytics
Sebaiknya gunakan bucket log default, dan upgrade 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 Observability Analytics.
Untuk mengupgrade bucket log default di project tujuan, lakukan hal berikut:
Upgrade bucket log default untuk menggunakan Observability Analytics:
gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analyticsGanti kode berikut:
- BUCKET_ID: nama bucket log (misalnya,
_Default) - LOCATION: region 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 penerapan untuk mengubah periode retensi data 30 hari atau jika Anda memiliki persyaratan lain, Anda dapat mem-build 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_IDGanti 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-solutionatau URL image kustom, jika Anda mem-buildnya menggunakan petunjuk di GitHub. - REGION: region tempat Anda ingin tugas Anda 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 meningkatkan jumlah jika terjadi waktu tunggu; untuk mengetahui detailnya, lihat Mengonfigurasi batas CPU. - MEMORY: batas memori.
Nilai defaultnya adalah
2Gi. Anda dapat meningkatkan 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 dari atau sama dengan tanggal ini akan diimpor.
- LOG_ID: ID log dari log yang ingin Anda impor. ID log adalah
bagian dari
logNamekolom entri log. Misalnya,cloudaudit.googleapis.com. - START_DATE: awal rentang tanggal dalam format MM/DD/YYYY. Log dengan stempel waktu yang lebih baru dari atau sama dengan tanggal ini akan diimpor.
- STORAGE_BUCKET_NAME: nama bucket Cloud Storage tempat
log disimpan (tanpa awalan
gs://).
Opsi
max-retriesditetapkan ke nol untuk mencegah percobaan ulang untuk tugas yang gagal, yang dapat menyebabkan entri log duplikat.Jika tugas Cloud Run gagal karena waktu tunggu, impor yang tidak lengkap dapat terjadi. Untuk mencegah impor yang tidak lengkap karena waktu tunggu, tingkatkan
tasksnilai, serta resource CPU dan memori.
Meningkatkan nilai ini dapat meningkatkan biaya. Untuk mengetahui detail tentang biaya, lihat Pengoptimalan biaya.
Membuat akun layanan untuk menjalankan tugas Cloud Run
Di Cloud Shell, buat akun layanan yang dikelola pengguna:
gcloud iam service-accounts create SA_NAMEGanti SA_NAME dengan nama akun layanan.
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.iam.gserviceaccount.com \ --role=roles/storage.objectViewerGanti kode berikut:
- STORAGE_BUCKET_NAME: nama bucket penyimpanan yang Anda gunakan dalam konfigurasi tugas impor. Misalnya,
my-bucket. - PROJECT_ID: project ID tujuan.
- STORAGE_BUCKET_NAME: nama bucket penyimpanan yang Anda gunakan dalam konfigurasi tugas impor. Misalnya,
Berikan peran Penulis Log di bucket log:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.logWriterTetapkan akun layanan untuk tugas Cloud Run:
gcloud run jobs update JOB_NAME \ --region=REGION \ --service-account SA_NAME@PROJECT_ID.iam.gserviceaccount.comGanti REGION dengan region yang sama dengan 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 menunjukkan 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 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 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 penghapusan log yang diimpor akan menghapus semua entri log yang diimpor ke project tujuan dan bukan hanya hasil eksekusi tugas impor terakhir.
Langkah Berikutnya
- Tinjau kode implementasi di repositori GitHub.
- Pelajari cara menganalisis log yang diimpor menggunakan Observability Analytics dan SQL.
- 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 | Senior Staff Software Engineer
- Wilton Wong | Enterprise Architect
- Xiang Shen | Solutions Architect