Setiap permintaan Cloud CDN dicatat ke dalam log di Cloud Logging. Untuk mengetahui informasi tentang cara mengaktifkan dan menonaktifkan logging, lihat Ringkasan logging dan pemantauan Load Balancer Aplikasi Eksternal serta Cloud CDN.
Log untuk Cloud CDN dikaitkan dengan Load Balancer Aplikasi eksternal yang menjadi tempat backend Cloud CDN Anda terpasang. Log Cloud CDN diindeks terlebih dahulu menurut aturan penerusan, lalu menurut peta URL.
Untuk melihat log Cloud CDN, ikuti langkah-langkah berikut.
Konsol
- Di Konsol Google Cloud, buka halaman Logs Explorer.
- Di menu Resource, pilih Cloud HTTP Load Balancer.
- Lihat log sebagai berikut:
- Melihat semua log: pilih menu Resource, lalu pilih All forwarding rules.
- Melihat log untuk aturan penerusan: pilih nama aturan penerusan dari daftar aturan penerusan.
- Lihat log untuk peta URL yang digunakan oleh aturan penerusan: pilih aturan penerusan, lalu pilih peta URL.
Permintaan yang ditayangkan dari backend
Untuk mengonfirmasi bahwa permintaan ditayangkan dari backend yang mengaktifkan Cloud CDN, ada tiga kolom utama yang harus dicari, sebagai berikut:
httpRequest
: Saat permintaan ditayangkan dari backend, Anda dapat melihat bahwa cache diisi dan Anda dapat mengonfirmasi URL permintaan.cacheFillBytes:
NUMBER_OF_BYTEScacheLookup: True
requestURL
: URL
jsonPayload
: Dari kolomstatusDetails
, Anda dapat mengonfirmasi bahwa respons ditayangkan oleh backend.statusDetails: "response_sent_by_backend"
Permintaan ditayangkan dari cache
Entri log berikut menunjukkan hit cache.
{ insertId: "1oek5rg3l3fxj7" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" cacheId: "SFO-fbae48ad" statusDetails: "response_from_cache" } httpRequest: { requestMethod: "GET" requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg" requestSize: "577" status: 304 responseSize: "157" userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" remoteIp: "CLIENT_IP_ADDRESS" cacheHit: true cacheLookup: true } resource: { type: "http_load_balancer" labels: { zone: "global" url_map_name: "URL_MAP_NAME" forwarding_rule_name: "FORWARDING_RULE_NAME" target_proxy_name: "TARGET_PROXY_NAME" backend_service_name: "" project_id: "PROJECT_ID" } } timestamp: "2020-06-08T23:41:30.078651Z" severity: "INFO" logName: "projects/PROJECT_ID/logs/requests" trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992" receiveTimestamp: "2020-06-08T23:41:30.588272510Z" spanId: "7b6537d3672e08e1" }
Apa itu log?
Selain informasi umum yang terdapat di sebagian besar log, seperti tingkat keparahan, project ID, nomor project, dan stempel waktu, log Load Balancer Aplikasi eksternal dan Cloud CDN berisi hal berikut:
Kolom log HttpRequest, yang merekam kode status HTTP, byte yang ditampilkan, dan apakah pencarian cache atau pengisian cache dilakukan.
Kolom
jsonPayload.cacheId
, yang menunjukkan lokasi dan instance cache tempat respons cache ditayangkan. Misalnya, respons cache yang ditayangkan dari cache di Amsterdam akan memiliki nilai cacheIdAMS-85e2bd4b
, denganAMS
adalah kode IATA, dan85e2bd4b
adalah ID buram dari instance cache (karena beberapa lokasi Cloud CDN memiliki beberapa cache terpisah).Kolom
statusDetails
dancacheDetail
darijsonPayload
.
Anda dapat memfilter kolom berikut untuk menentukan status hit, miss, atau validasi ulang cache dari permintaan yang ditayangkan oleh Cloud CDN:
Hit Cache
jsonPayload.statusDetails=("response_from_cache" OR "byte_range_caching")
atau
httpRequest.cacheHit=true
httpRequest.cacheValidatedWithOriginServer!=true
Cache Hit Divalidasi dengan Server Origin
jsonPayload.statusDetails="response_from_cache_validated"
atau
httpRequest.cacheHit=true
httpRequest.cacheValidatedWithOriginServer=true
Cache Miss
jsonPayload.statusDetails="response_sent_by_backend"
atau
httpRequest.cacheHit!=true
httpRequest.cacheLookup=true
Atau, Anda dapat mengamati status cache dari sisi klien dengan
mengonfigurasi header respons kustom
dengan cdn_cache_status
.
Kolom log berjenis boolean biasanya hanya muncul jika memiliki nilai
true
. Jika kolom boolean memiliki nilai false
, kolom tersebut akan dihilangkan dari log.
Encoding UTF-8 diterapkan untuk kolom ini. Karakter yang bukan karakter UTF-8 akan diganti dengan tanda tanya.
Saat menayangkan permintaan klien dengan memulai permintaan validasi atau permintaan rentang byte, Cloud CDN akan menghapus kolom serverIp
dari entri log Cloud Logging untuk permintaan klien. Hal ini karena Cloud CDN dapat mengirim permintaan ke beberapa alamat IP server sebagai reaksi terhadap satu permintaan klien.
Setiap permintaan yang dimulai oleh Cloud CDN akan membuat entri log Cloud Logging. Entri log yang dihasilkan berisi kolom parentInsertId
di dalam
jsonPayload
. Anda dapat menggunakan kolom ini untuk mengidentifikasi insertId
entri log
untuk satu permintaan klien yang meminta Cloud CDN untuk memulai
permintaan validasi atau permintaan rentang byte. Selain itu, entri log
mengidentifikasi Cloud CDN sebagai agen pengguna.
Pemantauan untuk Cloud CDN
Cloud CDN mengekspor data pemantauan ke Cloud Monitoring. Pemantauan digunakan untuk memantau kondisi deployment Cloud CDN.
Cloud Monitoring menyediakan kumpulan definisi dasbor yang tersedia di GitHub di
repositori monitoring-dashboard-samples
sebagai file JSON. Dalam file jaringan, ada dasbor khusus Cloud CDN yang disebut
cloud-cdn-monitoring.json
. Upload dasbor kustom ini ke Monitoring dengan mengikuti petunjuk dalam artikel Menginstal contoh dasbor.
Memantau contoh kueri Cloud CDN
Monitoring memungkinkan Anda membuat dasbor kustom. Dasbor dapat menggunakan salah satu metrik pemantauan untuk Load Balancer Aplikasi eksternal. Berikut adalah beberapa contoh cuplikan MQL yang dapat Anda tempel ke dasbor Monitoring kustom.
Jumlah byte permintaan yang dikelompokkan menurut hasil cache
Kueri ini berfokus pada backend yang mengaktifkan Cloud CDN, yang dilakukan dengan menyertakan filter (metric.cache_result
!= 'DISABLED')
.
fetch https_lb_rule | metric 'loadbalancing.googleapis.com/https/response_bytes_count' | filter (metric.cache_result != 'DISABLED') | align rate(1m) | every 1m | group_by [metric.cache_result], [value_response_bytes_count_aggregate: aggregate(value.response_bytes_count)]
Latensi TCP bolak-balik klien sebesar 95% untuk target backend tertentu
Kueri ini mencakup filter (resource.backend_target_name = 'example-backend')
,
yang mempersempit traffic ke example-backend
backend. Backend dapat berupa bucket Cloud Storage, grup VM Compute Engine, atau backend eksternal.
fetch https_lb_rule | metric 'loadbalancing.googleapis.com/https/frontend_tcp_rtt' | filter (resource.backend_target_name = 'example-backend') | group_by 1m, [value_frontend_tcp_rtt_aggregate: aggregate(value.frontend_tcp_rtt)] | every 1m | group_by [metric.proxy_continent], [value_frontend_tcp_rtt_aggregate_percentile: percentile(value_frontend_tcp_rtt_aggregate, 95)]
Jumlah permintaan yang dikelompokkan menurut class kode respons untuk backend yang mendukung Cloud CDN
Kueri ini membagi traffic menurut class kode respons (2xx, 3xx, 4xx, 5xx) untuk membantu memisahkan keberhasilan klien, error klien, dan error server.
fetch https_lb_rule | metric 'loadbalancing.googleapis.com/https/request_count' | filter (metric.cache_result != 'DISABLED') | group_by 1h, [row_count: row_count()] | every 1h | group_by [metric.response_code_class], [row_count_aggregate: aggregate(row_count)]
Jumlah permintaan yang dikelompokkan menurut negara asal
Kueri ini menampilkan traffic yang dikelompokkan menurut negara asal, yang ditentukan dengan menggunakan alamat IP klien.
fetch https_lb_rule | metric 'loadbalancing.googleapis.com/https/request_count' | align rate(1m) | every 1m | group_by [metric.client_country], [value_request_count_aggregate: aggregate(value.request_count)]
Langkah selanjutnya
Untuk mempelajari logging lebih lanjut, termasuk cara mengekspor log ke BigQuery, Pub/Sub, atau Cloud Storage, dan cara mengonfigurasi metrik berbasis log untuk pemantauan dan pemberitahuan, lihat dokumentasi Cloud Logging.
Untuk mempelajari kolom yang disertakan dalam entri log
httpRequest
, lihatHttpRequest
.