Anda dapat menyalin entri log yang disimpan dari bucket log Cloud Logging ke bucket Cloud Storage untuk mendukung audit keamanan, melakukan analisis data kustom, atau mengarsipkan entri log historis. Operasi penyalinan bersifat non-destruktif; entri log tetap berada di bucket log sumber, dan Anda dapat menyalin di berbagai Google Cloud project.
Operasi penyalinan merutekan entri log yang ada secara retrospektif menggunakan gcloud CLI. Sebaliknya, sink merutekan entri log yang cocok secara otomatis dalam real time saat entri log tiba, tetapi tidak dapat merutekan entri log yang disimpan sebelum sink dibuat.
Batasan
Batasan berikut berlaku saat menyalin entri log:
Anda hanya dapat menyalin entri log ke bucket Cloud Storage; tujuan lain tidak tersedia.
Anda tidak dapat menyalin entri log dari bucket log yang memiliki kunci enkripsi yang dikelola pelanggan (CMEK) yang dikonfigurasi.
Sebelum memulai
Sebelum Anda mulai menyalin entri log, lakukan hal berikut:
- Pastikan Anda menggunakan gcloud CLI versi terbaru . Untuk mengetahui petunjuk cara menginstal atau mengupdate gcloud CLI, lihat Mengelola komponen Google Cloud CLI.
-
Untuk mendapatkan izin yang Anda perlukan untuk menyalin entri log, minta administrator untuk memberi Anda peran IAM berikut pada project yang berisi bucket log yang Anda salin:
-
Untuk menjalankan operasi penyalinan:
Admin Logging (
roles/logging.admin) -
Untuk melihat dan mengelola status operasi penyalinan:
Logs Configuration Writer (
roles/logging.configWriter)
-
Untuk menjalankan operasi penyalinan:
Admin Logging (
-
Untuk mendapatkan izin yang Anda perlukan untuk menulis entri log ke Cloud Storage, minta administrator untuk memberi Anda peran IAM Storage Object Creator (
roles/storage.objectCreator) pada project yang berisi bucket Cloud Storage.
Menyalin entri log
Logging hanya menyalin entri log yang disimpan di bucket log saat operasi penyalinan dimulai. Entri log yang disimpan di bucket log setelah operasi penyalinan dimulai tidak akan disalin ke Cloud Storage.
Untuk menyalin entri log ke Cloud Storage, Anda harus mengetahui informasi berikut:
- ID dan lokasi bucket log yang Anda salin.
Untuk mengambil ID bucket log dan lokasinya, gunakan perintah gcloud CLI
gcloud logging buckets list. - Nama bucket Cloud Storage yang Anda salin. Untuk mengetahui informasi tentang cara mengambil nama bucket Cloud Storage, lihat Mendapatkan informasi bucket Cloud Storage.
- Filter untuk entri log yang ingin Anda salin.
Untuk menyalin entri log, jalankan perintah
gcloud logging copy:
gcloud logging copy LOG_BUCKET_ID storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME \
--location=LOCATION --log-filter='FILTER' --project=PROJECT_ID
Sebelum menjalankan perintah sebelumnya, lakukan hal berikut:
- Ganti LOG_BUCKET_ID dengan nama bucket log Anda.
- Ganti CLOUD_STORAGE_BUCKET_NAME dengan nama bucket Cloud Storage Anda.
- Ganti LOCATION dengan lokasi bucket log.
(Opsional): Ganti FILTER dengan filter yang menentukan entri log mana yang disalin.
Jika Anda menghapus flag
--log-filter, semua entri log di bucket log akan disalin ke bucket Cloud Storage.Ganti PROJECT_ID dengan Google Cloud project IDAnda. Anda dapat menghapus flag ini jika konfigurasi gcloud CLI aktif ditetapkan ke project yang benar Google Cloud .
Contoh perintah:
gcloud logging copy my-log-bucket storage.googleapis.com/my-gcs-bucket \
--location=global --log-filter='timestamp > "2024-07-18T10:00:00.0Z"' \
--project=my-project
Perintah ini membuat operasi yang berjalan lama untuk dijalankan di latar belakang dan menampilkan nama operasi penyalinan dan lokasi bucket log:
name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Lokasi operasi penyalinan sama dengan lokasi bucket log yang Anda salin.
Melihat dan mengelola operasi penyalinan
Anda dapat melihat dan mengelola operasi penyalinan menggunakan
gcloud logging operations
perintah, yang memungkinkan Anda mencantumkan, melihat, dan membatalkan operasi.
Perintah berikut mengharuskan Anda menentukan lokasi operasi. Gunakan lokasi bucket log Anda. Untuk mengetahui informasi tentang cara menemukan lokasi bucket log Anda, lihat Melihat detail bucket.
Mencantumkan operasi penyalinan
Anda dapat mencantumkan operasi penyalinan terbaru, termasuk operasi yang dijadwalkan, berjalan, selesai, gagal, dan dibatalkan. Operasi penyalinan terbaru muncul dalam hasil hingga 30 hari setelah waktu berakhir.
Untuk mencantumkan operasi penyalinan, jalankan perintah berikut:
gcloud logging operations list --location=LOCATION \
--operation-filter=request_type=CopyLogEntries \
--project=PROJECT_ID
Sebelum menjalankan perintah sebelumnya, lakukan hal berikut:
- Ganti LOCATION dengan lokasi bucket log yang Anda salin dari.
- Ganti PROJECT_ID dengan Google Cloud project IDAnda.
Perintah ini menampilkan informasi tentang operasi yang berjalan lama, termasuk ID operasi:
projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Melihat status operasi penyalinan
Anda dapat mengambil status dan metadata lainnya tentang operasi penyalinan, termasuk hal berikut:
startTime: Stempel waktu yang menunjukkan pembuatan operasi.endTime: Stempel waktu yang menunjukkan penyelesaian operasi.state: Status operasi (dijadwalkan, berjalan, dibatalkan, gagal, atau berhasil).cancellation: Apakah pengguna telah meminta untuk membatalkan operasi.progress: Perkiraan progres operasi (0-100%).destination: Nama bucket Cloud Storage tempat operasi menyalin entri log.filter: Filter yang menentukan entri log mana yang akan disalin.name: Nama bucket log tempat operasi menyalin entri log.logEntriesCopiedCount: Jumlah entri log yang berhasil disalin ke bucket Cloud Storage oleh operasi.
Perhatikan bahwa tidak semua kolom metadata yang tercantum berlaku untuk setiap operasi penyalinan.
Misalnya, jika operasi penyalinan masih berjalan, metadata endTime tidak berlaku untuk operasi tersebut. Sebagai contoh lain, jika flag
--log-filter=FILTER tidak digunakan saat menjalankan perintah
gcloud logging copy, metadata filter tidak berlaku
untuk operasi tersebut.
Untuk mengambil informasi tentang operasi penyalinan, jalankan perintah berikut:
gcloud logging operations describe OPERATION_ID \
--location=LOCATION --project=PROJECT_ID
Sebelum menjalankan perintah sebelumnya, lakukan hal berikut:
- Ganti OPERATION_ID dengan ID operasi.
- Ganti LOCATION dengan lokasi bucket log yang Anda salin dari.
- Ganti PROJECT_ID dengan Google Cloud project IDAnda.
Perintah ini menampilkan metadata tentang operasi penyalinan. Misalnya, berikut adalah output untuk operasi yang sedang berlangsung:
done: false
metadata:
`@type`: type.googleapis.com/google.logging.v2.CopyLogEntriesMetadata
progress: 75
destination: storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME
source: projects/PROJECT_ID/locations/LOCATION/buckets/LOG_BUCKET_ID
verb: copy
startTime: `2024-05-23T10:52:40.039751Z`
state: OPERATION_STATE_RUNNING
name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Membatalkan operasi penyalinan
Anda dapat membatalkan operasi penyalinan yang sedang berlangsung. Jika Anda membatalkan operasi penyalinan, semua entri log yang disalin sebelum operasi dibatalkan akan tetap berada di bucket Cloud Storage.
Setelah membatalkan operasi penyalinan, Logging akan menyelesaikan semua proses yang sedang berlangsung sebelum menyelesaikan pembatalan. Hal ini dapat menyebabkan beberapa entri log masih disalin ke Cloud Storage setelah Anda membatalkan operasi.
Untuk membatalkan operasi penyalinan, jalankan perintah berikut:
gcloud logging operations cancel OPERATION_ID \
--location=LOCATION --project=PROJECT_ID
Sebelum menjalankan perintah sebelumnya, lakukan hal berikut:
- Ganti OPERATION_ID dengan ID operasi.
- Ganti LOCATION dengan lokasi bucket log yang Anda salin dari.
- Ganti PROJECT_ID dengan Google Cloud project IDAnda.
Melihat entri log di Cloud Storage
Untuk mengetahui informasi tentang cara melihat dan memahami entri log yang Anda salin ke Cloud Storage, lihat Melihat entri log yang dirutekan ke Cloud Storage.
Kuota dan batas
Semua operasi penyalinan memerlukan waktu minimal satu jam untuk diselesaikan, berapa pun jumlah data yang disalin.
Untuk menyalin volume besar—misalnya, petabyte—bagi penyalinan di beberapa operasi penyalinan menggunakan kolom timestamp di flag --log-filter.
Perintah penyalinan tidak dapat menyalin entri log yang retensinya telah berakhir.
Pemecahan masalah
Bagian ini menjelaskan cara memecahkan masalah error saat menyalin entri log.
Gagal menulis data ekspor
Saat Anda melihat status operasi penyalinan menggunakan gcloud logging operations describe, operasi tersebut mungkin menampilkan error berikut:
done: true
error:
code: 7
message: Failed to write export data to the destination Cloud Storage bucket.
Error ini terjadi saat Logging tidak dapat menulis atau menyelesaikan file log di bucket Cloud Storage tujuan. Penulisan file yang diekspor selama operasi dapat gagal karena beberapa alasan:
- Perimeter layanan Kontrol Layanan VPC memblokir permintaan ke bucket Cloud Storage tujuan.
- Izin IAM akun yang memulai operasi penyalinan diubah atau dicabut saat operasi sedang berjalan.
- Operasi penyalinan berjalan cukup lama hingga kredensial otorisasi berakhir masa berlakunya.
- Bucket Cloud Storage tujuan menggunakan CMEK, dan kunci Cloud Key Management Service dinonaktifkan atau agen layanan Cloud Storage tidak memiliki izin enkripsi.
- Percobaan ulang penulisan mencoba menimpa file yang ada yang tidak dapat diganti. Misalnya, jika batch ekspor dicoba ulang setelah penundaan sementara, atau jika operasi penyalinan dimulai ulang, percobaan ulang mungkin mencoba menimpa file yang sudah dibuat. Jika file tersebut dilindungi oleh penangguhan objek aktif atau kebijakan retensi yang dikunci, Cloud Storage akan menolak penimpaan.
- Bucket tujuan dihapus, memasuki status terkunci, atau project melampaui kuota resource-nya.
Untuk menyelesaikan masalah ini, lakukan tindakan berikut:
Tinjau Kontrol Layanan VPC: Jika organisasi Anda menggunakan Kontrol Layanan VPC, tinjau Log Audit Cloud untuk penolakan perimeter (
cloudaudit.googleapis.com/data_access). Perimeter untuk bucket Cloud Storage tujuan harus mengizinkan akses dari project yang menjalankan operasi penyalinan, atau mengonfigurasi aturan ingress dan egress.Verifikasi peran IAM bucket tujuan: Akun yang memulai operasi penyalinan harus memiliki peran Storage Object Creator (
roles/storage.objectCreator) di bucket tujuan.Verifikasi Kunci Enkripsi yang Dikelola Pelanggan (CMEK): Jika bucket tujuan menggunakan CMEK untuk enkripsi default, verifikasi bahwa kunci Cloud KMS diaktifkan dan agen layanan Cloud Storage memiliki peran Cloud KMS CryptoKey Encrypter/Decrypter (
roles/cloudkms.cryptoKeyEncrypterDecrypter) pada kunci tersebut.Bagi operasi penyalinan besar menjadi interval waktu yang lebih singkat: Untuk mencegah waktu tunggu habis atau kredensial berakhir masa berlakunya saat menyalin entri log dalam jumlah besar, bagi operasi menjadi batch yang lebih kecil. Untuk membagi entri log menjadi batch, gunakan kolom
timestampdi flag--log-filter.Verifikasi bahwa tidak ada penangguhan objek atau konflik retensi: Verifikasi bahwa bucket tujuan tidak berisi objek di jalur tujuan target yang dilindungi oleh penangguhan objek aktif atau kebijakan retensi yang dikunci.