Informasi logging health check

Anda bisa mendapatkan log health check load balancing saat status responsivitas 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 Anda
  • 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

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

    Buka Health checks

  2. Klik Create health check.

  3. Untuk Logs, pilih On.

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

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 Logs, pilih On.

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

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

    Buka Health checks

  2. Klik nama health check Anda.

  3. Klik Edit.

  4. Untuk Logs, pilih Off.

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

  1. Untuk melihat log, buka Logs Explorer.

    Log health check diindeks menurut 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, 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:

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

Untuk TCP/SSL, ini adalah string opsional yang dikonfigurasi yang dikirim setelah koneksi pemeriksaan kesehatan 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 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 sourceRegions ditetapkan dalam health check yang sesuai.

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