Informasi logging health check

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

  1. Di konsol Google Cloud, buka halaman Health checks.

    Buka Health checks

  2. Klik Create health check.

  3. Untuk Log, pilih Aktif.

  4. 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.

resource "google_compute_health_check" "health_check_tcp_with_logging" {
  provider = google-beta

  name = "health-check-tcp"

  timeout_sec        = 1
  check_interval_sec = 1

  tcp_health_check {
    port = "22"
  }

  log_config {
    enable = true
  }
}

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

  1. Di konsol Google Cloud, buka halaman Health checks.

    Buka Health checks

  2. Klik nama health check Anda.

  3. Klik Edit.

  4. Untuk Log, pilih Aktif.

  5. 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

  1. Di konsol Google Cloud, buka halaman Health checks.

    Buka Health checks

  2. Klik nama health check Anda.

  3. Klik Edit.

  4. Untuk Log, pilih Nonaktif.

  5. 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

  1. Untuk melihat log, buka Logs explorer.

    Log health check diindeks oleh grup instance atau grup endpoint jaringan.

  2. Untuk melihat semua log, di menu Resource, pilih GCE Instance Group atau Network Endpoint Group, bergantung pada jenis backend.

  3. 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:

  1. Server memberikan respons yang salah, sehingga endpoint dianggap UNHEALTHY.
  2. Server kemudian berhenti merespons, dan status baru adalah TIMEOUT.
  3. Load balancer masih menganggap endpoint sebagai UNHEALTHY karena status TIMEOUT yang mendetail dipetakan ke status UNHEALTHY 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 requestPath dalam konfigurasi resource).

Untuk TCP/SSL, ini adalah string opsional terkonfigurasi yang dikirim setelah koneksi health check dibuat (kolom request dalam konfigurasi resource).

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