Anda bisa mendapatkan log health check load balancing saat endpoint berubah status respons. Anda dapat menggunakan log health check untuk hal berikut:
- Proses debug langsung dan memecahkan masalah status kondisi endpoint Anda
- Mendapatkan visibilitas tentang status respons endpoint Anda
- Tujuan audit dan kepatuhan
Health check mencatat informasi transisi ke dalam log ke Logging. Anda mengaktifkan atau menonaktifkan logging per health check.
Untuk melihat log health check di Logging, Anda harus memastikan bahwa Anda tidak memiliki pengecualian log yang berlaku untuk health check. Untuk petunjuk cara memverifikasi bahwa log GCE Instance Group
dan Network Endpoint Group
diizinkan, lihat Filter pengecualian.
Mengaktifkan dan menonaktifkan logging
Bagian ini menjelaskan cara mengaktifkan logging pada health check baru atau yang sudah ada, dan cara menonaktifkan logging pada health check yang sudah ada.
Mengaktifkan logging di health check baru
Konsol
Di konsol Google Cloud, buka halaman Health checks.
Klik Create health check.
Untuk Log, pilih Aktif.
Lanjutkan penyiapan health check Anda.
gcloud
gcloud compute health-checks create PROTOCOL HEALTH_CHECK_NAME \ --enable-logging
Tanda --enable-logging
mengaktifkan logging untuk health check tersebut.
Terraform
Untuk membuat health check pada berbagai protokol dengan logging, gunakan resource google_compute_health_check
.
Untuk load balancer regional, gunakan resource google_compute_region_health_check
.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Mengaktifkan logging pada health check yang ada
Konsol
Di konsol Google Cloud, buka halaman Health checks.
Klik nama health check Anda.
Klik
Edit.Untuk Log, pilih Aktif.
Klik Save.
gcloud
gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \ --enable-logging
Tanda --enable-logging
mengaktifkan logging untuk health check tersebut.
Menonaktifkan logging pada health check yang ada
Konsol
Di konsol Google Cloud, buka halaman Health checks.
Klik nama health check Anda.
Klik
Edit.Untuk Log, pilih Nonaktif.
Klik Save.
gcloud
gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \ --no-enable-logging
Tanda --no-enable-logging
menonaktifkan logging untuk health check tersebut.
Lihat log
Untuk melihat log, buka Logs explorer.
Log health check diindeks oleh grup instance atau grup endpoint jaringan.
Untuk melihat semua log, di menu Resource, pilih
GCE Instance Group
atauNetwork Endpoint Group
, bergantung pada jenis backend.Atau, tempel perintah berikut ke dalam kolom Query. Ganti
PROJECT_ID
dengan ID project Anda.logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
Anda dapat mengonfigurasi ekspor metrik berbasis log untuk health check load balancer.
Menggunakan filter untuk melihat log
Anda juga bisa mendapatkan log berdasarkan penelusuran yang lebih spesifik. Misalnya, filter berikut menampilkan semua log untuk alamat IP instance backend tertentu:
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks" jsonPayload.healthCheckProbeResult.ipAddress="IP_ADDRESS"
Kolom log jenis boolean biasanya hanya muncul jika memiliki nilai true
.
Jika kolom boolean memiliki nilai false
, kolom tersebut akan dihapus dari log.
Encoding UTF-8 diterapkan untuk kolom log. Karakter yang bukan karakter UTF-8 akan diganti dengan tanda tanya.
Apa itu log?
Entri log health check berisi informasi yang berguna untuk memantau dan men-debug status endpoint Anda. Entri log berisi jenis informasi berikut:
- Informasi umum yang ditampilkan di sebagian besar log, seperti tingkat keparahan, project ID, nomor project, dan stempel waktu.
- Kolom khusus untuk health check, dijelaskan dalam tabel berikut.
Status health check
Endpoint dianggap sebagai HEALTHY
atau UNHEALTHY
. Ini adalah status
dasar. Dalam setiap status dasar ini, ada beberapa status
yang lebih mendetail.
NEG campuran dan NEG internet regional yang menggunakan pemeriksaan kesehatan Envoy terdistribusi tidak mendukung status kesehatan mendetail.
Tabel berikut menunjukkan pemetaan antara status kesehatan dasar dan terperinci.
Status kesehatan dasar | Status kesehatan mendetail |
---|---|
HEALTHY |
HEALTHY DRAINING
|
UNHEALTHY |
UNKNOWN UNHEALTHY TIMEOUT
|
Perubahan status tidak selalu mengubah perilaku load balancer. Pertimbangkan kasus berikut:
- Server memberikan respons yang salah, sehingga endpoint dianggap
UNHEALTHY
. - Server kemudian berhenti merespons, dan status baru adalah
TIMEOUT
. - Load balancer masih menganggap endpoint sebagai
UNHEALTHY
karena statusTIMEOUT
yang mendetail dipetakan ke statusUNHEALTHY
dasar.
Tabel berikut memberikan definisi setiap status kesehatan.
Status health check mendetail | Arti | Status dasar |
---|---|---|
HEALTHY
|
Endpoint dapat dijangkau dan sesuai dengan persyaratan yang ditentukan oleh health check. | HEALTHY
|
UNHEALTHY
|
Endpoint dapat dijangkau, tetapi tidak sesuai dengan persyaratan yang ditentukan oleh health check. | UNHEALTHY
|
DRAINING
|
Endpoint sedang dikosongkan. Koneksi yang ada ke endpoint boleh diselesaikan, tetapi koneksi yang baru ditolak. Endpoint
dianggap sebagai HEALTHY .
|
HEALTHY
|
TIMEOUT
|
Endpoint tidak dapat dijangkau. Bergantung pada jenis health check, koneksi ke endpoint tidak dapat dibuat atau server tidak merespons selama waktu tunggu yang ditentukan. Endpoint dianggap sebagai
UNHEALTHY .
|
UNHEALTHY
|
UNKNOWN
|
Sistem health check mengetahui endpoint ini, tetapi responsnya tidak diketahui. Endpoint dianggap sebagai UNHEALTHY .
|
UNHEALTHY
|
Ada beberapa health check yang memeriksa setiap endpoint; Google Cloud akan menghapus duplikat entri log sebelum logging, sehingga hanya log unik yang dihasilkan.
Jika health checker dimulai ulang, terkadang Anda mungkin melihat status kesehatan yang dicatat ke dalam log
berubah dari UNKNOWN
menjadi salah satu status yang diketahui tercantum sebelumnya meskipun
status respons endpoint tidak benar-benar berubah. Google Cloud menggunakan heuristik dengan upaya terbaik untuk menekan entri log tersebut.
Jika Anda menggunakan pengurasan koneksi, log health check tidak akan dibuat dengan status kondisi endpoint DRAINING
. Hal ini karena log health check mencerminkan hasil yang diamati oleh
pemeriksaan health check, dan pengosongan koneksi tidak memengaruhi hasil
yang diamati oleh pemeriksaan health check. Pengosongan koneksi berfungsi hanya dengan memberi tahu
load balancer bahwa status barunya adalah DRAINING
, dan secara efektif mengganti
status kondisi endpoint yang sebenarnya seperti yang diamati oleh health checker.
Anda dapat berinteraksi dengan log menggunakan Cloud Logging API. API menyediakan cara secara interaktif untuk memfilter log yang memiliki kumpulan kolom tertentu dan mengekspor log yang cocok ke Cloud Logging, Cloud Storage, BigQuery, atau Pub/Sub. Untuk mengetahui informasi selengkapnya tentang Cloud Logging API, lihat Ringkasan Cloud Logging API.
Entri log health check
LogEntry
jsonPayload
diisi dengan kolom healthCheckProbeResult
yang berisi
informasi berikut.
Kolom | Jenis | Deskripsi |
---|---|---|
ipAddress |
string |
Alamat IP internal utama yang terkait dengan antarmuka jaringan utama setiap VM backend. Ini adalah string yang dapat dibaca manusia. |
healthCheckProtocol |
enum(HealthCheckProtocol) |
Protokol health check yang digunakan untuk health check endpoint. Contoh: TCP, HTTP, HTTPS. |
healthState |
enum(HealthState) |
Status respons endpoint saat ini: HEALTHY atau
UNHEALTHY . |
previousHealthState |
enum(HealthState) |
Status respons endpoint sebelumnya: HEALTHY atau
UNHEALTHY . |
detailedHealthState |
enum(DetailedHealthState) |
Status kondisi endpoint mendetail saat ini.
Untuk daftar kemungkinan, lihat
Status health check.
Tidak didukung untuk health check Envoy terdistribusi untuk NEG hybrid dan NEG internet regional. |
previousDetailedHealthState |
enum(DetailedHealthState) |
Status kondisi endpoint mendetail sebelumnya.
Untuk daftar kemungkinan, lihat
Status health check.
Tidak didukung untuk health check Envoy terdistribusi untuk NEG hybrid dan NEG internet regional. |
probeRequest |
string |
Untuk HTTP, HTTPS, dan HTTP/2, ini adalah jalur permintaan URL
(kolom Untuk TCP/SSL, ini adalah string opsional terkonfigurasi yang dikirim setelah koneksi health check dibuat (kolom Tidak didukung untuk health check Envoy terdistribusi untuk NEG hybrid dan NEG internet regional. |
probeCompletionTimestamp |
google.protobuf.Timestamp |
Stempel waktu penyelesaian pemeriksaan. |
connectLatency |
google.protobuf.Duration |
Waktu yang dihabiskan untuk menyiapkan koneksi untuk protokol health check berorientasi koneksi TCP, SSL, HTTP, HTTPS, dan HTTP/2.
Tidak didukung untuk health check Envoy terdistribusi untuk NEG hybrid dan NEG internet regional. |
responseLatency |
google.protobuf.Duration |
Latensi antara permintaan dan respons, seperti yang diukur oleh prober.
Tidak didukung untuk health check Envoy terdistribusi untuk NEG hybrid dan NEG internet regional. |
probeResultText |
string |
Teks deskriptif yang terkait dengan hasil pemeriksaan. Pesan tersebut mungkin bertuliskan "Waktu koneksi habis" atau "respons HTTP: Gateway Buruk", atau mungkin kosong.
Tidak didukung untuk health check Envoy terdistribusi untuk NEG hybrid dan NEG internet regional. |
probeSourceIp |
string |
Alamat IP asal pemeriksaan health check dikirim.
Untuk health check Envoy terdistribusi, ini sama dengan alamat IP proxy dari subnet khusus proxy. |
targetIp |
string |
Alamat IP yang menjadi target pemeriksaan. Nilai ini dapat berbeda dengan ipAddress .
Alamat IP tujuan pemeriksaan bergantung pada jenis load balancer. Untuk mengetahui detailnya, lihat
Tujuan untuk paket pemeriksaan dalam ringkasan Health check.
|
targetPort |
int |
Port yang merupakan target penyelidikan. Port ini dapat berupa port default pemeriksaan atau port yang Anda tentukan saat membuat health check. |
Contoh filter
Bagian ini memberikan contoh filter log umum.
Menemukan semua hasil health check untuk grup instance tertentu
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks" AND resource.type="gce_instance_group" AND resource.labels.instance_group_name="INSTANCE_GROUP_NAME"
Menemukan semua hasil health check untuk NEG tertentu
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks" AND resource.type="gce_network_endpoint_group" AND resource.labels.network_endpoint_group_id="ENDPOINT_GROUP_ID"
Menemukan semua transisi health check untuk alamat IP instance backend 10.128.15.201
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks" jsonPayload.healthCheckProbeResult.ipAddress="10.128.15.201"
Temukan semua endpoint yang sebelumnya HEALTHY tetapi sekarang TIMEOUT
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks" jsonPayload.healthCheckProbeResult.previousDetailedHealthState="HEALTHY" jsonPayload.healthCheckProbeResult.detailedHealthState="TIMEOUT"
Menemukan catatan kesehatan dari rentang waktu tertentu
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks" timestamp>"2019-02-14T02:20:00.0Z" timestamp<"2019-02-14T03:30:00.0Z"
Batasan
- Log dibuat hanya untuk transisi kondisi endpoint.
- Health check lama tidak didukung.
- Kumpulan target tidak didukung.
- Log tidak dibuat saat status respons endpoint adalah
UNKNOWN
. - Dalam kasus migrasi VM, Anda mungkin tidak melihat entri log apa pun yang dihasilkan saat
kondisi endpoint bertransisi ke status
UNHEALTHY
. - Log tidak dibuat saat endpoint dihapus. Misalnya, ketika Anda menghentikan VM.
Langkah selanjutnya
- Baca informasi konseptual tentang health check.
- Membuat health check.
- Baca Logging.