Log dan metrik untuk layanan backend

Dokumen ini menunjukkan cara mengonfigurasi dan menggunakan Cloud Logging dan Cloud Monitoring dengan Load Balancer Aplikasi klasik, Load Balancer Aplikasi eksternal global, dan Cloud CDN.

Logging

Anda dapat mengaktifkan, menonaktifkan, dan melihat log untuk layanan backend Load Balancer Aplikasi eksternal. Untuk Load Balancer Aplikasi eksternal dengan bucket backend, logging akan otomatis diaktifkan dan tidak dapat dinonaktifkan.

Anda mengaktifkan atau menonaktifkan logging untuk setiap layanan backend. Anda dapat mengonfigurasi apakah akan mencatat log semua permintaan atau fraksi sampel acak.

Anda harus memastikan bahwa Anda tidak memiliki pengecualian log yang berlaku untuk Load Balancer Aplikasi eksternal. Untuk petunjuk tentang cara memverifikasi bahwa log Cloud HTTP Load Balancer diizinkan, lihat Melihat pengecualian jenis resource.

Pengambilan sampel dan pengumpulan log

Permintaan (dan respons yang sesuai) yang ditangani oleh instance virtual machine (VM) backend load balancer diambil sampelnya. Permintaan sampel ini kemudian diproses untuk membuat log. Anda mengontrol fraksi permintaan yang dimunculkan sebagai entri log sesuai dengan parameter logConfig.sampleRate. Jika logConfig.sampleRate adalah 1.0 (100%), artinya log dibuat untuk semua permintaan dan ditulis ke Cloud Logging.

Mengaktifkan logging di layanan backend baru

Konsol

  1. Di konsol Google Cloud, buka halaman Load Balancing.

    Buka Load balancing

  2. Klik nama load balancer Anda.

  3. Klik Edit.

  4. Klik Backend Configuration.

  5. Pilih Create a backend service.

  6. Lengkapi kolom layanan backend yang diperlukan.

  7. Di bagian Logging, centang kotak Enable logging.

  8. Tetapkan pecahan Sample rate. Anda dapat menetapkan angka dari 0.0 hingga 1.0, dengan 0.0 berarti tidak ada permintaan yang dicatat ke dalam log dan 1.0 berarti 100% permintaan dicatat ke dalam log. Nilai defaultnya adalah 1.0.

  9. Untuk menyelesaikan pengeditan layanan backend, klik Update.

  10. Untuk menyelesaikan pengeditan load balancer, klik Update.

gcloud: Mode global

Buat layanan backend dan aktifkan logging menggunakan perintah gcloud compute backend-services create.

gcloud compute backend-services create BACKEND_SERVICE \
    --global \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --load-balancing-scheme=EXTERNAL_MANAGED

di mana

  • --global menunjukkan bahwa layanan backend bersifat global. Gunakan kolom ini untuk layanan backend yang digunakan dengan Load Balancer Aplikasi eksternal global.
  • --enable-logging mengaktifkan logging untuk layanan backend tersebut.
  • --logging-sample-rate memungkinkan Anda menentukan nilai dari 0.0 hingga 1.0, dengan 0.0 berarti tidak ada permintaan yang dicatat ke dalam log dan 1.0 berarti 100% permintaan dicatat ke dalam log. Hanya berguna dengan parameter --enable-logging. Mengaktifkan logging, tetapi menetapkan frekuensi sampling ke 0.0 sama dengan menonaktifkan logging. Nilai default-nya adalah 1.0.

gcloud: Mode klasik

Buat layanan backend dan aktifkan logging menggunakan perintah gcloud compute backend-services create.

gcloud compute backend-services create BACKEND_SERVICE \
 --global \
 --enable-logging \
 --logging-sample-rate=VALUE \
 --load-balancing-scheme=EXTERNAL

di mana

  • --global menunjukkan bahwa layanan backend bersifat global. Gunakan kolom ini untuk layanan backend yang digunakan dengan Load Balancer Aplikasi klasik.
  • --enable-logging mengaktifkan logging untuk layanan backend tersebut.
  • --logging-sample-rate memungkinkan Anda menentukan nilai dari 0.0 hingga 1.0, dengan 0.0 berarti tidak ada permintaan yang dicatat ke dalam log dan 1.0 berarti 100% permintaan dicatat ke dalam log. Hanya berguna dengan parameter --enable-logging. Mengaktifkan logging, tetapi menetapkan frekuensi sampling ke 0.0 sama dengan menonaktifkan logging. Nilai default-nya adalah 1.0.

Mengaktifkan logging di layanan backend yang ada

Konsol

  1. Di konsol Google Cloud, buka halaman Load Balancing.

    Buka Load balancing

  2. Klik nama load balancer Anda.

  3. Klik Edit.

  4. Klik Backend Configuration.

  5. Klik Edit di samping layanan backend Anda.

  6. Di bagian Logging, centang kotak Enable logging.

  7. Di kolom Sample rate, tetapkan probabilitas sampling. Anda dapat menetapkan angka dari 0.0 hingga 1.0, dengan 0.0 berarti tidak ada permintaan yang dicatat ke dalam log dan 1.0 berarti 100% permintaan dicatat ke dalam log. Nilai default-nya adalah 1.0.

  8. Untuk menyelesaikan pengeditan layanan backend, klik Update.

  9. Untuk menyelesaikan pengeditan load balancer, klik Update.

gcloud: Mode global

Aktifkan logging di layanan backend yang ada dengan perintah gcloud compute backend-services update.

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --enable-logging \
    --logging-sample-rate=VALUE

di mana

  • --global menunjukkan bahwa layanan backend bersifat global. Gunakan kolom ini untuk layanan backend yang digunakan dengan Load Balancer Aplikasi eksternal global.
  • --enable-logging mengaktifkan logging untuk layanan backend tersebut.
  • --logging-sample-rate memungkinkan Anda menentukan nilai dari 0.0 hingga 1.0, dengan 0.0 berarti tidak ada permintaan yang dicatat ke dalam log dan 1.0 berarti 100% permintaan dicatat ke dalam log. Hanya berguna dengan parameter --enable-logging. Mengaktifkan logging, tetapi menetapkan frekuensi sampling ke 0.0 sama dengan menonaktifkan logging. Nilai default-nya adalah 1.0.

gcloud: Mode klasik

Aktifkan logging di layanan backend yang ada dengan perintah gcloud compute backend-services update.

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --enable-logging \
    --logging-sample-rate=VALUE

di mana

  • --global menunjukkan bahwa layanan backend bersifat global. Gunakan kolom ini untuk layanan backend yang digunakan dengan Load Balancer Aplikasi klasik.
  • --enable-logging mengaktifkan logging untuk layanan backend tersebut.
  • --logging-sample-rate memungkinkan Anda menentukan nilai dari 0.0 hingga 1.0, dengan 0.0 berarti tidak ada permintaan yang dicatat ke dalam log dan 1.0 berarti 100% permintaan dicatat ke dalam log. Hanya berguna dengan parameter --enable-logging. Mengaktifkan logging, tetapi menetapkan frekuensi sampling ke 0.0 sama dengan menonaktifkan logging. Nilai default-nya adalah 1.0.

Menonaktifkan atau mengubah logging di layanan backend yang ada

Konsol

  1. Di konsol Google Cloud, buka halaman Load Balancing.

    Buka Load balancing

  2. Klik nama load balancer Anda.

  3. Klik Edit.

  4. Klik Backend Configuration.

  5. Klik Edit di samping layanan backend Anda.

  6. Untuk menonaktifkan logging sepenuhnya, di bagian Logging, hapus centang pada kotak Enable logging.

  7. Jika Anda mengaktifkan logging, Anda dapat menetapkan fraksi Sample rate yang berbeda. Anda dapat menetapkan angka dari 0.0 hingga 1.0, dengan 0.0 berarti tidak ada permintaan yang dicatat ke dalam log dan 1.0 berarti 100% permintaan dicatat ke dalam log. Nilai defaultnya adalah 1.0. Misalnya, 0.2 berarti 20% permintaan sampel menghasilkan log.

  8. Untuk menyelesaikan pengeditan layanan backend, klik Update.

  9. Untuk menyelesaikan pengeditan load balancer, klik Update.

gcloud: Mode global

Nonaktifkan logging di layanan backend dengan perintah gcloud compute backend-services update.

Menonaktifkan logging sepenuhnya

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --no-enable-logging

di mana

  • --global menunjukkan bahwa layanan backend bersifat global. Gunakan kolom ini untuk layanan backend yang digunakan dengan Load Balancer Aplikasi eksternal global.
  • --region menunjukkan bahwa layanan backend bersifat regional. Gunakan kolom ini untuk layanan backend yang digunakan dengan Load Balancer Aplikasi eksternal regional.
  • --no-enable-logging menonaktifkan logging untuk layanan backend tersebut.

Mengubah frekuensi sampel logging

gcloud compute backend-services update BACKEND_SERVICE \
 --global \
 --logging-sample-rate=VALUE

gcloud: Mode klasik

Nonaktifkan logging di layanan backend dengan perintah gcloud compute backend-services update.

Menonaktifkan logging sepenuhnya

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --no-enable-logging

di mana

  • --global menunjukkan bahwa layanan backend bersifat global. Gunakan kolom ini untuk layanan backend yang digunakan dengan Load Balancer Aplikasi klasik.
  • --no-enable-logging menonaktifkan logging untuk layanan backend tersebut.

Mengubah frekuensi sampel logging

gcloud compute backend-services update BACKEND_SERVICE \
 --global \
 --logging-sample-rate=VALUE

di mana

  • --global menunjukkan bahwa layanan backend bersifat global. Gunakan kolom ini untuk layanan backend yang digunakan dengan Load Balancer Aplikasi klasik.
  • --logging-sample-rate memungkinkan Anda menentukan nilai dari 0.0 hingga 1.0, dengan 0.0 berarti tidak ada permintaan yang dicatat ke dalam log dan 1.0 berarti 100% permintaan dicatat ke dalam log. Hanya berguna dengan parameter --enable-logging. Mengaktifkan logging, tetapi menetapkan frekuensi sampling ke 0.0 sama dengan menonaktifkan logging.

Lihat log


Jika ingin mengikuti panduan langkah demi langkah untuk tugas ini langsung di Konsol Google Cloud, klik Pandu saya:

Pandu saya


Log HTTP(S) diindeks terlebih dahulu oleh aturan penerusan, lalu oleh peta URL.

Untuk melihat log, buka halaman Logs Explorer:

Buka Logs Explorer

  • Untuk melihat semua log, di menu filter Resource, pilih Cloud HTTP Load Balancer > All forwarding rules.

  • Untuk melihat log satu aturan penerusan, pilih satu nama aturan penerusan.

  • Untuk melihat log untuk satu peta URL, pilih aturan penerusan, lalu pilih peta URL.

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 log. Karakter yang bukan karakter UTF-8 akan diganti dengan tanda tanya. Untuk Load Balancer Aplikasi klasik dan Load Balancer Aplikasi eksternal global, Anda dapat mengekspor metrik berbasis log menggunakan log resource (resource.type="http_load_balancer"). Metrik yang dibuat didasarkan pada resource "Aturan Load Balancer Aplikasi (Metrik Berbasis Log)" (l7_lb_rule), yang tersedia di dasbor Cloud Monitoring, bukan di resource https_lb_rule.

Apa itu log?

Entri log Load Balancer Aplikasi Eksternal berisi informasi yang berguna untuk memantau dan men-debug traffic HTTP(S) Anda. Data log berisi kolom wajib diisi, yang merupakan kolom default dari setiap data log.

Kolom Format kolom Jenis kolom: Wajib Diisi atau Opsional Deskripsi
severity
insertID
logName
LogEntry Wajib Kolom umum seperti yang dijelaskan dalam entri log.
stempel waktu string (Timestamp format) Opsional Waktu saat GFE lapisan pertama menerima permintaan.
httpRequest HttpRequest Wajib Protokol umum untuk mencatat permintaan HTTP.

HttpRequest.protocol tidak diisi untuk resource.type="http_load_balancer"

.
resource MonitoredResource Wajib

MonitoredResource adalah jenis resource yang terkait dengan entri log.

MonitoredResourceDescriptor menjelaskan skema objek MonitoredResource dengan menggunakan nama jenis dan kumpulan label. Untuk informasi selengkapnya, lihat Label resource.

jsonPayload objek (format Struct) Wajib Payload entri log yang dinyatakan sebagai objek JSON. Objek JSON berisi kolom berikut:
  • statusDetails
  • backendTargetProjectNumber
  • overrideResponseCode
  • errorService
  • errorBackendStatusDetails
  • authzPolicyInfo
  • loadBalancingScheme
string Wajib Kolom statusDetails menyimpan string yang menjelaskan alasan load balancer menampilkan status HTTP yang ditampilkan. Untuk informasi selengkapnya tentang string log ini, lihat pesan keberhasilan HTTP statusDetails dan pesan kegagalan HTTP statusDetails.
string Wajib Kolom backendTargetProjectNumber menyimpan nomor project tempat target backend—layanan backend atau bucket backend—telah dibuat. Kolom ini memiliki format: "projects/PROJECT_NUMBER". Informasi ini hanya tersedia untuk Load Balancer Aplikasi eksternal global yang menggunakan respons error kustom.
bilangan bulat Wajib overrideResponseCode menyimpan kode respons penggantian yang diterapkan ke respons yang dikirim ke klien. Informasi ini hanya tersedia untuk Load Balancer Aplikasi eksternal global yang menggunakan respons error kustom.
string Wajib Kolom errorService menyimpan layanan backend yang menyediakan respons error kustom. Informasi ini hanya tersedia untuk Load Balancer Aplikasi eksternal global yang menggunakan respons error kustom.
string Wajib Kolom errorBackendStatusDetails menyimpan statusDetails respons akhir yang ditayangkan ke klien. Informasi ini hanya tersedia untuk Load Balancer Aplikasi eksternal global yang menggunakan respons error kustom.
AuthzPolicyInfo Wajib Kolom authzPolicyInfo menyimpan informasi tentang hasil Kebijakan Otorisasi. Informasi ini hanya tersedia untuk Load Balancer Aplikasi eksternal global yang mengaktifkan Kebijakan Otorisasi. Untuk informasi selengkapnya, lihat yang dicatat ke dalam log untuk kebijakan otorisasi.
string Opsional Kolom loadBalancingScheme hanya diisi untuk pelanggan yang menggunakan fitur migrasi Load Balancer Aplikasi klasik. Kolom ini menyimpan string yang menjelaskan skema load balancing yang digunakan untuk merutekan permintaan. Kemungkinan nilainya adalah EXTERNAL atau EXTERNAL_MANAGED.

Label resource

Tabel berikut mencantumkan label resource untuk resource.type="http_load_balancer".

Kolom Jenis Deskripsi
backend_service_name string Nama layanan backend.
forwarding_rule_name string Nama objek aturan penerusan.
project_id string ID project Google Cloud yang terkait dengan resource ini.
target_proxy_name string Nama objek proxy target yang dirujuk oleh aturan penerusan.
url_map_name string Nama objek peta URL yang dikonfigurasi untuk memilih layanan backend.
zone string Zona tempat load balancer berjalan. Zonanya adalah global.

Pesan berhasil HTTP statusDetails

statusDetails (berhasil) Arti Kode respons yang menyertainya
byte_range_caching Permintaan HTTP ditayangkan menggunakan caching rentang byte Cloud CDN. Semua kode respons yang dapat di-cache dapat digunakan.
response_from_cache Permintaan HTTP ditayangkan dari cache Cloud CDN. Semua kode respons yang dapat di-cache dapat digunakan.
response_from_cache_validated Kode yang ditampilkan ditetapkan dari entri cache Cloud CDN yang divalidasi oleh backend. Semua kode respons yang dapat di-cache dapat digunakan.
response_sent_by_backend Permintaan HTTP berhasil di-proxy ke backend, dan respons ditampilkan oleh backend. Kode respons HTTP ditetapkan oleh software yang berjalan di backend.

Pesan kegagalan HTTP statusDetails

statusDetails (kegagalan) Arti Kode respons yang menyertainya
aborted_request_due_to_backend_early_response Permintaan dengan isi dibatalkan karena backend mengirim respons awal dengan kode error. Respons diteruskan ke klien. Permintaan dihentikan. 4XX atau 5XX
backend_connection_closed_after_partial_response_sent Koneksi backend ditutup secara tidak terduga setelah respons sebagian dikirim ke klien.

Kode respons HTTP ditetapkan oleh software yang berjalan di backend. Kode respons HTTP 0 (nol) berarti backend mengirim header HTTP yang tidak lengkap.

Kode respons HTTP adalah 101 jika koneksi HTTP(S) diupgrade ke koneksi websocket.

backend_connection_closed_before_data_sent_to_client Backend tiba-tiba menutup koneksinya ke load balancer sebelum respons di-proxy ke klien.

502, 503

Kode respons HTTP adalah 101 jika koneksi HTTP(S) diupgrade ke koneksi websocket.

backend_early_response_with_non_error_status Backend mengirim respons non-error (1XX atau 2XX) ke permintaan sebelum menerima seluruh isi permintaan. 502, 503
backend_interim_response_not_supported Backend mengirim respons 1XX sementara ke permintaan dalam konteks tempat respons sementara tidak didukung.

502, 503

backend_response_corrupted Isi respons HTTP yang dikirim oleh backend memiliki encoding transfer chunked yang tidak valid atau rusak. Setiap kode respons mungkin bergantung pada sifat kerusakan. Sering kali 502, 503.
backend_response_headers_too_long Header respons HTTP yang dikirim oleh backend melebihi batas yang diizinkan. Lihat bagian Ukuran header untuk Load Balancer Aplikasi eksternal untuk mengetahui informasi selengkapnya. 502, 503
backend_timeout

Waktu tunggu backend habis saat membuat respons.

Untuk koneksi websocket:

  • Untuk Load Balancer Aplikasi eksternal global, error akan muncul saat GFE menutup koneksi websocket dalam status tidak ada aktivitas setelah waktu tunggu layanan backend berakhir.
  • Untuk Application Load Balancer klasik, error akan dihasilkan saat GFE menutup koneksi websocket dalam status tidak ada aktivitas atau aktif, setelah waktu tunggu layanan backend berakhir.

502, 503

Kode respons HTTP adalah 101 jika koneksi HTTP(S) diupgrade ke koneksi websocket.

banned_by_security_policy Permintaan tersebut dilarang oleh aturan larangan berbasis kapasitas Google Cloud Armor. 429
body_not_allowed Klien mengirim permintaan HTTP dengan isi, tetapi metode HTTP yang digunakan tidak mengizinkan isi. 400
byte_range_caching_aborted Load balancer sebelumnya menerima respons yang menunjukkan bahwa resource dapat di-cache dan mendukung rentang byte. Cloud CDN menerima respons yang tidak konsisten (misalnya, respons dengan kode respons selain 206 Partial Content yang diharapkan). Hal ini terjadi saat mencoba melakukan pengisian cache menggunakan permintaan rentang byte. Akibatnya, load balancer membatalkan respons ke klien. 2XX
byte_range_caching_forwarded_backend_response Load balancer sebelumnya menerima respons yang menunjukkan bahwa resource dapat di-cache dan mendukung rentang byte. Cloud CDN menerima respons yang tidak konsisten (misalnya, respons dengan kode respons selain 206 Partial Content yang diharapkan). Hal ini terjadi saat mencoba melakukan pengisian cache menggunakan permintaan rentang byte. Load balancer kemudian meneruskan respons yang tidak konsisten ke klien.

Ditampilkan dari backend—kode respons apa pun dapat digunakan.

byte_range_caching_retrieval_abandoned Klien membatalkan permintaan rentang byte atau permintaan validasi yang dimulai oleh Cloud CDN.

Ditampilkan dari backend—kode respons apa pun dapat digunakan.

byte_range_caching_retrieval_from_backend_failed_after_partial_response Permintaan rentang byte atau permintaan validasi yang dimulai oleh Cloud CDN mengalami error. Lihat entri log Cloud Logging yang sesuai untuk permintaan yang dimulai oleh Cloud CDN untuk mengetahui status backend yang mendetail. 2XX
cache_lookup_failed_after_partial_response Load balancer gagal menayangkan respons lengkap dari cache Cloud CDN karena error internal. 2XX
cache_lookup_timeout_after_partial_response Streaming pencarian cache Cloud CDN habis waktu tunggunya karena klien tidak mengambil konten secara tepat waktu. 2XX
client_disconnected_after_partial_response Koneksi ke klien terputus setelah load balancer mengirim respons sebagian.

Ditampilkan dari backend—kode respons apa pun dapat digunakan.

Kode respons HTTP adalah 101 jika koneksi HTTP(S) diupgrade ke koneksi websocket.

client_disconnected_before_any_response Koneksi ke klien terputus sebelum load balancer mengirim respons apa pun.

0

Kode respons HTTP adalah 101 jika koneksi HTTP(S) diupgrade ke koneksi websocket.

client_timed_out Google Front End (GFE) membuat koneksi klien tidak ada aktivitas karena tidak ada progres saat melakukan proxy permintaan atau respons. 0 atau 408
client_cert_invalid_rsa_key_size Sertifikat klien atau sertifikat perantara memiliki ukuran kunci RSA yang tidak valid. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
client_cert_unsupported_elliptic_curve_key Sertifikat klien atau perantara menggunakan kurva ekliptik yang tidak didukung. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
client_cert_unsupported_key_algorithm Sertifikat klien atau perantara menggunakan algoritma non-RSA atau non-ECDSA. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
client_cert_pki_too_large PKI yang akan digunakan untuk validasi memiliki lebih dari tiga sertifikat perantara yang memiliki Info Kunci Publik dan Subjek yang sama. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi tertutup. 0
client_cert_chain_max_name_constraints_exceeded Sertifikat intermediate yang diberikan untuk validasi memiliki lebih dari sepuluh batasan nama. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
client_cert_chain_invalid_eku Sertifikat klien atau penerbitnya tidak memiliki Extended Key Usage (EKU) yang menyertakan clientAuth. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
client_cert_validation_timed_out Batas waktu terlampaui saat memvalidasi rantai sertifikat. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
client_cert_validation_search_limit_exceeded Batas kedalaman atau iterasi tercapai saat mencoba memvalidasi rantai sertifikat. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
client_cert_validation_not_performed Anda telah mengonfigurasi mTLS tanpa menyiapkan TrustConfig. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
client_cert_not_provided Klien tidak memberikan sertifikat yang diminta selama handshake. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
client_cert_validation_failed Sertifikat klien gagal dalam validasi dengan TrustConfig saat algoritma hashing seperti MD4, MD5, dan SHA-1 digunakan. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
config_not_found

Load balancer tidak memiliki konfigurasi project. Hal ini mungkin terjadi secara berkala, terutama setelah Anda melakukan perubahan konfigurasi yang menambahkan resource baru.

Karena ada dua lapisan proxy, terkadang GFE lapisan pertama mungkin gagal menjangkau GFE lapisan kedua. Hal ini dapat disebabkan oleh error internal, seperti peluncuran yang sedang berlangsung, kelebihan beban load balancer, atau masalah konfigurasi yang terputus-putus.

404, 502, 503
direct_response Load balancer mengganti permintaan ini dan menampilkan respons tetap. Anda mungkin melihat kode respons HTTP apa pun, bergantung pada sifat masalahnya. Misalnya, kode respons HTTP 410 berarti backend tidak tersedia karena keterlambatan pembayaran.
denied_by_security_policy Load balancer menolak permintaan ini karena adanya kebijakan keamanan Google Cloud Armor. Dikonfigurasi dalam kebijakan keamanan.
error_uncompressing_gzipped_body Terjadi error saat mengekstrak respons HTTP yang di-gzip. 502, 503
failed_to_connect_to_backend Load balancer gagal terhubung ke backend. Hal ini mencakup waktu tunggu selama fase koneksi. 502, 503
failed_to_pick_backend Load balancer gagal memilih backend yang sehat untuk menangani permintaan. 502, 503
failed_to_negotiate_alpn Load balancer dan backend gagal menegosiasikan protokol lapisan aplikasi (seperti HTTP/2) yang akan digunakan untuk berkomunikasi satu sama lain melalui TLS. 502, 503
headers_too_long Header permintaan lebih besar dari batas maksimum yang diizinkan. 413
http_version_not_supported Versi HTTP tidak didukung. Saat ini, hanya HTTP 0.9, 1.0, 1.1, dan 2.0 yang didukung. 400
internal_error Terjadi error internal di load balancer. Biasanya mewakili error sementara di infrastruktur load balancer. Coba lagi kueri Anda. 4XX
invalid_external_origin_endpoint Konfigurasi untuk backend eksternal tidak valid. Tinjau konfigurasi NEG internet dan pastikan konfigurasi tersebut menentukan port dan alamat FQDN/IP yang valid. 4XX
invalid_request_headers

Header permintaan HTTP yang diterima dari klien berisi minimal satu karakter yang tidak diizinkan berdasarkan spesifikasi HTTP yang berlaku.

Misalnya, nama kolom header yang menyertakan tanda kutip ganda (") atau karakter apa pun di luar rentang ASCII standar (yaitu, byte apa pun >= 0x80) tidak valid.

Untuk informasi selengkapnya, lihat:

400
invalid_http2_client_header_format Header HTTP/2 dari klien tidak valid. Untuk informasi selengkapnya, lihat invalid_request_headers. 400
invalid_http2_client_request_path

Jalur permintaan HTTP/2 dari klien berisi setidaknya satu karakter yang tidak diizinkan berdasarkan spesifikasi URI.

Untuk mengetahui informasi selengkapnya, lihat bagian "3.3. Path" di RFC 3986.

400
multiple_iap_policies Beberapa kebijakan Identity-Aware Proxy (IAP) tidak dapat digabungkan. Jika Anda memiliki kebijakan IAP yang dilampirkan ke layanan backend dan kebijakan lain yang dilampirkan ke objek serverless, hapus salah satu kebijakan dan coba lagi. Objek serverless mencakup App Engine, Cloud Run, dan fungsi Cloud Run. 500
malformed_chunked_body Isi permintaan tidak dienkode dengan benar. 411
request_loop_detected Load balancer mendeteksi loop permintaan. Loop ini mungkin disebabkan oleh kesalahan konfigurasi saat backend meneruskan permintaan kembali ke load balancer. 502, 503
required_body_but_no_content_length Permintaan HTTP memerlukan isi, tetapi header permintaan tidak menyertakan panjang konten atau header chunked encoding transfer. 400 atau 403
secure_url_rejected Permintaan dengan URL https:// diterima melalui koneksi HTTP/1.1 teks biasa. 400
ssl_certificate_san_verification_failed Load balancer tidak dapat menemukan SAN (Nama Alternatif Subjek) dalam sertifikat SSL yang ditampilkan oleh backend yang cocok dengan nama host yang dikonfigurasi. 502, 503
ssl_certificate_chain_verification_failed Sertifikat SSL yang ditampilkan oleh backend gagal dalam memverifikasi sertifikat SSL. 502, 503
throttled_by_security_policy Permintaan diblokir oleh aturan throttle Google Cloud Armor. 429
unsupported_method Klien memberikan metode permintaan HTTP yang tidak didukung. 400
unsupported_100_continue Permintaan klien menyertakan header 'Expect: 100-continue' pada protokol yang tidak mendukungnya. 400
upgrade_header_rejected Permintaan HTTP klien berisi header Upgrade dan ditolak. 400
websocket_closed Koneksi websocket ditutup. 101
websocket_handshake_failed Handshake websocket gagal. Setiap kode respons yang mungkin bergantung pada sifat kegagalan handshake.
request_body_too_large Isi permintaan HTTP melebihi batas maksimum yang didukung oleh backend. Tidak berlaku untuk backend VM. 413
handled_by_identity_aware_proxy Respons ini dibuat oleh Identity-Aware Proxy selama verifikasi identitas klien sebelum mengizinkan akses.

200, 302, 400, 401, 403, 500, 502, 503

429 (dibatasi oleh IAP)

serverless_neg_routing_failed Permintaan NEG serverless tidak dapat dikirim. Error ini dapat terjadi saat region yang ditentukan dalam NEG tidak dapat dijangkau, atau saat nama resource (misalnya, nama fungsi Cloud Run) tidak dapat ditemukan. 404, 502, 503
fault_filter_abort Error ini dapat terjadi jika pelanggan telah mengonfigurasi filter error dan filter error dipicu untuk permintaan tertentu. Nilai harus dari 200 hingga 599.

Melihat log untuk validasi sertifikat klien mTLS

Untuk melihat error yang dicatat ke dalam log untuk koneksi tertutup selama validasi sertifikat klien TLS timbal balik, selesaikan langkah-langkah berikut.

Kueri konsol

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

    Buka Logs Explorer

  2. Klik tombol Show query.

  3. Tempel perintah berikut ke dalam kolom kueri. Ganti FORWARDING_RULE_NAME dengan nama aturan penerusan Anda.

    jsonPayload.statusDetails=~"client_cert"
    jsonPayload.@type="type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
    resource.labels.forwarding_rule_name=FORWARDING_RULE_NAME
    
  4. Klik Run query.

Log permintaan kebijakan otorisasi

Objek authz_info dalam payload JSON Entri Log Load Balancer berisi informasi tentang kebijakan otorisasi. Anda dapat mengonfigurasi metrik berbasis log untuk traffic yang diizinkan atau ditolak oleh kebijakan ini. Periksa detail log kebijakan otorisasi lainnya.

Kolom Jenis Deskripsi
authz_info.policies[] objek Daftar kebijakan yang cocok dengan permintaan.
authz_info.policies[].name string Nama kebijakan otorisasi yang cocok dengan permintaan.
Nama kosong karena alasan berikut:
  • Tidak ada kebijakan ALLOW yang cocok dengan permintaan dan permintaan ditolak.
  • Tidak ada kebijakan DENY yang cocok dengan permintaan dan permintaan diizinkan.
authz_info.policies[].result enum Hasilnya dapat berupa ALLOWED atau DENIED.
authz_info.policies[].details string Detailnya mencakup hal berikut:
  • allowed_as_no_deny_policies_matched_request
  • denied_as_no_allow_policies_matched_request
  • denied_by_authz_extension
  • denied_by_cloud_iap
authz_info.overall_result enum Hasilnya dapat berupa ALLOWED atau DENIED.

Logging untuk Google Cloud Armor

Tabel untuk pesan kegagalan HTTP statusDetail berisi beberapa pesan yang berlaku untuk Google Cloud Armor. Untuk mengetahui informasi selengkapnya tentang log yang disimpan Google Cloud Armor, lihat Menggunakan logging permintaan.

Logging untuk deployment VPC Bersama

Log dan metrik Load Balancer Aplikasi biasanya diekspor ke project yang memiliki aturan penerusan. Oleh karena itu, admin layanan—pemilik atau pengguna project tempat layanan backend dibuat—tidak akan memiliki akses ke log dan metrik load balancer secara default. Anda dapat menggunakan peran IAM untuk memberikan izin ini kepada admin layanan. Untuk mempelajari lebih lanjut peran IAM yang tersedia, dan langkah-langkah untuk memberikan akses, lihat Memberikan akses ke Monitoring.

Berinteraksi dengan log

Anda dapat berinteraksi dengan log Load Balancer Aplikasi eksternal menggunakan Cloud Logging API. Logging API menyediakan cara untuk memfilter log secara interaktif yang memiliki kolom tertentu yang ditetapkan. Alat ini mengekspor log yang cocok ke Cloud Logging, Cloud Storage, BigQuery, atau Pub/Sub. Untuk mengetahui informasi selengkapnya tentang Logging API, lihat Ringkasan Cloud Logging API.

Pemantauan

Load balancer mengekspor data pemantauan ke Cloud Monitoring.

Anda dapat menggunakan metrik pemantauan untuk melakukan hal berikut:

  • Mengevaluasi konfigurasi, penggunaan, dan performa load balancer
  • Memecahkan masalah
  • Meningkatkan pemanfaatan resource dan pengalaman pengguna

Frekuensi dan retensi pelaporan metrik

Metrik untuk Load Balancer Aplikasi eksternal diekspor ke Cloud Monitoring dalam batch perincian 1 menit. Data Monitoring disimpan selama enam (6) minggu.

Dasbor ini menyediakan analisis data dalam interval default 1H (satu jam), 6H (enam jam), 1D (satu hari), 1W (satu minggu), dan 6W (enam minggu). Anda dapat meminta analisis secara manual dalam interval berapa pun dari 6W hingga 1 menit.

Metrik pemantauan

Anda dapat memantau metrik berikut untuk Load Balancer Aplikasi eksternal.

Metrik berikut untuk Load Balancer Aplikasi eksternal global dilaporkan ke Cloud Monitoring. Metrik ini diawali dengan loadbalancing.googleapis.com/.

Metrik Nama Deskripsi
Jumlah permintaan https/request_count Jumlah permintaan yang ditayangkan oleh Load Balancer Aplikasi eksternal
Meminta jumlah byte https/request_bytes_count Jumlah byte yang dikirim sebagai permintaan dari klien ke Load Balancer Aplikasi eksternal
Jumlah byte respons https/response_bytes_count Jumlah byte yang dikirim sebagai respons dari Load Balancer Aplikasi eksternal ke klien
Total latensi https/total_latencies

Distribusi latensi. Latensi adalah waktu antara byte pertama permintaan yang diterima hingga byte terakhir respons yang dikirim oleh GFE.

Total latensi diukur berdasarkan permintaan/respons. Jeda di antara permintaan pada koneksi yang sama yang menggunakan Connection: keep-alive tidak memengaruhi pengukuran. Pengukuran ini biasanya dikurangi menjadi persentil ke-95 di tampilan Cloud Monitoring.

Untuk koneksi websocket, kolom ini merujuk pada seluruh durasi waktu koneksi.

Contoh: Load balancer memiliki 1 permintaan per detik dari Inggris Raya, semuanya dengan latensi 100 md, dan 9 permintaan per detik dari Amerika Serikat, semuanya dengan latensi 50 md. Selama menit tertentu, ada 60 permintaan dari Inggris Raya dan 540 permintaan dari Amerika Serikat. Metrik pemantauan mempertahankan distribusi di semua dimensi. Anda dapat meminta informasi seperti berikut:

  • latensi keseluruhan median (300/600) - 50 md
  • latensi median Inggris Raya (30/60) - 100 md
  • Latensi keseluruhan persentil ke-95 (570/600) - 100 md
RTT Frontend* https/frontend_tcp_rtt Distribusi waktu round trip (RTT) yang dihaluskan yang diukur untuk setiap koneksi antara klien dan GFE (diukur oleh stack TCP GFE). RTT yang dihaluskan adalah algoritma yang menangani variasi dan anomali yang dapat terjadi dalam pengukuran RTT.
Latensi backend* https/backend_latencies

Distribusi latensi yang diukur sejak byte permintaan pertama dikirim oleh GFE ke backend, hingga GFE menerima dari backend byte terakhir respons.

Untuk koneksi websocket, latensi backend berlaku untuk seluruh durasi sesi websocket.

Fraksi class kode respons Fraksi dari total respons Load Balancer Aplikasi eksternal yang ada di setiap class kode respons (2XX, 4XX, ...). Di Cloud Monitoring, nilai ini hanya tersedia di dasbor default. Fitur ini tidak tersedia untuk dasbor kustom. Anda dapat menggunakan API untuk menetapkan pemberitahuan.
Jumlah permintaan backend https/backend_request_count Jumlah permintaan yang dikirim dari Load Balancer Aplikasi eksternal ke backend.
Jumlah byte permintaan backend https/backend_request_bytes_count Jumlah byte yang dikirim sebagai permintaan dari Load Balancer Aplikasi eksternal ke backend.
Jumlah byte respons backend https/backend_response_bytes_count Jumlah byte yang dikirim sebagai respons dari backend (termasuk cache) ke Load Balancer Aplikasi eksternal.

* Jumlah RTT Frontend dan latensi Backend tidak dijamin kurang dari atau sama dengan Total latensi. Hal ini karena meskipun kami melakukan polling RTT melalui socket dari GFE ke klien pada saat respons HTTP di-ACK, kami mengandalkan pelaporan kernel untuk beberapa pengukuran ini, dan kami tidak dapat menjamin bahwa kernel akan memiliki pengukuran RTT untuk respons HTTP tertentu. Hasil akhir adalah nilai RTT yang dihaluskan yang juga dipengaruhi oleh respons HTTP sebelumnya, SYN/ACK, dan handshake SSL yang tidak memengaruhi waktu sebenarnya permintaan HTTP saat ini.

Untuk memantau koneksi websocket, buat layanan backend khusus untuk websocket.

Memfilter dimensi untuk metrik

Anda dapat menerapkan filter untuk metrik untuk Load Balancer Aplikasi eksternal.

Metrik digabungkan untuk setiap Load Balancer Aplikasi klasik dan Load Balancer Aplikasi eksternal global. Anda dapat memfilter metrik gabungan menurut dimensi berikut untuk resource.type="http_load_balancer" atau resource.type="https_lb_rule". Perhatikan bahwa tidak semua dimensi tersedia di semua metrik.

Properti Deskripsi
backend_scope Cakupan Google Cloud (region atau zona) dari grup instance layanan backend yang menyalurkan koneksi.

Jika tidak ada grup instance yang tersedia atau jika permintaan ditayangkan oleh entity lain, Anda akan melihat salah satu nilai berikut, bukan region atau zona grup instance layanan backend.

  • FRONTEND_5XX - Terjadi error internal sebelum GFE dapat memilih backend. GFE menampilkan `5XX` ke klien.
  • INVALID_BACKEND - GFE tidak dapat menemukan backend yang berfungsi untuk menetapkan permintaan, sehingga menampilkan respons `5XX` kepada pemohon.
  • NO_BACKEND_SELECTED - Error atau gangguan lainnya terjadi sebelum backend dapat dipilih atau pengalihan URL terjadi.
  • MULTIPLE_BACKENDS - Permintaan ditayangkan oleh beberapa backend. Hal ini dapat terjadi jika Cloud CDN telah menayangkan permintaan sebagian dari cache-nya dan juga telah mengirim satu atau beberapa permintaan rentang byte ke backend. Gunakan pengelompokan backend_scope untuk memvisualisasikan setiap permintaan load balancer ke backend.

Jika perincian ini dipilih, diagram akan menampilkan metrik backend (load balancer-to-backend), bukan metrik frontend (client-to-load balancer).
backend_type

Nama grup backend yang melayani permintaan klien. Dapat berupa INSTANCE GROUP, NETWORK_ENDPOINT_GROUP, atau UNKNOWN yang ditampilkan jika backend tidak ditetapkan. Jika tidak ada grup backend yang tersedia atau jika permintaan ditayangkan oleh entity lain, salah satu nilai berikut akan ditampilkan, bukan grup backend.

  • FRONTEND_5XX - Terjadi error internal sebelum GFE dapat memilih backend. GFE menampilkan `5XX` ke klien.
  • INVALID_BACKEND - GFE tidak dapat menemukan backend yang berfungsi untuk menetapkan permintaan, sehingga menampilkan respons `5XX` kepada pemohon.
  • NO_BACKEND_SELECTED - Error atau gangguan lainnya terjadi sebelum backend dapat dipilih atau pengalihan URL terjadi.
  • MULTIPLE_BACKENDS - Permintaan ditayangkan oleh beberapa backend. Hal ini dapat terjadi jika Cloud CDN telah menayangkan permintaan sebagian dari cache-nya dan juga telah mengirim satu atau beberapa permintaan rentang byte ke backend. Gunakan pengelompokan backend_scope untuk memvisualisasikan setiap permintaan load balancer ke backend.
backend_target_type Nama layanan backend yang melayani permintaan tersebut. Dapat berupa BACKEND_SERVICE, BACKEND_BUCKET, UNKNOWN jika backend tidak ditetapkan, atau NO_BACKEND_SELECTED jika error atau gangguan lainnya terjadi sebelum backend dapat dipilih atau terjadi pengalihan URL.
matched_url_path_rule Aturan jalur peta URL yang cocok dengan awalan permintaan HTTP(S) (maksimal 50 karakter).
forwarding_rule_name Nama aturan penerusan yang digunakan oleh klien untuk mengirim permintaan.
url_map_name

Aturan jalur peta URL atau aturan rute yang dikonfigurasi sebagai bagian dari kunci peta URL. Dapat berupa UNMATCHED atau UNKNOWN sebagai penggantian.

  • UNMATCHED mengacu pada permintaan yang tidak cocok dengan aturan jalur URL apa pun, sehingga url_map_name menggunakan aturan jalur default.
  • UNKNOWN menunjukkan error internal.
target_proxy_name Nama objek proxy HTTP(S) target yang dirujuk oleh aturan penerusan.
backend_target_name Nama target backend. Target dapat berupa layanan backend atau bucket backend. UNKNOWN ditampilkan jika backend tidak ditetapkan.
backend_name Nama grup instance, bucket, atau NEG backend. UNKNOWN ditampilkan jika backend tidak ditetapkan, atau NO_BACKEND_SELECTED jika terjadi error atau gangguan lainnya sebelum backend dapat dipilih atau pengalihan URL terjadi.
backend_scope_type

Jenis cakupan grup backend. Dapat berupa GLOBAL, REGION, ZONE, MULTIPLE_BACKENDS, atau NO_BACKEND_SELECTED jika error atau gangguan lainnya terjadi sebelum backend dapat dipilih atau pengalihan URL terjadi, atau kemungkinan output backend_type lainnya.

MULTIPLE_BACKENDS digunakan saat caching potongan digunakan. Beberapa kueri dikirim ke backend yang sama untuk berbagai bagian data guna mendukung satu permintaan klien.

proxy_continent Benua GFE HTTP(S) yang menghentikan koneksi HTTP(S). (Contoh: America, Europe, Asia)
protocol Protokol yang digunakan oleh klien, salah satu dari HTTP/1.0, HTTP/1.1, HTTP/2.0, QUIC/HTTP/2.0, UNKNOWN.
response_code Kode respons HTTP permintaan.
response_code_class Class kode respons HTTP permintaan: 200, 300, 400, 500, atau 0 untuk tidak ada.
cache_result Hasil cache untuk menayangkan permintaan HTTP melalui proxy: HIT, MISS, DISABLED, PARTIAL_HIT (untuk permintaan yang ditayangkan sebagian dari cache dan sebagian dari backend) atau UNKNOWN.
client_country Negara klien yang mengeluarkan permintaan HTTP (misalnya, United States atau Germany)
load_balancing_scheme Skema load balancing yang digunakan. Jika Load Balancer Aplikasi klasik digunakan, nilainya adalah EXTERNAL. Jika Load Balancer Aplikasi eksternal global digunakan, nilainya adalah EXTERNAL_MANAGED.

Langkah selanjutnya