Log dan metrik untuk penyimpanan dalam 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 Load Balancer Aplikasi Eksternal dan Cloud CDN.

Log untuk Cloud CDN dikaitkan dengan Load Balancer Aplikasi eksternal yang terpasang ke backend Cloud CDN Anda. Log Cloud CDN diindeks pertama menurut aturan penerusan dan kemudian menurut 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:
    • Melihat semua log: pilih menu Resource, lalu pilih Semua aturan penerusan.
    • Melihat log untuk aturan penerusan: 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 ditayangkan dari backend

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

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

Permintaan disalurkan 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 mencatat 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 disalurkan. Misalnya, respons cache yang disalurkan dari cache di Amsterdam akan memiliki nilai cacheId AMS-85e2bd4b, dengan AMS adalah kode IATA, dan 85e2bd4b adalah ID buram dari instance cache (karena beberapa lokasi Cloud CDN memiliki beberapa cache diskrit).

  • Kolom statusDetails dan cacheDetail dari jsonPayload.

Anda dapat memfilter kolom berikut untuk menentukan status hit, miss, atau validasi ulang cache dari permintaan yang ditayangkan oleh Cloud CDN:

  • Cache Hit

    jsonPayload.statusDetails=("response_from_cache" OR "byte_range_caching")

    atau

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer!=true

  • Cache Ditemukan Divalidasi Dengan Server Asal

    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 Cloud CDN melayani permintaan klien dengan memulai permintaan validasi atau permintaan rentang byte, Cloud CDN akan menghilangkan kolom serverIp dari entri log Cloud Logging untuk permintaan klien. Hal ini karena Cloud CDN dapat mengirim permintaan ke beberapa alamat IP server sebagai respons terhadap satu permintaan klien.

Setiap permintaan yang dimulai oleh Cloud CDN 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 mendorong 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. Monitoring digunakan untuk memantau kondisi pen-deploy-an Cloud CDN.

Cloud Monitoring menyediakan dasbor yang telah ditentukan sebelumnya yang diaktifkan secara default untuk mendapatkan insight cepat tentang kondisi dan performa sistem. Monitoring juga menawarkan serangkaian dasbor kustom. Definisi dasbor kustom ini tersedia di GitHub dalam repositori monitoring-dashboard-samples sebagai file JSON. Di direktori dashboards/networking, ada dasbor kustom khusus Cloud CDN bernama cloud-cdn-monitoring.json. Upload dasbor kustom ini ke Monitoring dengan mengikuti petunjuk di Menginstal contoh dasbor.

Dasbor standar

Cloud Monitoring menawarkan dasbor yang telah ditetapkan untuk Cloud CDN. Dasbor ini menampilkan metrik utama yang memungkinkan Anda memantau distribusi traffic dan efektivitas cache tanpa konfigurasi manual.

Melihat dasbor standar

Lakukan langkah-langkah berikut untuk mengakses dasbor standar:

  1. Di konsol Google Cloud , buka halaman Cloud CDN.

    Buka Cloud CDN

  2. Klik nama asal yang ingin Anda lihat dasbornya.

  3. Di halaman Detail asal, klik Monitoring.

    Dasbor standar akan muncul secara default.

Metrik di dasbor

Dasbor standar memberikan metrik utama berikut tentang origin CDN Anda:

  • Distribusi traffic klien

    Peta geografis dinamis yang menampilkan sumber permintaan klien. Peta ini memberikan ringkasan visual global tentang asal lalu lintas. Anda dapat menyesuaikan filter rentang waktu untuk menganalisis pola distribusi traffic selama periode tertentu.

  • Metrik inti

    Tabel berikut menjelaskan metrik inti yang ditampilkan di dasbor.

    Metrik Deskripsi
    Total permintaan Jumlah gabungan semua permintaan HTTP/HTTPS yang diproses oleh Cloud CDN, yang disajikan dari cache atau dari layanan backend asal. Diagram ini menampilkan jumlah permintaan dari waktu ke waktu.
    Traffic keluar dari cache Total volume data, dalam byte, yang disajikan dari cache edge Cloud CDN. Diagram batang menampilkan volume keluar dari waktu ke waktu.
    Total rasio error Persentase semua permintaan yang menghasilkan kode status error 4xx atau 5xx. Metrik ini adalah indikator utama kondisi layanan secara keseluruhan.
    Rasio error 4xx Persentase permintaan yang menghasilkan kode status sisi klien. Ini adalah kode 4xx, seperti 404 Not Found atau 403 Forbidden. Error tersebut menunjukkan masalah pada konten yang diminta atau izin klien.
    Rasio error 5xx Persentase permintaan yang menghasilkan kode status sisi server. Ini adalah kode 5xx, seperti 502 Bad Gateway atau 503 Service Unavailable. Error tersebut menunjukkan masalah pada layanan asal backend atau konfigurasi load balancer.
    Rasio cache ditemukan Rasio, sebagai persentase, permintaan yang disalurkan langsung dari cache Cloud CDN dibandingkan dengan jumlah total permintaan.
    Total pengisian cache Total volume data, dalam byte, yang diambil dari backend asal dan disimpan di cache Cloud CDN.

Dasbor kustom

Monitoring memungkinkan Anda membuat dasbor kustom. Dasbor dapat menggunakan salah satu metrik pemantauan untuk Load Balancer Aplikasi eksternal. Berikut beberapa contoh cuplikan PromQL yang dapat Anda tempelkan 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 cache_result!="DISABLED".

sum by (cache_result) (
 rate({"loadbalancing.googleapis.com/https/response_bytes_count", monitored_resource="https_lb_rule", cache_result!="DISABLED"}[1m])
)

Latensi TCP pulang pergi klien pada 95% untuk target backend tertentu

Kueri ini mencakup 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.

histogram_quantile(
 0.95,
 sum by (proxy_continent, le) (
   rate({"loadbalancing.googleapis.com/https/frontend_tcp_rtt_bucket",
     monitored_resource="https_lb_rule",
     backend_target_name="example-backend"
   }[1m])
 )
)

Jumlah permintaan yang dikelompokkan menurut kelas kode respons untuk backend yang mendukung Cloud CDN

Kueri ini memecah traffic menurut class kode respons (2xx, 3xx, 4xx, 5xx) untuk membantu memisahkan keberhasilan klien, error klien, dan error server.

sum by (response_code_class) (
 count_over_time(
  {"loadbalancing.googleapis.com/https/request_count",
     monitored_resource="https_lb_rule",
     cache_result!="DISABLED"
   }[1h]
 )
)

Jumlah permintaan yang dikelompokkan menurut negara asal

Kueri ini menampilkan traffic yang dikelompokkan menurut negara asal, yang ditentukan dengan menggunakan alamat IP klien.

sum by (client_country) (
 rate({"loadbalancing.googleapis.com/https/request_count", monitored_resource="https_lb_rule"}[1m])
)

Langkah berikutnya

  • Untuk mempelajari lebih lanjut logging, 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.