Log dan metrik untuk penyimpanan cache

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 Cloud CDN dan Load Balancer Aplikasi Eksternal.

Log untuk Cloud CDN dikaitkan dengan Load Balancer Aplikasi eksternal tempat backend Cloud CDN Anda terpasang. Log Cloud CDN diindeks terlebih dahulu oleh aturan penerusan dan kemudian oleh peta URL.

Untuk melihat log Cloud CDN, ikuti langkah-langkah berikut.

Konsol

  1. Di Konsol Google Cloud, buka halaman Logs Explorer.

    Buka Logs Explorer

  2. Di menu Resource, pilih Cloud HTTP Load Balancer.
  3. Lihat log sebagai berikut:
    • View all logs: pilih menu Resource, lalu pilih All forwarding rules.
    • View the logs for a forwarding rule: pilih nama aturan penerusan dari daftar aturan penerusan.
    • Melihat log untuk peta URL yang digunakan oleh aturan penerusan: pilih aturan penerusan, lalu pilih peta URL.

Permintaan disalurkan dari backend

Untuk mengonfirmasi bahwa permintaan disalurkan dari backend yang mendukung Cloud CDN, ada tiga kolom utama yang harus dicari, sebagai berikut:

  • httpRequest: Saat permintaan disalurkan dari backend, Anda dapat melihat bahwa cache telah diisi dan Anda dapat mengonfirmasi URL permintaan.
    • cacheFillBytes: NUMBER_OF_BYTES
    • cacheLookup: True
    • requestURL: URL
  • jsonPayload: Dari kolom statusDetails, Anda dapat mengonfirmasi bahwa respons disalurkan oleh backend.
    • statusDetails: "response_sent_by_backend"

Permintaan disalurkan dari cache

Entri log berikut menunjukkan cache ditemukan.

 {
    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 dan/atau pengisian cache dilakukan.

  • Kolom jsonPayload.cacheId, yang menunjukkan lokasi dan instance cache tempat respons cache disajikan. Misalnya, respons cache yang disalurkan dari cache di Amsterdam akan memiliki nilai cacheId AMS-85e2bd4b, dengan AMS sebagai kode IATA, dan 85e2bd4b adalah ID buram dari instance cache (karena beberapa lokasi Cloud CDN memiliki beberapa cache terpisah).

  • Kolom statusDetails dan cacheDetail dari jsonPayload.

Anda dapat memfilter kolom berikut untuk menentukan status cache ditemukan, tidak ditemukan, atau divalidasi ulang dari permintaan yang disalurkan oleh Cloud CDN:

  • Cache Ditemukan

    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 Tidak Ada

    jsonPayload.statusDetails="response_sent_by_backend"

    atau

    httpRequest.cacheHit!=true
    httpRequest.cacheLookup=true

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 Cloud CDN melayani permintaan klien dengan memulai permintaan validasi dan/atau permintaan rentang byte, Cloud CDN 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 permintaan klien tunggal yang meminta Cloud CDN 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. Monitoring digunakan untuk memantau kondisi deployment Cloud CDN.

Cloud Monitoring menyediakan serangkaian definisi dasbor yang tersedia di GitHub di repositori contoh pemantauan-dasbor sebagai file JSON. Dalam file jaringan, terdapat dasbor khusus Cloud CDN yang disebut cloud-cdn-monitoring.json. Upload dasbor kustom ini ke Monitoring dengan mengikuti petunjuk di Menginstal dasbor sampel.

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 tempelkan ke dasbor Monitoring kustom.

Jumlah byte permintaan yang diperinci 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 menyertakan filter (resource.backend_target_name = 'example-backend'), yang mempersempit traffic ke backend example-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 berdasarkan class kode respons untuk backend yang mendukung Cloud CDN

Kueri ini mengelompokkan traffic berdasarkan 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 diperinci berdasarkan negara asal

Kueri ini menampilkan traffic yang dikelompokkan berdasarkan negara asal, yang ditentukan 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, lihat HttpRequest.