Anda bisa mendapatkan log health check load balancing saat status respons endpoint berubah. Anda dapat menggunakan log pemeriksaan kesehatan untuk hal berikut:
- Proses debug dan pemecahan masalah status respons endpoint secara real time
- Mendapatkan visibilitas ke status kondisi endpoint
- Tujuan audit dan kepatuhan
Health check mencatat informasi transisi status respons ke Logging. Anda mengaktifkan atau menonaktifkan logging berdasarkan 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 ada.
Mengaktifkan logging di health check baru
Konsol
Di konsol Google Cloud, buka halaman Health checks.
Klik Create health check.
Untuk Logs, pilih On.
Lanjutkan penyiapan health check Anda.
gcloud
gcloud compute health-checks create PROTOCOL HEALTH_CHECK_NAME \ --enable-logging
Flag --enable-logging
mengaktifkan logging untuk health check tersebut.
Terraform
Untuk membuat health check untuk 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 Logs, pilih On.
Klik Simpan.
gcloud
gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \ --enable-logging
Flag --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 Logs, pilih Off.
Klik Simpan.
gcloud
gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \ --no-enable-logging
Flag --no-enable-logging
menonaktifkan logging untuk health check tersebut.
Lihat log
Untuk melihat log, buka Logs Explorer.
Log health check diindeks menurut 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, tempelkan 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 yang ditentukan:
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks" jsonPayload.healthCheckProbeResult.ipAddress="IP_ADDRESS"
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.
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 pemeriksaan kesehatan, yang 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 hybrid dan NEG internet regional yang menggunakan health check Envoy terdistribusi tidak mendukung status kesehatan mendetail.
Tabel berikut menunjukkan pemetaan antara status kesehatan dasar dan mendetail.
Status kesehatan dasar | Status respons 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 barunya adalah
TIMEOUT
. - Load balancer masih menganggap endpoint sebagai
UNHEALTHY
karena statusTIMEOUT
mendetail dipetakan ke statusUNHEALTHY
dasar.
Tabel berikut memberikan definisi untuk setiap status kesehatan.
Status pemeriksaan kesehatan 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
diizinkan untuk diselesaikan, tetapi koneksi 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 dalam waktu tunggu yang ditentukan. Endpoint dianggap sebagai
UNHEALTHY .
|
UNHEALTHY
|
UNKNOWN
|
Sistem health check mengetahui endpoint, tetapi kondisinya tidak
diketahui. Endpoint dianggap sebagai UNHEALTHY .
|
UNHEALTHY
|
Ada beberapa pemeriksa kesehatan yang menyelidiki setiap endpoint; Google Cloud menghapus duplikat entri log sebelum melakukan logging sehingga hanya log unik yang dibuat.
Jika pemeriksa status dimulai ulang, Anda mungkin sesekali melihat status respons yang dicatat dalam log berubah dari UNKNOWN
menjadi salah satu status yang diketahui yang tercantum sebelumnya meskipun status respons endpoint belum benar-benar berubah. Google Cloud menggunakan heuristik terbaik untuk menyembunyikan entri log tersebut.
Jika Anda menggunakan
pengosongan 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 dengan hanya memberi tahu load balancer bahwa status barunya adalah DRAINING
, dan secara efektif mengganti status respons sebenarnya dari endpoint seperti yang diamati oleh pemeriksa respons.
Anda dapat berinteraksi dengan log menggunakan Cloud Logging API. API ini menyediakan cara untuk memfilter log secara interaktif yang memiliki kolom tertentu yang ditetapkan 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
jsonPayload
LogEntry
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 memeriksa kondisi endpoint. Contoh: TCP, HTTP, HTTPS. |
healthState |
enum(HealthState) |
Status kondisi endpoint saat ini: HEALTHY atau
UNHEALTHY . |
previousHealthState |
enum(HealthState) |
Status respons endpoint sebelumnya: HEALTHY atau
UNHEALTHY . |
detailedHealthState |
enum(DetailedHealthState) |
Status respons mendetail saat ini dari endpoint.
Untuk mengetahui daftar kemungkinannya, lihat
Status health check.
Tidak didukung untuk health check Envoy terdistribusi untuk NEG hybrid dan NEG internet regional. |
previousDetailedHealthState |
enum(DetailedHealthState) |
Status respons endpoint mendetail sebelumnya.
Untuk mengetahui daftar kemungkinannya, 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 yang dikonfigurasi yang
dikirim setelah koneksi pemeriksaan kesehatan 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 penguji.
Tidak didukung untuk health check Envoy terdistribusi untuk NEG hybrid dan NEG internet regional. |
probeResultText |
string |
Teks deskriptif yang terkait dengan hasil pemeriksaan. Pesan mungkin berisi
sesuatu seperti "Connection timed out" atau "HTTP response: Bad Gateway", atau
mungkin kosong.
Tidak didukung untuk health check Envoy terdistribusi untuk NEG hybrid dan NEG internet regional. |
probeSourceIp |
string |
Alamat IP tempat pemeriksaan health check dikirim.
Untuk health check Envoy terdistribusi, ini sesuai dengan alamat IP proxy dari subnet khusus proxy. |
probeSourceRegion |
string |
Region vantage point cloud tempat health check berasal. Kolom ini hanya diisi untuk pemeriksaan kebijakan pemilihan rute Cloud DNS jika kolom |
targetIp |
string |
Alamat IP yang menjadi target pemeriksaan. ID ini dapat
berbeda dengan ipAddress .
Alamat IP tujuan probe bergantung pada jenis load
balancer. Untuk mengetahui detailnya, lihat
Tujuan untuk paket probe di ringkasan Health check.
|
targetPort |
int |
Port yang menjadi target probe. 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 pemeriksaan kesehatan 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 pemeriksaan kesehatan 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"
Menemukan 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 log 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 hanya dibuat untuk transisi status endpoint.
- Health check lama tidak didukung.
- Target pool tidak didukung.
- Log tidak dibuat saat status respons endpoint adalah
UNKNOWN
. - Dalam kasus migrasi VM, Anda mungkin tidak melihat entri log yang dihasilkan saat status respons endpoint bertransisi ke status
UNHEALTHY
. - Log tidak dibuat saat endpoint dihapus. Misalnya, saat Anda menghentikan VM.
Langkah selanjutnya
- Baca informasi konseptual tentang health check.
- Buat health check.
- Baca tentang Logging.