Log penggunaan & log penyimpanan

Dokumen ini membahas cara mendownload dan meninjau log penggunaan serta informasi penyimpanan untuk bucket Cloud Storage Anda, dan menganalisis log menggunakan Google BigQuery.

Pengantar

Cloud Storage menawarkan log penggunaan dan log penyimpanan dalam format file CSV yang dapat Anda download dan lihat. Log penggunaan memberikan informasi untuk semua permintaan yang dibuat di bucket tertentu dan dibuat setiap jam. Log penyimpanan memberikan informasi tentang konsumsi penyimpanan bucket tersebut untuk hari terakhir dan dibuat setiap hari.

Setelah disiapkan, log penggunaan dan log penyimpanan akan otomatis dibuat untuk bucket yang ditentukan dan disimpan sebagai objek baru di bucket yang Anda tentukan.

Log penggunaan dan log penyimpanan tunduk kepada harga yang sama dengan objek lain yang disimpan di Cloud Storage.

Haruskah Anda menggunakan log penggunaan atau Cloud Audit Logs?

Dalam sebagian besar kasus, Cloud Audit Logs adalah metode yang direkomendasikan untuk membuat log yang melacak operasi API yang dilakukan di Cloud Storage:

  • Cloud Audit Logs melacak akses secara berkelanjutan, dengan pengiriman peristiwa dalam beberapa detik setelah terjadinya.
  • Cloud Audit Logs menghasilkan log yang lebih mudah digunakan.
  • Cloud Audit Logs dapat memantau banyak layanan Google Cloud Anda, bukan hanya Cloud Storage.
  • Cloud Audit Logs dapat, secara opsional, mencatat informasi permintaan dan respons yang mendetail.

Dalam beberapa kasus, Anda mungkin ingin menggunakan log penggunaan, baik sebagai pengganti ataupun sebagai tambahan dari Cloud Audit Logs. Anda kemungkinan besar ingin menggunakan log penggunaan jika:

  • Anda ingin melacak akses yang terjadi karena resource memiliki allUsers atau allAuthenticatedUsers di setelan kontrol aksesnya, seperti akses ke aset di bucket yang telah Anda konfigurasi menjadi situs statis.
  • Anda ingin melacak perubahan yang dibuat oleh fitur Object Lifecycle Management atau Autoclass.
  • Anda ingin agar log menyertakan informasi latensi, ukuran permintaan, dan respons setiap permintaan HTTP, atau jalur URL lengkap dan setiap parameter kueri.
  • Anda ingin melacak akses hanya ke bucket tertentu dalam project, sehingga tidak ingin mengaktifkan Log audit Akses Data, yang melacak akses ke semua bucket di project Anda.

Perlu diperhatikan bahwa log penggunaan hanya dibuat setiap jam dan dapat tertunda, terutama saat melaporkan bucket yang mengalami rasio permintaan tinggi.

Haruskah Anda menggunakan log penyimpanan atau Monitoring?

Umumnya, Anda tidak boleh menggunakan log penyimpanan. Alat yang direkomendasikan untuk mengukur konsumsi penyimpanan adalah Monitoring, yang menyediakan alat visualisasi serta metrik tambahan terkait konsumsi penyimpanan yang tidak disediakan oleh log penyimpanan. Lihat tab Konsol untuk menentukan ukuran bucket guna mengetahui petunjuk langkah demi langkah tentang cara menggunakan Monitoring.

Menyiapkan pengiriman log

Sebelum menyiapkan pengiriman log, Anda harus memiliki bucket untuk menyimpan log. Bucket ini harus memenuhi persyaratan berikut, jika tidak, logging akan gagal:

  • Bucket yang menyimpan log harus ada dalam organisasi yang sama dengan bucket yang dicatat ke dalam log.

    • Jika bucket yang dicatat dalam log tidak ada dalam organisasi mana pun, bucket yang menyimpan log harus ada dalam project yang sama dengan bucket yang dicatat dalam log.
  • Jika Anda menggunakan atau mengaktifkan Kontrol Layanan VPC, bucket yang menyimpan log harus berada dalam perimeter keamanan yang sama dengan bucket yang dicatat dalam log.

Jika Anda belum memiliki bucket yang memenuhi persyaratan ini, buat bucket.

Langkah-langkah berikut menjelaskan cara menyiapkan pengiriman log untuk bucket:

Command line

  1. Beri Cloud Storage peran roles/storage.objectCreator untuk bucket tersebut:

    gcloud storage buckets add-iam-policy-binding gs://example-logs-bucket --member=group:cloud-storage-analytics@google.com --role=roles/storage.objectCreator

    Peran ini memberi Cloud Storage, dalam bentuk grup cloud-storage-analytics@google.com, izin untuk membuat dan menyimpan log Anda sebagai objek baru.

    Objek log memiliki acl objek default dari bucket log, kecuali jika akses level bucket yang seragam diaktifkan di bucket.

  2. Aktifkan logging untuk bucket Anda menggunakan flag --log-bucket:

    gcloud storage buckets update gs://example-bucket --log-bucket=gs://example-logs-bucket [--log-object-prefix=log_object_prefix]

    Secara opsional, Anda dapat menetapkan awalan objek untuk objek log menggunakan flag --log-object-prefix. Awalan objek membentuk awal nama objek log. Panjangnya maksimal 900 karakter dan harus berupa nama objek yang valid. Secara default, awalan objek adalah nama bucket yang lognya diaktifkan.

REST API

JSON API

  1. Beri Cloud Storage peran roles/storage.objectCreator untuk bucket tersebut. Jika ada binding IAM tingkat bucket tambahan untuk bucket, pastikan untuk menyertakannya dalam permintaan.

    POST /storage/v1/b/example-logs-bucket/iam
    Host: storage.googleapis.com
    {
      "bindings":[
        {
          "role": "roles/storage.objectCreator",
          "members":[
            "group-cloud-storage-analytics@google.com"
          ]
        }
      ]
    }

    Peran ini memberi Cloud Storage, dalam bentuk grup cloud-storage-analytics@google.com, izin untuk membuat dan menyimpan log Anda sebagai objek baru.

    Objek log memiliki acl objek default dari bucket log, kecuali jika akses level bucket yang seragam diaktifkan di bucket.

  2. Aktifkan logging untuk bucket Anda menggunakan permintaan berikut:

    PATCH /storage/v1/b/example-bucket
    Host: storage.googleapis.com
    
    {
     "logging": {
      "logBucket": "example-logs-bucket",
      "logObjectPrefix": "log_object_prefix"
     }
    }

XML API

  1. Tetapkan izin untuk mengizinkan izin WRITE Cloud Storage ke bucket guna membuat dan menyimpan log sebagai objek baru. Anda harus menambahkan entri ACL untuk bucket yang memberikan akses tulis ke grup cloud-storage-analytics@google.com. Pastikan bahwa Anda telah menyertakan semua ACL yang ada untuk bucket, selain ACL baru, dalam permintaan.

    PUT /example-logs-bucket?acl HTTP/1.1
    Host: storage.googleapis.com
    
    <AccessControlList>
      <Entries>
        <Entry>
          <Scope type="GroupByEmail">
            <EmailAddress>cloud-storage-analytics@google.com</EmailAddress>
          </Scope>
         <Permission>WRITE</Permission>
        </Entry>
        <!-- include other existing ACL entries here-->
      </Entries>
    </AccessControlList>
    
  2. Aktifkan logging untuk bucket Anda menggunakan parameter kueri logging:

    PUT /example-bucket?logging HTTP/1.1
    Host: storage.googleapis.com
    
    <Logging>
        <LogBucket>example-logs-bucket</LogBucket>
        <LogObjectPrefix>log_object_prefix</LogObjectPrefix>
    </Logging>
    

Memeriksa status logging

Command line

Periksa logging menggunakan perintah buckets describe dengan flag --format:

gcloud storage buckets describe gs://example-bucket --format="default(logging_config)"

Anda juga dapat menyimpan konfigurasi logging ke file:

gcloud storage buckets describe gs://example-bucket > your_logging_configuration_file --format="default(logging_config)"

Jika logging diaktifkan, server akan menampilkan konfigurasi logging dalam respons:

logging:
  logBucket: example-logs-bucket
  logObjectPrefix: log_object_prefix

Jika logging tidak diaktifkan, nilai berikut akan ditampilkan:

null

REST API

JSON API

Kirim permintaan GET untuk konfigurasi logging bucket, seperti yang ditunjukkan pada contoh berikut ini:

GET /storage/v1/b/example-bucket?fields=logging
Host: storage.googleapis.com

Jika logging diaktifkan, server akan mengirimkan konfigurasi dalam respons. Responsnya mungkin terlihat seperti berikut:

{
 "logging": {
  "logBucket": "example-logs-bucket",
  "logObjectPrefix": "log_object_prefix"
  }
}

Jika logging tidak diaktifkan, konfigurasi kosong akan ditampilkan:

{}

XML API

Kirim permintaan GET Bucket untuk konfigurasi logging bucket seperti yang ditunjukkan pada contoh berikut ini:

GET /example-bucket?logging HTTP/1.1
Host: storage.googleapis.com

Jika logging diaktifkan, server akan mengirimkan konfigurasi dalam respons. Responsnya mungkin terlihat seperti berikut:

<?xml version="1.0" ?>
<Logging>
    <LogBucket>
        example-logs-bucket
    </LogBucket>
    <LogObjectPrefix>
        log_object_prefix
    </LogObjectPrefix>
</Logging>

Jika logging tidak diaktifkan, konfigurasi kosong akan ditampilkan:

<?xml version="1.0" ?>
<Logging/>

Download log

Log penyimpanan dibuat sekali sehari dan berisi jumlah penyimpanan yang digunakan untuk hari sebelumnya. Laporan ini biasanya dibuat sebelum pukul 10.00 PST.

Log penggunaan dibuat setiap jam jika ada aktivitas yang akan dilaporkan di bucket yang dipantau. Log penggunaan biasanya dibuat 15 menit setelah akhir jam.

Cara termudah untuk mendownload log penggunaan dan log penyimpanan dari bucket tempat log tersebut disimpan adalah melaluiKonsol Google Cloud atau gcloud storage CLI. Log penggunaan Anda dalam format CSV dan memiliki konvensi penamaan berikut:

OBJECT_PREFIX_usage_TIMESTAMP_ID_v0

Demikian pula, log penyimpanan diberi nama menggunakan konvensi berikut:

OBJECT_PREFIX_storage_TIMESTAMP_ID_v0

Misalnya, berikut adalah nama objek log penggunaan yang menggunakan awalan objek default, yang melaporkan penggunaan untuk bucket bernama example-bucket, dan dibuat pada 18 Juni 2022 pukul 14.00 UTC .

example-bucket_usage_2022_06_18_14_00_00_1702e6_v0

Demikian pula, berikut adalah nama objek log penyimpanan yang menggunakan awalan objek default dan dibuat pada 18 Juni 2022 untuk bucket yang sama:

example-bucket_storage_2022_06_18_07_00_00_1702e6_v0

Untuk mendownload log:

Konsol

  1. Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.

    Buka Bucket

  2. Pilih bucket tempat log Anda disimpan.

  3. Download atau lihat log dengan mengklik objek log yang sesuai.

Command line

Jalankan perintah berikut:

gcloud storage cp gs://BUCKET_NAME/LOGS_OBJECT DESTINATION

Dengan keterangan:

  • BUCKET_NAME adalah nama bucket tempat log disimpan. Misalnya, example-logs-bucket.

  • LOGS_OBJECT adalah nama log penggunaan atau log penyimpanan yang Anda download. Misalnya, example-bucket_usage_2022_06_18_14_00_00_1702e6_v0.

  • DESTINATION adalah lokasi tempat log yang didownload akan disimpan. Misalnya, Desktop/Logs.

Menganalisis log di BigQuery

Untuk mengkueri penggunaan Cloud Storage dan log penyimpanan, Anda dapat menggunakan Google BigQuery, yang memungkinkan Anda untuk membuat kueri cepat yang menyerupai SQL pada tabel yang hanya dapat menambahkan data. Alat Command Line BigQuery, bq, adalah alat berbasis Python yang memungkinkan Anda mengakses BigQuery dari command line. Untuk mengetahui informasi tentang mendownload dan menggunakan bq, lihat halaman referensi Alat Command Line bq.

Memuat log ke BigQuery

  1. Pilih project default.

    Untuk mengetahui detail tentang cara memilih project, lihat Menggunakan Project.

  2. Buat kumpulan data baru.

    $ bq mk storageanalysis
    Dataset 'storageanalysis' successfully created.
    
  3. Buat daftar set data dalam project:

    $ bq ls
     
    datasetId
    -----------------
    storageanalysis
    
  4. Simpan skema penggunaan dan penyimpanan ke komputer lokal Anda untuk digunakan dalam perintah pemuatan.

    Anda dapat menemukan skema yang akan digunakan di lokasi berikut: cloud_storage_usage_schema_v0 dan cloud_storage_storage_schema_v0. Skema ini juga dijelaskan di bagian Format Log Penggunaan dan Penyimpanan.

  5. Muat log penggunaan ke set data.

    $ bq load --skip_leading_rows=1 storageanalysis.usage \
          gs://example-logs-bucket/example-bucket_usage_2014_01_15_14_00_00_1702e6_v0 \
          ./cloud_storage_usage_schema_v0.json
    $ bq load --skip_leading_rows=1 storageanalysis.storage \
          gs://example-logs-bucket/example-bucket_storage_2014_01_05_14_00_00_091c5f_v0 \
          ./cloud_storage_storage_schema_v0.json
    

    Perintah ini melakukan hal berikut:

    • Memuat log penggunaan dan penyimpanan dari bucket example-logs-bucket.
    • Membuat tabel usage dan storage dalam set data storageanalysis.
    • Baca data skema (file .json) dari direktori yang sama dengan tempat perintah bq berjalan.
    • Melewati baris pertama setiap file log karena baris tersebut berisi deskripsi kolom.

    Karena ini adalah pertama kalinya Anda menjalankan perintah pemuatan dalam contoh di sini, tabel usage dan storage dibuat. Anda dapat terus menambahkan ke tabel ini menggunakan perintah pemuatan berikutnya dengan nama file log penggunaan yang berbeda atau menggunakan karakter pengganti. Misalnya, perintah berikut menambahkan data dari semua log yang dimulai dengan "bucket_usuage_2014", ke tabel storage:

    $ bq load --skip_leading_rows=1 storageanalysis.usage \
          gs://example-logs-bucket/bucket_usage_2014* \
          ./cloud_storage_usage_schema.json
    

    Saat menggunakan karakter pengganti, Anda mungkin ingin memindahkan log yang telah diupload ke BigQuery ke direktori lain (misalnya, gs://example-logs-bucket/processed) untuk menghindari upload data dari log lebih dari sekali.

Fungsi BigQuery juga dapat diakses melalui Alat Browser BigQuery. Dengan alat browser, Anda dapat memuat data melalui proses pembuatan tabel.

Untuk informasi tambahan tentang cara memuat data dari Cloud Storage, termasuk memuat data secara terprogram, lihat Memuat data dari Cloud Storage.

Mengubah skema log penggunaan

Dalam beberapa skenario, ada baiknya Anda melakukan pra-pemrosesan pada log penggunaan sebelum memuatnya ke BigQuery. Misalnya, Anda dapat menambahkan informasi tambahan ke log penggunaan untuk mempermudah analisis kueri di BigQuery. Di bagian ini, kami akan menunjukkan cara menambahkan nama file setiap log penggunaan penyimpanan ke log. Tindakan ini memerlukan modifikasi pada skema dan setiap file log yang sudah ada.

  1. Ubah skema yang ada, cloud_storage_storage_schema_v0, untuk menambahkan nama file seperti yang ditunjukkan di bawah. Beri nama baru pada skema baru, misalnya, cloud_storage_storage_schema_custom.json, untuk membedakannya dengan skema aslinya.

    [  {"name": "bucket", "type": "string", "mode": "REQUIRED"},
    {"name": "storage_byte_hours","type": "integer","mode": "REQUIRED"},
    {"name": "filename","type": "string","mode": "REQUIRED"}
    ]
    
  2. Lakukan pra-pemrosesan pada file log penggunaan penyimpanan berdasarkan skema baru, sebelum memuatnya ke BigQuery.

    Misalnya, perintah berikut dapat digunakan di lingkungan Linux, macOS, atau Windows (Cygwin):

    gcloud storage cp gs://example-logs-bucket/example-bucket_storage\* .
    for f in example-bucket_storage\*; do sed -i -e "1s/$/,\"filename\"/" -e "2s/$/,\""$f"\"/" $f; done
    

    Perintah gcloud storage menyalin file ke direktori kerja Anda. Perintah kedua melakukan loop pada file log dan menambahkan "filename" ke baris deskripsi (baris pertama) dan nama file yang sebenarnya ke baris data (baris kedua). Berikut adalah contoh file log yang diubah:

    "bucket","storage_byte_hours","filename"
    "example-bucket","5532482018","example-bucket_storage_2014_01_05_08_00_00_021fd_v0"
    
  3. Saat Anda memuat log penggunaan penyimpanan ke BigQuery, muat log yang diubah secara lokal dan gunakan skema yang disesuaikan.

    for f in example-bucket_storage\*; \
    do ./bq.py load --skip_leading_rows=1 storageanalysis.storage $f ./cloud_storage_storage_schema_custom.json; done
    

Mengkueri log di BigQuery

Setelah log dimuat ke BigQuery, Anda dapat membuat kueri log penggunaan untuk menampilkan informasi tentang bucket yang dicatat dalam log. Contoh berikut menunjukkan cara menggunakan alat bq dalam skenario saat Anda memiliki log penggunaan untuk bucket selama beberapa hari dan telah memuat log seperti yang ditunjukkan dalam Memuat log penggunaan ke BigQuery. Anda juga dapat menjalankan kueri di bawah menggunakan Alat Browser BigQuery.

  1. Di alat bq, masukkan mode interaktif.

    $ bq shell
    
  2. Jalankan kueri pada tabel log penyimpanan.

    Misalnya, kueri berikut menunjukkan perubahan dari waktu ke waktu pada penyimpanan bucket yang dicatat ke dalam log. Kueri tersebut mengasumsikan bahwa Anda mengubah log penggunaan penyimpanan seperti yang dijelaskan dalam Mengubah skema log penggunaan dan bahwa file log diberi nama "logstorage*".

    project-name>SELECT SUBSTRING(filename, 13, 10) as day, storage_byte_hours/24 as size FROM [storageanalysis.storage] ORDER BY filename LIMIT 100
    

    Contoh output dari kueri tersebut:

    Waiting on bqjob_r36fbf5c164a966e8_0000014379bc199c_1 ... (0s) Current status: DONE
    +------------+----------------------+
    |    day     |         size         |
    +------------+----------------------+
    | 2014_01_05 | 2.3052008408333334E8 |
    | 2014_01_06 | 2.3012297245833334E8 |
    | 2014_01_07 | 3.3477797120833334E8 |
    | 2014_01_08 | 4.4183686058333334E8 |
    +-----------------------------------+
    

    Jika tidak mengubah skema dan menggunakan skema default, Anda dapat menjalankan kueri berikut:

    project-name>SELECT storage_byte_hours FROM [storageanalysis.storage] LIMIT 100
    
  3. Jalankan kueri pada tabel log penggunaan.

    Misalnya, kueri berikut menunjukkan cara meringkas metode permintaan yang digunakan klien untuk mengakses resource dalam bucket yang dicatat ke dalam log.

    project-name>SELECT cs_method, COUNT(*) AS count FROM [storageanalysis.usage] GROUP BY cs_method
    

    Contoh output dari kueri tersebut:

    Waiting on bqjob_r1a6b4596bd9c29fb_000001437d6f8a52_1 ... (0s) Current status: DONE
    +-----------+-------+
    | cs_method | count |
    +-----------+-------+
    | PUT       |  8002 |
    | GET       | 12631 |
    | POST      |  2737 |
    | HEAD      |  2173 |
    | DELETE    |  7290 |
    +-----------+-------+
    
  4. Keluar dari shell interaktif alat bq.

    project-name> quit
    

Menonaktifkan logging

Command line

Nonaktifkan logging dengan flag --clear-log-bucket dalam perintah buckets update:

gcloud storage buckets update gs://example-bucket --clear-log-bucket

Untuk memeriksa apakah logging berhasil dinonaktifkan, gunakan perintah buckets describe:

gcloud storage buckets describe gs://example-bucket --format="default(logging_config)"

Jika logging dinonaktifkan, nilai berikut akan ditampilkan:

null

REST API

JSON API

Nonaktifkan logging dengan mengirimkan permintaan PATCH ke konfigurasi logging bucket, seperti yang ditunjukkan pada contoh berikut ini.

PATCH /example-bucket?logging HTTP/1.1
Host: storage.googleapis.com

{
 "logging": null
}

XML API

Nonaktifkan logging dengan mengirimkan permintaan PUT ke konfigurasi logging bucket seperti yang ditunjukkan pada contoh berikut ini:

PUT /example-bucket?logging HTTP/1.1
Host: storage.googleapis.com

<Logging/>

Format log penggunaan dan penyimpanan

Log penggunaan dan log penyimpanan dapat memberikan informasi dalam jumlah yang sangat besar. Anda dapat menggunakan tabel berikut untuk membantu mengidentifikasi semua informasi yang diberikan dalam log ini.

Kolom log penggunaan:

Kolom Jenis Deskripsi
time_micros bilangan bulat Waktu permintaan diselesaikan, dalam mikrodetik sejak epoch Unix.
c_ip string Alamat IP tempat permintaan dibuat. Awalan "c" menunjukkan bahwa ini adalah informasi tentang klien.
c_ip_type bilangan bulat Jenis IP di kolom c_ip:
  • Nilai 1 menunjukkan alamat IPv4.
  • Nilai 2 menunjukkan alamat IPv6.
c_ip_region string Dipesan untuk penggunaan di masa mendatang.
cs_method string Metode HTTP permintaan ini. Awalan "cs" menunjukkan bahwa informasi ini dikirim dari klien ke server.
cs_uri string URI permintaan.
sc_status bilangan bulat Kode status HTTP yang dikirim server sebagai respons. Awalan "sc" menunjukkan bahwa informasi ini dikirim dari server ke klien.
cs_bytes bilangan bulat Jumlah byte yang dikirim dalam permintaan.
sc_bytes bilangan bulat Jumlah byte yang dikirim dalam respons.
time_taken_micros bilangan bulat Waktu yang diperlukan untuk merespons permintaan dalam mikrodetik, diukur dari saat byte pertama diterima hingga saat respons dikirim. Perhatikan bahwa untuk upload yang dapat dilanjutkan, titik akhir dari proses ini ditentukan oleh respons terhadap permintaan upload akhir yang merupakan bagian dari upload yang dapat dilanjutkan.
cs_host string Host dalam permintaan asli.
cs_referer string Perujuk HTTP untuk permintaan.
cs_user_agent string User-Agent permintaan. Nilainya adalah GCS Lifecycle Management untuk permintaan yang dibuat oleh pengelolaan siklus proses.
s_request_id string ID permintaan.
cs_operation string Operasi Cloud Storage, misalnya GET_Object. Nilainya boleh null.
cs_bucket string Bucket yang ditentukan dalam permintaan.
cs_object string Objek yang ditentukan dalam permintaan ini. Nilainya boleh null.

Kolom log penyimpanan:

Kolom Jenis Deskripsi
bucket string Nama bucket.
storage_byte_hours bilangan bulat Ukuran rata-rata dalam byte-jam selama periode 24 jam bucket. Untuk mendapatkan total ukuran bucket, bagi byte-jam dengan 24.