Cloud Logging untuk operasi batch penyimpanan

Halaman ini menjelaskan cara mengonfigurasi dan melihat log operasi batch penyimpanan menggunakan Cloud Logging. Tugas operasi batch penyimpanan dapat dikonfigurasi untuk membuat entri log Cloud Logging untuk setiap tugas transformasi. Setiap entri log sesuai dengan upaya transformasi objek.

Operasi batch penyimpanan mendukung logging ke Cloud Logging dan Cloud Audit Logs Cloud Storage. Meskipun kedua opsi mencatat tindakan operasi batch penyimpanan, sebaiknya gunakan Cloud Logging. Cloud Logging menyediakan platform terpusat untuk analisis log, pemantauan real-time, dan pemfilteran lanjutan, yang menawarkan solusi andal untuk mengelola dan memahami aktivitas operasi batch Anda.

Sebelum memulai

Pastikan Anda memiliki akses ke Cloud Logging. Untuk menggunakan Cloud Logging, sebaiknya berikan peran Logs Viewer (roles/logging.viewer) Identity and Access Management. Peran Identity and Access Management Logs Viewer (roles/logging.viewer) memberikan izin Identity and Access Management yang diperlukan untuk melihat data Cloud Logging Anda. Untuk mengetahui informasi selengkapnya tentang izin akses Logging, lihat Kontrol akses dengan IAM.

Untuk memverifikasi dan memberikan izin IAM, selesaikan langkah-langkah berikut:

Memahami detail logging

Jika logging diaktifkan, operasi batch penyimpanan akan merekam detail berikut:

  • Tindakan yang dapat dicatat dalam log: Nilai tindakan yang dapat dicatat dalam log selalu transform.

  • Status yang dapat dicatat ke log: Untuk setiap tindakan, Anda dapat memilih untuk mencatat ke log satu atau kedua status berikut:

    • SUCCEEDED: Tindakan berhasil.
    • FAILED: Tindakan gagal.

Aktifkan logging

Untuk mengaktifkan logging, tentukan tindakan dan status yang akan dicatat.

Command line

Saat membuat tugas operasi batch penyimpanan dengan gcloud storage batch-operations jobs create, gunakan flag --log-actions dan --log-action-states untuk mengaktifkan logging.

gcloud storage batch-operations jobs create JOB_NAME \
  --manifest-location=MANIFEST_LOCATION \
  --delete-object \
  --log-actions=transform \
  --log-action-states=LOG_ACTION_STATES

Dengan:

  • JOB_NAME adalah nama yang ingin Anda berikan ke tugas. Contoh, my-job.
  • MANIFEST_LOCATION adalah lokasi manifest Anda. Contoh, gs://my-bucket/manifest.csv.
  • LOG_ACTION_STATES adalah daftar status yang dipisahkan koma untuk dicatat. Contoh, succeeded,failed.

REST API

Create a storage batch operations job dengan LoggingConfig.

{
   "loggingConfig": {
      "logActions": ["TRANSFORM"],
      "logActionStates": ["LOG_ACTION_STATES"],
        }
}

Dengan:

LOG_ACTION_STATES adalah daftar status yang dipisahkan koma untuk dicatat. Contoh, "SUCCEEDED","FAILED".

Melihat log

Untuk melihat log operasi batch penyimpanan, lakukan hal berikut:

Konsol

  1. Buka Google Cloud menu navigasi , lalu pilih Logging > Logs Explorer :<br\></br\>

    Buka Logs Explorer

  2. Pilih project Google Cloud .

  3. Dari menu Upgrade, beralihlah dari Legacy Logs Viewer ke Logs Explorer.

  4. Untuk memfilter log Anda agar hanya menampilkan entri operasi batch penyimpanan, ketik storage_batch_operations_job di kolom kueri, lalu klik Jalankan kueri.

  5. Di panel Query results, klik Edit time untuk mengubah jangka waktu yang akan ditampilkan hasilnya.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan Logs Explorer, lihat Menggunakan Logs Explorer.

Command line

Untuk menggunakan gcloud CLI guna menelusuri log operasi batch penyimpanan, gunakan perintah gcloud logging read.

Tentukan filter untuk membatasi hasil Anda ke log operasi batch penyimpanan.

gcloud logging read "resource.type=storage_batch_operations_job"

REST API

Gunakan metode Cloud Logging API entries.list.

Untuk memfilter hasil Anda agar hanya menyertakan entri terkait operasi batch penyimpanan, gunakan kolom filter. Berikut adalah contoh objek permintaan JSON:

{
"resourceNames":
  [
    "projects/my-project-name"
  ],
  "orderBy": "timestamp desc",
  "filter": "resource.type=\"storage_batch_operations_job\""
}

Dengan:

my-project-name adalah nama project Anda.

Format log operasi batch penyimpanan

Semua kolom khusus operasi batch penyimpanan terdapat dalam objek jsonPayload. Meskipun konten persis jsonPayload bervariasi berdasarkan jenis tugas, ada struktur umum yang dibagikan di semua entri TransformActivityLog. Bagian ini menguraikan kolom log umum, lalu menjelaskan kolom khusus operasi.

  • Kolom log umum

    Kolom berikut muncul di semua log:

    jsonPayload: {
    "@type": "type.googleapis.com/google.cloud.storagebatchoperations.logging.TransformActivityLog",
    "completeTime": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ",
    "status": {
      "errorMessage": "String indicating error",
      "errorType": "ENUM_VALUE",
      "statusCode": "ENUM_VALUE"
    },
    "logName": "projects/PROJECT_ID/logs/storagebatchoperations.googleapis.com%2Ftransform_activity",
    "receiveTimestamp": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ",
    "resource": {
      "labels": {
        "location":"us-central1",
        "job_id": "BATCH_JOB_ID",
        "resource_container": "RESOURCE_CONTAINER",
        // ... other labels
      },
      "type": "storagebatchoperations.googleapis.com/Job"
    },
    // Operation-specific details will be nested here (for example,
    // "DeleteObject", "PutObjectHold", "RewriteObject", "PutMetadata")
    // Each operation-specific object will also contain the following
    // object: "objectMetadataBefore": {
    //   "gcsObject": {
    //     "bucket": "BUCKET_NAME",
    //     "generation": "GENERATION_NUMBER",
    //     "objectKey": "OBJECT_PATH"
    //   }
    // }
    }
    

    Tabel berikut menjelaskan setiap kolom log umum:

    Kolom log umum Jenis Deskripsi
    @type String Menentukan jenis payload entri log dan menunjukkan bahwa log mewakili TransformActivityLog untuk operasi batch penyimpanan.
    completeTime Stempel waktu Stempel waktu yang sesuai dengan ISO 8601 saat operasi selesai.
    status Objek Memberikan informasi tentang hasil aktivitas operasi batch.
    status.errorMessage String Pesan error jika operasi gagal. Pesan error hanya muncul jika nilai status.statusCode tidak OK.
    status.errorType String Jenis error. Jenis error hanya muncul jika nilai status.statusCode bukan OK.
    status.statusCode String Kode status operasi. Operasi berhasil jika nilainya adalah OK; nilai lain menunjukkan kegagalan.
    logName String Nama resource lengkap log, yang menunjukkan project dan aliran log.
    receiveTimestamp Stempel waktu Stempel waktu saat entri log diterima oleh sistem pencatatan log.
    resource Objek Informasi tentang resource yang menghasilkan entri log.
    resource.labels Objek Key-value pair yang memberikan informasi identifikasi tambahan tentang resource.
    resource.type String Jenis resource yang membuat log.
    objectMetadataBefore Objek Berisi metadata objek sebelum operasi batch dicoba.
    objectMetadataBefore.gcsObject Objek Detail tentang objek.
    objectMetadataBefore.gcsObject.bucket String Nama bucket tempat objek berada.
    objectMetadataBefore.gcsObject.generation String Nomor pembuatan objek sebelum operasi.
    objectMetadataBefore.gcsObject.objectKey String Jalur lengkap objek dalam bucket.
  • Konten jsonPayload khusus operasi

    Perbedaan antara entri log untuk berbagai operasi batch terletak pada objek tingkat teratas yang bertingkat dalam jsonPayload. Hanya salah satu objek berikut yang tersedia dalam entri log tertentu, yang sesuai dengan operasi batch tertentu yang dilakukan:

    • Menghapus objek (DeleteObject)

      jsonPayload:
      {
      "DeleteObject": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        }
        }
      }
      
    • Menangguhkan objek (PutObjectHold)

      jsonPayload:
      {
      "PutObjectHold": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "temporaryHoldAfter": True,
        "eventBasedHoldAfter": True
      }
      }
      
    • Menulis ulang objek (RewriteObject)

      jsonPayload:
      {
      "RewriteObject": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "kmsKeyVersionAfter": "projects/my-gcp-project/locations/us-central1/keyRings/my-keyring-01/cryptoKeys/my-encryption-key/cryptoKeyVersions/1"
      }
      }
      
    • Menempatkan metadata (PutMetadata)

      jsonPayload:
      {
      "PutMetadata": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "content_disposition_after": "attachment; filename=\"report_final.pdf\"",
        "content_encoding_after": "gzip",
        "content_language_after": "en-US",
        "content_type_after": "application/pdf",
        "cache_control_after": "public, max-age=3600",
        "custom_time_after": "2025-06-27T10:00:00Z",
        "custom_metadata_after": {
          "project": "marketing",
          "version": "2.0",
          "approvedBy": "Admin"
        }
      }
      }
      

    Tabel berikut menjelaskan kolom log khusus operasi:

    Kolom log khusus operasi Jenis Deskripsi
    PutObjectHold Objek Menunjukkan operasi penangguhan pada objek.
    PutObjectHold.temporaryHoldAfter Boolean Jika nilainya True, hal ini menunjukkan bahwa penangguhan sementara diterapkan pada objek setelah tugas operasi batch penyimpanan selesai. Nilai yang valid adalah True atau False.
    PutObjectHold.eventBasedHoldAfter Boolean Jika nilainya True, hal ini menunjukkan bahwa penangguhan berbasis peristiwa diterapkan ke objek setelah tugas operasi batch penyimpanan selesai. Nilai yang valid adalah True atau False.
    RewriteObject Objek Menunjukkan operasi penulisan ulang pada objek.
    RewriteObject.kmsKeyVersionAfter String Versi kunci Cloud Key Management Service yang digunakan setelah tugas penulisan ulang. Kolom kmsKeyVersionAfter diisi jika kunci enkripsi objek berubah sebagai akibat dari penulisan ulang. Kolom ini bersifat opsional, yang berarti mungkin tidak ada jika versi kunci Cloud KMS tetap tidak berubah setelah penulisan ulang.
    PutMetadata Objek Menunjukkan operasi update metadata pada objek.
    PutMetadata.content_disposition_after String Menentukan nilai header Content-Disposition setelah penyelesaian tugas PutMetadata. Kolom ini bersifat opsional dan hanya diisi jika disposisi konten ditetapkan atau diubah.
    PutMetadata.content_encoding_after String Menentukan nilai header Content-Encoding setelah penyelesaian tugas PutMetadata. Kolom ini bersifat opsional dan hanya diisi jika encoding konten ditetapkan atau diubah.
    PutMetadata.content_language_after String Menentukan nilai header Content-Language setelah penyelesaian tugas PutMetadata. Kolom ini bersifat opsional dan hanya diisi jika bahasa konten ditetapkan atau diubah.
    PutMetadata.content_type_after String Menentukan nilai header Content-Type setelah penyelesaian tugas PutMetadata. Kolom ini bersifat opsional dan hanya diisi jika jenis konten ditetapkan atau diubah.
    PutMetadata.cache_control_after String Menentukan nilai header Cache-Control setelah penyelesaian tugas PutMetadata. Kolom ini bersifat opsional dan hanya diisi jika kontrol cache ditetapkan atau diubah.
    PutMetadata.custom_time_after String Menentukan nilai header Custom-Time setelah penyelesaian tugas PutMetadata. Kolom ini bersifat opsional dan hanya diisi jika waktu kustom ditetapkan atau diubah.
    PutMetadata.custom_metadata_after Peta (kunci: string, nilai: string) Berisi peta pasangan nilai kunci Custom- Metadata setelah transformasi. Kolom ini mencakup metadata yang ditentukan pengguna yang ditetapkan atau diubah pada objek. Hal ini memungkinkan penyimpanan metadata tambahan yang fleksibel.