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.
- Log Audit Cloud 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
atauallAuthenticatedUsers
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 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
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.
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
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.
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
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 grupcloud-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>
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
- Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.
Pilih bucket tempat log Anda disimpan.
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
Pilih project default.
Untuk mengetahui detail tentang cara memilih project, lihat Menggunakan Project.
Buat kumpulan data baru.
$ bq mk storageanalysis Dataset 'storageanalysis' successfully created.
Buat daftar set data dalam project:
$ bq ls datasetId
-----------------
storageanalysisSimpan 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.
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
danstorage
dalam set datastorageanalysis
. - 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
danstorage
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 tabelstorage
:$ 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.- Memuat log penggunaan dan penyimpanan dari bucket
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.
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"} ]
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"
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.
Di alat bq, masukkan mode interaktif.
$ bq shell
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
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 | +-----------+-------+
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:
|
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. |