Informasi logging health check

Anda bisa mendapatkan log health check load balancing saat endpoint berubah status responsivitasnya. Anda dapat menggunakan log pemeriksaan kesehatan untuk hal berikut:

  • Men-debug dan memecahkan masalah status respons endpoint secara langsung
  • Mendapatkan visibilitas ke status kesehatan endpoint Anda
  • Tujuan audit dan kepatuhan

Health check mencatat informasi transisi 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 tentang 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 pada health check baru

Konsol

  1. Di konsol Trusted 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 protokol yang berbeda 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 Trusted 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 Trusted 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.

Melihat log

  1. Untuk melihat log, buka Logs Explorer.

    Log health check diindeks berdasarkan 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 Kueri. 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 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 kondisi, yang dijelaskan dalam tabel berikut.

Status health check

Endpoint dianggap HEALTHY atau UNHEALTHY. Berikut 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 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. Kemudian, server 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 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 dikuras. Koneksi yang ada ke endpoint diizinkan untuk diselesaikan, tetapi koneksi baru akan ditolak. Endpoint dianggap 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 UNHEALTHY. UNHEALTHY
UNKNOWN Sistem health check mengetahui endpoint, tetapi kondisinya tidak diketahui. Endpoint dianggap UNHEALTHY. UNHEALTHY

Ada beberapa pemeriksa kondisi yang menyelidiki setiap endpoint; Trusted Cloud menghapus duplikat entri log sebelum mencatatnya sehingga hanya log unik yang dibuat.

Jika pemeriksa respons dimulai ulang, Anda mungkin sesekali melihat perubahan status respons yang dicatat dari UNKNOWN ke salah satu status yang diketahui yang tercantum sebelumnya, meskipun status respons endpoint sebenarnya tidak berubah. Trusted Cloud menggunakan heuristik upaya terbaik untuk menyembunyikan entri log tersebut.

Jika Anda menggunakan pengurasan koneksi, maka 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 pengurasan koneksi tidak memengaruhi hasil yang diamati oleh pemeriksaan health check. Pengurasan koneksi berfungsi hanya dengan memberi tahu load balancer bahwa status baru adalah DRAINING, dan secara efektif menggantikan 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 setelan 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

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 melakukan health check pada endpoint. Contoh: TCP, HTTP, HTTPS.
healthState enum(HealthState) Status kesehatan endpoint saat ini: HEALTHY atau UNHEALTHY.
previousHealthState enum(HealthState) Status kesehatan endpoint sebelumnya: HEALTHY atau UNHEALTHY.
detailedHealthState enum(DetailedHealthState) Status respons mendetail endpoint saat ini. Untuk mengetahui daftar kemungkinan, lihat Status health check.

Tidak didukung untuk health check Envoy terdistribusi untuk NEG hybrid dan NEG internet regional.

previousDetailedHealthState enum(DetailedHealthState) Status kesehatan mendetail endpoint sebelumnya. Untuk mengetahui 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 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 prober.

Tidak didukung untuk health check Envoy terdistribusi untuk NEG hybrid dan NEG internet regional.

probeResultText string Teks deskriptif yang terkait dengan hasil penyelidikan. Mungkin muncul pesan seperti "Waktu koneksi habis" atau "Respons HTTP: 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 titik pengamatan 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 probe. Nilai ini dapat berbeda dengan ipAddress. Alamat IP tujuan pemeriksaan bergantung pada jenis load balancer. Untuk mengetahui detailnya, lihat Tujuan paket probe di Ringkasan health check.
targetPort int Port yang menjadi target probe. Port ini dapat berupa port default probe 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 pemeriksaan kesehatan 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"

Temukan 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"

Temukan semua endpoint yang sebelumnya SEHAT (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 kondisi 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 dibuat saat status respons endpoint bertransisi ke status UNHEALTHY.
  • Log tidak dibuat saat endpoint dihapus. Misalnya, saat Anda menghentikan VM.

Langkah berikutnya