Logging dan pemantauan Load Balancer Aplikasi eksternal regional

Dokumen ini menunjukkan cara mengonfigurasi dan menggunakan Cloud Logging dan Cloud Monitoring dengan Load Balancer Aplikasi eksternal regional.

Logging

Anda dapat mengaktifkan, menonaktifkan, dan melihat log untuk layanan backend Load Balancer Aplikasi eksternal.

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.

Kolom opsional

Data log berisi kolom wajib diisi dan kolom opsional. Bagian Yang dicatat ke dalam log mencantumkan kolom yang bersifat opsional dan wajib diisi. Semua kolom wajib diisi selalu disertakan. Anda dapat menyesuaikan kolom opsional yang ingin disimpan.

  • Jika Anda memilih sertakan semua opsional, semua kolom opsional dalam format data log akan disertakan dalam log. Saat kolom opsional baru ditambahkan ke format data, log akan otomatis menyertakan kolom baru.

  • Jika Anda memilih kecualikan semua kolom opsional, semua kolom opsional akan dihapus.

  • Jika memilih kustom, Anda dapat menentukan kolom opsional yang ingin disertakan, seperti tls.protocol,tls.cipher.

Untuk mengetahui petunjuk tentang cara menyesuaikan kolom opsional, lihat Mengaktifkan logging di layanan backend baru.

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. Opsional: Untuk menyertakan semua kolom opsional dalam log, di bagian Optional fields, klik Include all optional fields.

  10. Untuk menyelesaikan pengeditan layanan backend, klik Update.

  11. Untuk menyelesaikan pengeditan load balancer, klik Update.

gcloud: Mode regional

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

gcloud compute backend-services create BACKEND_SERVICE \
    --region=REGION \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

di mana

  • --region menunjukkan bahwa layanan backend bersifat regional. Gunakan kolom ini untuk layanan backend yang digunakan dengan Load Balancer Aplikasi eksternal regional.
  • --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.
  • --logging-optional memungkinkan Anda menentukan kolom opsional yang ingin disertakan dalam log:

    • INCLUDE_ALL_OPTIONAL untuk menyertakan semua kolom opsional.

    • EXCLUDE_ALL_OPTIONAL (default) untuk mengecualikan semua kolom opsional.

    • CUSTOM untuk menyertakan daftar kustom kolom opsional yang Anda tentukan di OPTIONAL_FIELDS.

  • --logging-optional-fields memungkinkan Anda menentukan daftar kolom opsional yang dipisahkan koma yang ingin disertakan dalam log.

    Misalnya, tls.protocol,tls.cipher hanya dapat ditetapkan jika LOGGING_OPTIONAL_MODE ditetapkan ke CUSTOM.

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. Opsional: Untuk menyertakan semua kolom opsional dalam log, di bagian Optional fields, klik Include all optional fields.

  9. Untuk menyelesaikan pengeditan layanan backend, klik Update.

  10. Untuk menyelesaikan pengeditan load balancer, klik Update.

gcloud: Mode regional

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

gcloud compute backend-services update BACKEND_SERVICE \
    --region=REGION \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

di mana

  • --region menunjukkan bahwa layanan backend bersifat regional. Gunakan kolom ini untuk layanan backend yang digunakan dengan Load Balancer Aplikasi eksternal regional.
  • --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.
  • --logging-optional memungkinkan Anda menentukan kolom opsional yang ingin Anda sertakan dalam log.

    • INCLUDE_ALL_OPTIONAL untuk menyertakan semua kolom opsional.

    • EXCLUDE_ALL_OPTIONAL (default) untuk mengecualikan semua kolom opsional.

    • CUSTOM untuk menyertakan daftar kustom kolom opsional yang Anda tentukan di OPTIONAL_FIELDS.

  • --logging-optional-fields memungkinkan Anda menentukan daftar kolom opsional yang dipisahkan koma yang ingin Anda sertakan dalam log.

    Misalnya, tls.protocol,tls.cipher. Hanya dapat disetel jika LOGGING_OPTIONAL_MODE ditetapkan ke CUSTOM.

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 regional

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

Menonaktifkan logging sepenuhnya

gcloud compute backend-services update BACKEND_SERVICE \
    --region=REGION \
    --no-enable-logging

di mana

  • --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 | --region=REGION \
 --logging-sample-rate=VALUE

Lihat log

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 eksternal regional, Anda dapat mengekspor metrik berbasis log menggunakan log resource (resource.type="http_external_regional_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. Data log berisi kolom opsional yang menambahkan informasi tambahan tentang traffic HTTP(S) Anda. Kolom opsional dapat dihilangkan untuk menghemat biaya penyimpanan.

Beberapa kolom log menggunakan format multi-kolom, dengan lebih dari satu bagian data dalam kolom tertentu. Misalnya, kolom tls memiliki format TlsDetails, yang berisi protokol TLS dan cipher TLS dalam satu kolom. Kolom multi-kolom ini dijelaskan dalam tabel format data berikut.

Kolom Format kolom Jenis kolom: Wajib Diisi atau Opsional Deskripsi
severity
insertID
timestamp
logName
LogEntry Wajib Kolom umum seperti yang dijelaskan dalam entri log.
httpRequest HttpRequest Wajib Protokol umum untuk mencatat permintaan HTTP.
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:
  • proxyStatus
  • tls
  • backendTargetProjectNumber
  • mtls
  • authzPolicyInfo
string Wajib

Kolom proxyStatus menyimpan string yang menentukan alasan Load Balancer Aplikasi eksternal regional menampilkan HttpRequest.status.

Kolom tidak dicatat ke dalam log jika nilainya berupa string kosong. Hal ini dapat terjadi jika proxy atau backend tidak menampilkan error atau kode error yang bukan 0, 4XX, atau 5XX.

Kolom proxyStatus memiliki dua bagian:

AuthzPolicyInfo Wajib Kolom authzPolicyInfo menyimpan informasi tentang hasil Kebijakan Otorisasi. Informasi ini hanya tersedia untuk Load Balancer Aplikasi eksternal regional yang mengaktifkan Kebijakan Otorisasi. Untuk informasi selengkapnya, lihat yang dicatat ke dalam log untuk kebijakan otorisasi.
TlsDetails Opsional Kolom tls menyimpan TlsDetails yang menentukan metadata TLS untuk koneksi antara klien dan Load Balancer Aplikasi eksternal regional. Kolom ini hanya tersedia jika klien menggunakan enkripsi TLS/SSL.
MtlsDetails Opsional Kolom mtls menyimpan nilai MtlsDetails yang menentukan metadata mTLS untuk koneksi antara klien dan Application Load Balancer eksternal regional. Kolom ini hanya tersedia jika load balancer menggunakan TLS bersama (mTLS) frontend.

Format kolom TlsDetails

Kolom Format kolom Jenis kolom: Wajib Diisi atau Opsional Deskripsi
protokol string Opsional Protokol TLS yang digunakan klien untuk membuat koneksi dengan load balancer. Nilai yang mungkin adalah TLS 1.0, 1.1, 1.2, 1.3, atau QUIC. Nilai ini ditetapkan ke NULL jika klien tidak menggunakan enkripsi TLS/SSL.
cipher string Opsional Cipher TLS yang digunakan klien untuk membuat koneksi dengan load balancer. Nilai ini ditetapkan ke NULL jika klien tidak menggunakan HTTP(S) atau klien tidak menggunakan enkripsi TLS/SSL.

Format kolom MtlsDetails

Kolom Format kolom Jenis kolom: Wajib Diisi atau Opsional Deskripsi
clientCertPresent bool Opsional

true jika klien telah memberikan sertifikat selama TLS handshake; jika tidak, false.

clientCertChainVerified bool Opsional

true jika rantai sertifikat klien diverifikasi terhadap TrustStore yang dikonfigurasi; jika tidak, false.

clientCertError string Opsional

String standar yang mewakili kondisi error. Untuk mengetahui informasi selengkapnya tentang string error, lihat mode validasi klien mTLS.

clientCertSha256Fingerprint string Opsional

Sidik jari SHA-256 yang dienkode Base64 dari sertifikat klien.

clientCertSerialNumber string Opsional

Nomor seri sertifikat klien. Jika nomor seri lebih panjang dari 50 byte, string client_cert_serial_number_exceeded_size_limit akan ditambahkan ke client_cert_error, dan nomor seri ditetapkan ke string kosong.

clientCertValidStartTime string Opsional

Stempel waktu (format string tanggal RFC 3339) sebelum sertifikat klien tidak valid. Contoh, 2022-07-01T18:05:09+00:00.

clientCertValidEndTime string Opsional

Stempel waktu (format string tanggal RFC 3339) setelah itu sertifikat klien tidak valid. Contoh, 2022-07-01T18:05:09+00:00.

clientCertSpiffeId string Opsional

ID SPIFFE dari kolom nama alternatif subjek (SAN). Jika nilai tidak valid atau melebihi 2.048 byte, ID SPIFFE akan ditetapkan ke string kosong.

Jika ID SPIFFE lebih panjang dari 2048 byte, string client_cert_spiffe_id_exceeded_size_limit akan ditambahkan ke client_cert_error.

clientCertUriSans string Opsional

Daftar ekstensi SAN berenkode Base64 yang dipisahkan koma dari jenis URI. Ekstensi SAN diekstrak dari sertifikat klien. ID SPIFFE tidak disertakan dalam kolom client_cert_uri_sans.

Jika kolom client_cert_uri_sans lebih panjang dari 512 byte, string client_cert_uri_sans_exceeded_size_limit akan ditambahkan ke client_cert_error, dan daftar yang dipisahkan koma ditetapkan ke string kosong.

clientCertDnsnameSans string Opsional

Daftar yang dipisahkan koma dan dienkode Base64 dari ekstensi SAN jenis DNSName. Ekstensi SAN diekstrak dari sertifikat klien.

Jika kolom client_cert_dnsname_sans lebih panjang dari 512 byte, string client_cert_dnsname_sans_exceeded_size_limit akan ditambahkan ke client_cert_error, dan daftar yang dipisahkan koma akan ditetapkan ke string kosong.

clientCertIssuerDn string Opsional

Kolom Penerbit lengkap yang dienkode base64 dari sertifikat.

Jika kolom client_cert_issuer_dn lebih panjang dari 512 byte, string client_cert_issuer_dn_exceeded_size_limit akan ditambahkan ke client_cert_error, dan client_cert_issuer_dn ditetapkan ke string kosong.

clientCertSubjectDn string Opsional

Kolom Subjek lengkap yang dienkode Base64 dari sertifikat.

Jika kolom client_cert_subject_dn lebih panjang dari 512 byte, string client_cert_subject_dn_exceeded_size_limit akan ditambahkan ke client_cert_error, dan client_cert_subject_dn ditetapkan ke string kosong.

clientCertLeaf string Opsional

Sertifikat leaf klien untuk koneksi mTLS yang dibuat dengan sertifikat yang lulus validasi. Encoding sertifikat mematuhi RFC 9440: sertifikat DER biner dienkode menggunakan Base64 (tanpa jeda baris, spasi, atau karakter lain di luar alfabet Base64) dan dibatasi dengan titik dua di kedua sisi.

Jika client_cert_leaf melebihi 16 KB yang tidak dienkode, string client_cert_validated_leaf_exceeded_size_limit akan ditambahkan ke client_cert_error, dan client_cert_leaf ditetapkan ke string kosong.

clientCertChain string Opsional

Daftar sertifikat yang dipisahkan koma, dalam urutan TLS standar, dari rantai sertifikat klien untuk koneksi mTLS yang dibuat saat sertifikat klien lulus validasi, tidak termasuk sertifikat akhir. Encoding sertifikat mematuhi RFC 9440.

Jika ukuran gabungan client_cert_leaf dan client_cert_chain sebelum encoding Base64 melebihi 16 KB, string client_cert_validated_chain_exceeded_size_limit akan ditambahkan ke client_cert_error, dan client_cert_chain ditetapkan ke string kosong.

Label resource

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

Kolom Jenis Deskripsi
backend_name string Nama grup instance backend atau NEG. Namun, label tersebut kosong untuk koneksi TLS yang gagal.
backend_scope string Cakupan backend (nama zona atau nama wilayah). Mungkin UNKNOWN setiap kali backend_name tidak diketahui.
backend_scope_type string Cakupan backend (REGION/ZONE). Mungkin UNKNOWN setiap kali backend_name tidak diketahui.
backend_target_name string Nama backend yang dipilih untuk menangani permintaan, berdasarkan aturan jalur peta URL atau aturan rute yang cocok dengan permintaan.
backend_target_type string Jenis target backend. Dapat berupa BACKEND_SERVICE, atau UNKNOWN ditampilkan jika backend tidak ditetapkan.
backend_type string Jenis grup backend. Dapat berupa INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP, atau UNKNOWN ditampilkan jika backend tidak ditetapkan.
forwarding_rule_name string Nama objek aturan penerusan.
matched_url_path_rule string 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, sehingga menggunakan aturan jalur default.
  • UNKNOWN menunjukkan error internal atau koneksi TLS yang gagal.
network_name string Nama jaringan VPC load balancer.
project_id string ID project Google Cloud yang terkait dengan resource ini.
region string Region tempat load balancer ditentukan.
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. Kolom ini kosong untuk koneksi TLS yang gagal.

Kolom error proxyStatus

Kolom proxyStatus berisi string yang menentukan alasan load balancer menampilkan error. Ada dua bagian di kolom proxyStatus, yaitu proxyStatus error dan proxyStatus details. Bagian ini menjelaskan string yang didukung di kolom proxyStatus error.

Kolom proxyStatus error berlaku untuk load balancer berikut:

  • Load Balancer Aplikasi eksternal regional
  • Load Balancer Aplikasi internal lintas region
  • Load Balancer Aplikasi internal regional
error proxyStatus Deskripsi Kode respons yang menyertainya
destination_unavailable Load balancer menganggap backend tidak tersedia. Misalnya, upaya terbaru untuk berkomunikasi dengan backend telah gagal, atau health check mungkin telah menyebabkan kegagalan. 500, 503
connection_timeout Waktu tunggu upaya load balancer untuk membuka koneksi ke backend telah habis. 504
connection_terminated

Koneksi load balancer ke backend berakhir sebelum respons lengkap diterima.

proxyStatus error ini ditampilkan selama salah satu skenario berikut:

  • Koneksi load balancer ke backend berakhir sebelum respons lengkap diterima.
  • Koneksi TLS gagal pada handshake SSL, dan klien tidak membuat koneksi dengan load balancer.

0, 502, 503
connection_refused Koneksi load balancer ke backend ditolak. 502, 503
connection_limit_reached

Load balancer dikonfigurasi untuk membatasi jumlah koneksi yang dimilikinya ke backend, dan batas tersebut telah terlampaui.

proxyStatus error ini ditampilkan selama salah satu skenario berikut:

  • Jika backend berada dalam mode pemeliharaan, traffic tidak dapat dirutekan ke backend.
  • Jika permintaan dibatasi kapasitasnya secara lokal.
  • Envoy menangani kondisi error seperti kehabisan memori.
502, 503
destination_not_found Load balancer tidak dapat menentukan backend yang sesuai untuk digunakan untuk permintaan ini. Misalnya, backend mungkin tidak dikonfigurasi. 500, 404
dns_error Load balancer mengalami error DNS saat mencoba menemukan alamat IP untuk nama host backend. 502, 503
proxy_configuration_error Load balancer mengalami error konfigurasi internal. 500
proxy_internal_error Load balancer mengalami error internal. 0, 500, 502
proxy_internal_response Load balancer menghasilkan respons tanpa mencoba terhubung ke backend. Kode respons apa pun bergantung pada jenis masalah. Misalnya, kode respons 410 berarti backend tidak tersedia karena tunggakan pembayaran.
http_response_timeout Load balancer mencapai batas waktu tunggu layanan backend yang dikonfigurasi saat menunggu respons lengkap dari backend. 504.408
http_request_error Load balancer mengalami error HTTP 4xx, yang menunjukkan masalah pada permintaan klien. 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417, atau 429
http_protocol_error Load balancer mengalami error protokol HTTP saat berkomunikasi dengan backend. 502
tls_protocol_error Load balancer mengalami error TLS selama handshake TLS. 0
tls_certificate_error Load balancer mengalami error pada saat memverifikasi sertifikat yang ditampilkan oleh server atau oleh klien saat mTLS diaktifkan. 0
tls_alert_received Load balancer mengalami pemberitahuan TLS fatal selama TLS handshake. 0

Kolom detail proxyStatus

Kolom proxyStatus berisi string yang menentukan alasan load balancer menampilkan error. Ada dua bagian di kolom proxyStatus, yaitu proxyStatus error dan proxyStatus details. Kolom proxyStatus details bersifat opsional dan hanya ditampilkan jika informasi tambahan tersedia. Bagian ini menjelaskan string yang didukung di kolom proxyStatus details.

Kolom proxyStatus details berlaku untuk load balancer berikut:

  • Load Balancer Aplikasi eksternal regional
  • Load Balancer Aplikasi internal regional
  • Load Balancer Aplikasi internal lintas region
Detail proxyStatus Deskripsi Kode respons yang menyertainya
client_disconnected_before_any_response Koneksi ke klien terputus sebelum load balancer mengirim respons apa pun. 0
backend_connection_closed Backend secara tidak terduga menutup koneksinya ke load balancer. Hal ini dapat terjadi jika load balancer mengirim traffic ke entity lain seperti aplikasi pihak ketiga yang memiliki waktu tunggu TCP yang lebih singkat dari waktu tunggu load balancer selama 10 menit (600 detik). 502
failed_to_connect_to_backend Load balancer gagal terhubung ke backend. Kegagalan ini mencakup waktu tunggu selama fase koneksi. 503
failed_to_pick_backend Load balancer gagal memilih backend yang sehat untuk menangani permintaan. 502
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.
client_timed_out

Koneksi antara load balancer dan klien melebihi waktu tunggu idle.

Untuk informasi selengkapnya tentang Load Balancer Aplikasi eksternal regional, lihat Waktu tunggu keepalive HTTP klien. Untuk mengetahui informasi selengkapnya tentang Load Balancer Aplikasi internal, lihat Waktu tunggu keepalive HTTP klien.
0, 408
backend_timeout

Waktu tunggu backend habis saat membuat respons.

502
http_protocol_error_from_backend_response Respons backend berisi error protokol HTTP. 501, 502
http_protocol_error_from_request Permintaan klien berisi error protokol HTTP. 400, 503
http_version_not_supported Versi protokol HTTP tidak didukung. Hanya HTTP 0.9, 1.0, 1.1, dan 2.0 yang didukung. 400
handled_by_identity_aware_proxy Respons ini dibuat oleh Identity-Aware Proxy (IAP) selama memverifikasi identitas klien sebelum mengizinkan akses. 200, 302, 400, 401, 403, 500, 502
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, 404
ip_detection_failed Alamat IP asli tidak dapat dideteksi. Setiap kode respons mungkin bergantung pada sifat kegagalan. Nilai harus antara 400 hingga 599.
request_body_too_large Isi permintaan HTTP melebihi panjang maksimum yang didukung oleh load balancer. 413, 507
request_header_timeout Waktu tunggu header permintaan habis karena load balancer tidak menerima permintaan lengkap dalam waktu 5 detik. 408.504
denied_by_security_policy Load balancer menolak permintaan ini karena adanya kebijakan keamanan Google Cloud Armor. 403
throttled_by_security_policy Permintaan diblokir oleh aturan throttle Google Cloud Armor. 429
client_cert_chain_invalid_eku Sertifikat klien atau penerbitnya tidak memiliki extended key usage yang menyertakan clientAuth. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
client_cert_chain_max_name_constraints_exceeded Sertifikat intermediate yang diberikan untuk validasi memiliki lebih dari 10 batasan nama. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
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_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_pki_too_large PKI yang akan digunakan untuk validasi memiliki lebih dari tiga sertifikat perantara yang memiliki Subject dan Subject Public Key Info yang sama. 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_validation_failed Sertifikat klien gagal validasi dengan TrustConfig. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
client_cert_validation_not_performed Anda telah mengonfigurasi TLS bersama tanpa menyiapkan TrustConfig. 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_timed_out Batas waktu terlampaui (200 md) saat memvalidasi rantai sertifikat. Untuk informasi selengkapnya, lihat Error yang dicatat ke dalam log untuk koneksi yang ditutup. 0
tls_version_not_supported Versi protokol TLS dikenali, tetapi tidak didukung. Error ini menyebabkan koneksi TLS ditutup. 0
unknown_psk_identity Server mengirimkan error ini saat pembuatan kunci PSK diperlukan, tetapi klien tidak memberikan identitas PSK yang dapat diterima. Error ini menyebabkan koneksi TLS ditutup. 0
no_application_protocol Dikirim oleh server saat ekstensi "application_layer_protocol_negotiation" klien hanya mengiklankan protokol yang tidak didukung server. Lihat Ekstensi negosiasi protokol lapisan aplikasi TLS. Error ini menyebabkan koneksi TLS ditutup. 0
no_certificate Tidak ada sertifikat yang ditemukan. Error ini menyebabkan koneksi TLS ditutup. 0
bad_certificate Sertifikat tidak valid, atau berisi tanda tangan yang tidak dapat diverifikasi. Error ini menyebabkan koneksi TLS ditutup. 0
unsupported_certificate Sertifikat memiliki jenis yang tidak didukung. Error ini menyebabkan koneksi TLS ditutup. 0
certificate_revoked Sertifikat dicabut oleh penandatangannya. Error ini menyebabkan koneksi TLS ditutup. 0
certificate_expired Sertifikat tidak berlaku lagi atau tidak valid. Error ini menyebabkan koneksi TLS ditutup. 0
certificate_unknown Beberapa masalah yang tidak ditentukan muncul saat memproses sertifikat, sehingga sertifikat tidak dapat diterima. Error ini menyebabkan koneksi TLS ditutup. 0
unknown_ca Rantai sertifikat atau rantai sebagian yang valid diterima, tetapi sertifikat tidak diterima karena sertifikat CA tidak dapat ditemukan atau dicocokkan dengan anchor kepercayaan yang diketahui. Error ini menyebabkan koneksi TLS tertutup. 0
unexpected_message Pesan yang tidak pantas, seperti pesan handshake yang salah atau data aplikasi yang diterima sebelum waktunya. Error ini menyebabkan koneksi TLS ditutup. 0
bad_record_mac Data diterima yang tidak dapat dihapus perlindungannya. Error ini menyebabkan koneksi TLS ditutup. 0
record_overflow Data TLSCiphertext diterima dengan panjang lebih dari 214+256 byte, atau data didekripsi ke data TLSPlaintext dengan lebih dari 214 byte (atau beberapa batas lain yang dinegosiasikan). Error ini menyebabkan koneksi TLS ditutup. 0
handshake_failure Tidak dapat menegosiasikan kumpulan parameter keamanan yang dapat diterima dengan opsi yang tersedia. Error ini menyebabkan koneksi TLS ditutup. 0
illegal_parameter Kolom dalam handshake salah atau tidak konsisten dengan kolom lainnya. Error ini menyebabkan koneksi TLS ditutup. 0
access_denied Sertifikat atau PSK yang valid diterima, tetapi saat kontrol akses diterapkan, klien tidak melanjutkan negosiasi. Error ini menyebabkan koneksi TLS ditutup. 0
decode_error Pesan tidak dapat didekode karena beberapa kolom berada di luar rentang yang ditentukan, atau panjang pesan salah. Error ini menyebabkan koneksi TLS ditutup. 0
decrypt_error Operasi kriptografi handshake (bukan lapisan data) gagal, termasuk tidak dapat memverifikasi tanda tangan dengan benar atau memvalidasi pesan yang sudah selesai atau binder PSK. Error ini menyebabkan koneksi TLS ditutup. 0
insufficient_security Negosiasi gagal secara khusus karena server memerlukan parameter yang lebih aman daripada yang didukung oleh klien. Error ini menyebabkan koneksi TLS ditutup. 0
inappropriate_fallback Dikirim oleh server sebagai respons terhadap upaya percobaan ulang koneksi yang tidak valid dari klien. Error ini menyebabkan koneksi TLS ditutup. 0
user_cancelled Pengguna membatalkan handshake karena alasan tertentu yang tidak terkait dengan kegagalan protokol. Error ini menyebabkan koneksi TLS ditutup. 0
missing_extension Dikirim oleh endpoint yang menerima pesan handshake yang tidak berisi ekstensi yang wajib dikirim untuk versi TLS yang ditawarkan atau parameter lain yang dinegosiasikan. Error ini menyebabkan koneksi TLS ditutup. 0
unsupported_extension Dikirim oleh endpoint yang menerima pesan handshake yang berisi ekstensi yang diketahui dilarang untuk disertakan dalam pesan handshake tertentu, atau menyertakan ekstensi apa pun di ServerHello atau Certificate yang tidak ditawarkan terlebih dahulu di ClientHello atau CertificateRequest yang sesuai. Error ini menyebabkan koneksi TLS ditutup. 0
unrecognized_name Dikirim oleh server jika tidak ada server yang dapat diidentifikasi berdasarkan nama yang diberikan oleh klien melalui ekstensi "server_name". Lihat definisi ekstensi TLS. 0
bad_certificate_status_response Dikirim oleh klien saat respons OCSP yang tidak valid atau tidak dapat diterima diberikan oleh server melalui ekstensi "status_request". Lihat definisi ekstensi TLS. Error ini menyebabkan koneksi TLS ditutup. 0
load_balancer_configured_resource_limits_reached Load balancer telah mencapai batas resource yang dikonfigurasi, seperti jumlah koneksi maksimum. 400, 500, 503

Entri log koneksi TLS yang gagal

Jika koneksi TLS antara klien dan load balancer gagal sebelum backend apa pun dipilih, entri log akan mencatat error. Anda dapat mengonfigurasi layanan backend dengan frekuensi sampel log yang berbeda. Jika koneksi TLS gagal, frekuensi sampel log koneksi TLS yang gagal adalah frekuensi sampel tertinggi untuk layanan backend apa pun. Misalnya, jika Anda telah mengonfigurasi dua layanan backend dengan frekuensi sampel logging sebagai 0.3 dan 0.5, frekuensi sampel log koneksi TLS yang gagal adalah 0.5.

Anda dapat mengidentifikasi koneksi TLS yang gagal dengan memeriksa detail entri log berikut:

  • Jenis error proxyStatus adalah tls_alert_received, tls_certificate_error, tls_protocol_error, atau connection_terminated.
  • Tidak ada informasi backend.

Contoh berikut menunjukkan entri log TLS yang gagal dengan kolom proxyStatus error:

   json_payload:    {
   @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
   proxyStatus: "error="tls_alert_received"; details="server_to_client: handshake_failure""
   log_name: "projects/529254013417/logs/mockservice.googleapis.com%20name"
   }
   http_request {
    latency {
      nanos: 12412000
    }
    protocol: "HTTP/1.0"
    remote_ip: "127.0.0.2"
   }
  resource {
    type: "mock_internal_http_lb_rule"
    labels {
      backend_name: ""
      backend_scope: ""
      backend_scope_type: "UNKNOWN"
      backend_target_name: ""
      backend_target_type: "UNKNOWN"
      backend_type: "UNKNOWN"
      forwarding_rule_name: "l7-ilb-https-forwarding-rule-dev"
      matched_url_path_rule: "UNKNOWN"
      network_name: "lb-network"
      region: "REGION"
      target_proxy_name: "l7-ilb-https-proxy-dev"
      url_map_name: ""
    }
  }
  timestamp: "2023-08-15T16:49:30.850785Z"
  

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.

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

Selain dasbor standar di Cloud Monitoring, Anda dapat membuat dasbor kustom, menyiapkan pemberitahuan, dan membuat kueri metrik melalui Cloud Monitoring API.

Menentukan kebijakan pemberitahuan

Anda dapat membuat kebijakan pemberitahuan untuk memantau nilai metrik dan memberi tahu Anda saat metrik tersebut melanggar ketentuan.

  1. Di konsol Google Cloud, buka halaman  Alerting:

    Buka Pemberitahuan

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

  2. ika Anda belum membuat saluran notifikasi dan ingin menerima notifikasi, klik Edit Notification Channels dan tambahkan saluran notifikasi Anda. Kembali ke halaman Alerting setelah menambahkan saluran.
  3. Dari halaman Alerting, pilih Create policy.
  4. Untuk memilih metrik, luaskan menu Pilih metrik, lalu lakukan tindakan berikut:
    1. Untuk membatasi menu pada entri yang relevan, masukkan Regional External Application Load Balancer Rule ke kolom filter. Jika tidak ada hasil setelah memfilter menu, nonaktifkan tombol Hanya tampilkan resource & metrik aktif.
    2. Untuk Resource type, pilih Regional External Application Load Balancer Rule.
    3. Pilih Kategori metrik dan Metrik, lalu pilih Terapkan.
  5. Klik Berikutnya.
  6. Setelan di halaman Konfigurasi pemicu notifikasi menentukan kapan notifikasi dipicu. Pilih jenis kondisi dan, jika perlu, tentukan batasnya. Untuk informasi selengkapnya, lihat Membuat kebijakan pemberitahuan batas metrik.
  7. Klik Berikutnya.
  8. Opsional: Untuk menambahkan notifikasi ke kebijakan pemberitahuan, klik Notification channels. Dalam dialog ini, pilih satu atau beberapa saluran notifikasi dari menu, lalu klik OK.
  9. Opsional: Perbarui Incident autoclose duration. Kolom ini menentukan kapan Monitoring akan menutup insiden jika data metrik tidak ada.
  10. Opsional: Klik Documentation, lalu tambahkan informasi apa pun yang ingin Anda sertakan dalam pesan notifikasi.
  11. Klik Alert name dan masukkan nama untuk kebijakan pemberitahuan itu.
  12. Klik Create Policy.
Untuk mengetahui informasi selengkapnya, lihat Kebijakan pemberitahuan.

Menentukan dasbor kustom Cloud Monitoring

Anda dapat membuat dasbor Cloud Monitoring kustom untuk metrik load balancer:

  1. Di konsol Google Cloud, buka halaman Monitoring.

    Buka Monitoring

  2. Pilih Dashboards > Create Dashboard.

  3. Klik Tambahkan Diagram, lalu beri judul diagram.

  4. Untuk mengidentifikasi deret waktu yang akan ditampilkan, pilih jenis resource dan jenis metrik:

    1. Di bagian Resource & Metric, klik diagram, lalu di bagian Select a metric, pilih dari opsi yang tersedia:
    2. Untuk Load Balancer Aplikasi eksternal regional, pilih jenis resource Regional External Application Load Balancer Rule.
    3. Klik Terapkan.
  5. Untuk menentukan filter pemantauan, klik Filter > Tambahkan filter.

  6. Klik Simpan.

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 regional dilaporkan ke Cloud Monitoring. Metrik ini diawali dengan loadbalancing.googleapis.com/.

Metrik Nama Deskripsi
Jumlah permintaan https/external/regional/request_count Jumlah permintaan yang ditayangkan oleh Load Balancer Aplikasi eksternal regional.
Meminta jumlah byte https/external/regional/request_bytes Jumlah byte yang dikirim sebagai permintaan dari klien ke Load Balancer Aplikasi eksternal regional.
Jumlah byte respons https/external/regional/response_bytes Jumlah byte yang dikirim sebagai respons dari Load Balancer Aplikasi eksternal regional ke klien.
Total latensi https/external/regional/total_latencies Distribusi latensi, dalam milidetik. Latensi diukur dari saat proxy menerima byte pertama permintaan hingga saat proxy mengirim byte terakhir respons.
Latensi backend https/external/regional/backend_latencies Distribusi latensi, dalam milidetik. Latensi diukur dari saat proxy mengirim byte pertama permintaan ke backend hingga saat proxy menerima byte terakhir respons dari backend.

Memfilter dimensi untuk metrik

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

Metrik digabungkan untuk setiap Load Balancer Aplikasi eksternal regional. Anda dapat memfilter metrik gabungan menggunakan dimensi berikut untuk resource.type="http_external_regional_lb_rule".

Properti Deskripsi
backend_name Nama grup instance backend atau NEG.
backend_scope Cakupan backend (nama zona atau nama wilayah). Mungkin UNKNOWN setiap kali backend_name tidak diketahui.
backend_scope_type Cakupan backend (REGION/ZONE). Mungkin UNKNOWN setiap kali backend_name tidak diketahui.
backend_target_name Nama backend yang dipilih untuk menangani permintaan, berdasarkan aturan jalur peta URL atau aturan rute yang cocok dengan permintaan.
backend_target_type Jenis target backend. Dapat berupa BACKEND_SERVICE, atau UNKNOWN ditampilkan jika backend tidak ditetapkan.
backend_type Jenis grup backend. Dapat berupa INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP, atau UNKNOWN ditampilkan jika backend tidak ditetapkan.
forwarding_rule_name Nama objek aturan penerusan.
matched_url_path_rule 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 menggunakan aturan jalur default.
  • UNKNOWN menunjukkan error internal.
network_name Nama jaringan VPC load balancer.
project_id ID project Google Cloud yang terkait dengan resource ini.
region Region tempat load balancer ditentukan.
target_proxy_name Nama objek proxy target yang dirujuk oleh aturan penerusan.
url_map_name Nama objek peta URL yang dikonfigurasi untuk memilih layanan backend.

Langkah selanjutnya