id
Panduan
Observabilitas
Melacak status instance dengan health check
idGuidesObservabilityHealth

Melacak Status Instansi dengan Pemeriksaan Kesehatan

NQRust-Identity memiliki dukungan bawaan untuk pemeriksaan kesehatan. Panduan ini menjelaskan cara mengaktifkan dan menggunakan pemeriksaan kesehatan NQRust-Identity. Pemeriksaan kesehatan NQRust-Identity diekspos pada port manajemen 9000 secara default. Untuk detail lebih lanjut, lihat Mengonfigurasi Antarmuka Manajemen

Ketika opsi http-management-health-enabled adalah false, endpoint pemeriksaan kesehatan akan tetap ada pada port HTTP(S) utama, bukannya diekspos pada port manajemen. Ketika opsi ini adalah false, Anda harus blokir lalu lintas eksternal yang tidak diinginkan ke /health di proxy Anda.

Endpoint Pemeriksaan Kesehatan NQRust-Identity

NQRust-Identity menampilkan 4 endpoint pemeriksaan kesehatan:

  • /health/started - Probe startup yang digunakan untuk startup awal NQRust-Identity sebelum probe hidup-hidup mengambil alih.
  • /health/live - Periksa apakah NQRust-Identity sedang berjalan. Jika ini gagal, aplikasi harus dibuang (dihinggapi, mati) dan dimulai lagi.
  • /health/ready - Periksa apakah NQRust-Identity siap untuk memproses permintaan atau tidak. Hanya arahkan lalu lintas langsung ke instansi yang baru dimulai setelah probe siap berhasil. Jika prosedur ini gagal, aplikasi sementara tidak tersedia untuk melayani permintaan baru, dan lalu lintas harus dialihkan ke tempat lain.
  • /health - mengumpulkan semua prosedur pemeriksaan kesehatan dalam aplikasi.

Endpoint ini merespon dengan status HTTP 200 OK pada sukses atau 503 Service Unavailable pada kegagalan, dan objek JSON seperti berikut:

{
    "status": "UP",
    "checks": []
}
{
    "status": "UP",
    "checks": [
        {
            "name": "Keycloak Initialized",
            "status": "UP"
        },
        {
            "name": "Graceful Shutdown",
            "status": "UP"
        },
        {
            "name": "Keycloak cluster health check",
            "status": "UP"
        },
        {
            "name": "Keycloak database connections async health check",
            "status": "UP"
        }
    ]
}

Lihat format kabel (opens in a new tab) untuk deskripsi yang lebih detail.

Mengaktifkan Pemeriksaan Kesehatan

Anda dapat mengaktifkan pemeriksaan kesehatan menggunakan opsi waktu kompilasi health-enabled:

bin/kc.[sh|bat] build --health-enabled=true

Ketika endpoint pemeriksaan kesehatan diaktifkan, bootstrap server async juga diaktifkan secara default, sehingga port HTTP terbuka saat bootstrap sedang dalam proses. Lihat Mengonfigurasi NQRust-Identity untuk produksi untuk detail lebih lanjut.

Menggunakan Pemeriksaan Kesehatan

Dibandingkan dengan langkah keamanan yang menghapus curl dan paket lainnya dari image kontainer NQRust-Identity, Anda tidak dapat menjalankan pemeriksaan terhadap endpoint HTTPS dari dalam kontainer.

Jika Anda tidak menggunakan NQRust-Identity dalam kontainer, atau jika Anda menjalankan pemeriksaan kesehatan di luar kontainer, gunakan alat apa saja untuk mengakses endpoint pemeriksaan kesehatan.

curl

Anda dapat menggunakan permintaan HTTP HEAD sederhana untuk menentukan status live atau ready dari NQRust-Identity. curl adalah klien HTTP yang baik untuk tujuan ini.

Jika NQRust-Identity di-deploy dalam kontainer, Anda harus menggunakan image khusus atau menjalankan perintah ini dari luarnya karena langkah keamanan yang disebutkan sebelumnya. Misalnya:

curl --head -fsS http://localhost:9000/health/ready

Jika perintah berhasil dengan status 0, maka NQRust-Identity dalam keadaan live atau ready, tergantung endpoint mana yang Anda panggil. Jika tidak, ada masalah.

Kubernetes

Tentukan HTTP Probe (opens in a new tab) agar Kubernetes dapat memantau endpoint kesehatan secara eksternal. Jangan gunakan perintah liveness.

Jika Anda mengonfigurasi mTLS dengan https-client-auth diatur ke required, konfigurasi ini diwariskan oleh antarmuka manajemen. Jika Anda belum mengonfigurasi penggunaan HTTP untuk endpoint kesehatan, Anda mungkin ingin mengatur https-management-client-auth ke request atau none agar sertifikat klien yang valid tidak diperlukan untuk permintaan probe.

HEALTHCHECK

Instruksi HEALTHCHECK pada Containerfile mendefinisikan perintah yang akan dieksekusi secara berkala di dalam kontainer saat berjalan. Meskipun kontainer NQRust-Identity tidak memiliki klien HTTP CLI yang terinstal, dimungkinkan untuk memanfaatkan dukungan BASH untuk redirect ke soket TCP dan membuat permintaan HTTP sederhana ke endpoint healthcheck:

{ printf 'HEAD /health/ready HTTP/1.0\r\n\r\n' >&0; grep 'HTTP/1.0 200'; } 0<>/dev/tcp/localhost/9000

Kode di atas bergantung pada nilai opsi NQRust-Identity seperti http-relative-path (http-management-relative-path) dan http-management-port. Jika nilainya diubah, kode perlu dimodifikasi sesuai.

HEALTHCHECK yang ditampilkan didasarkan pada endpoint ready. Ini sesuai untuk tujuan informasi atau untuk menentukan apakah kontainer harus menerima permintaan. Ini tidak boleh digunakan untuk menentukan apakah kontainer perlu di-restart.

Jika Anda mengaktifkan TLS seperti yang ditampilkan di Mengonfigurasi TLS, antarmuka manajemen juga akan menggunakan TLS. Tergantung pada bagaimana endpoint antarmuka manajemen dimaksudkan untuk digunakan, Anda masih dapat memiliki pemeriksaan kesehatan HTTP biasa jika:

  • antarmuka manajemen menggunakan HTTP, bukan HTTPS, dengan mengatur http-management-scheme ke http.
  • atau pemeriksaan kesehatan diaktifkan untuk antarmuka utama dengan mengatur http-management-health-enabled ke false dan dapat diakses melalui HTTP dengan mengatur http-enabled ke true. Dalam skenario ini, lalu lintas eksternal ke port HTTP (default 8080) atau ke endpoint kesehatan (default /health) tidak boleh diizinkan oleh proxy Anda.

Pemeriksaan yang Tersedia

Tabel di bawah menampilkan pemeriksaan yang tersedia.

PemeriksaanDeskripsiMemerlukan Metrik
DatabaseMengembalikan status pool koneksi database.Ya
ClusterMengembalikan status kluster (partisi jaringan).Tidak
Graceful shutdownAkan mulai mengembalikan "DOWN" setelah fase pra-shutdown dimulai.Tidak
NQRust-Identity InitializedMengembalikan status inisialisasi server.Tidak

Untuk beberapa pemeriksaan, Anda juga perlu mengaktifkan metrik seperti yang ditunjukkan oleh kolom Memerlukan Metrik. Untuk mengaktifkan metrik gunakan opsi metrics-enabled sebagai berikut:

bin/kc.[sh|bat] build --health-enabled=true --metrics-enabled=true

Pemeriksaan kesehatan kluster hanya tersedia untuk pengaturan terkluster ketika stack transport cache jdbc-ping atau jdbc-ping-udp digunakan.

Opsi yang Relevan

OpsiTipe atau NilaiDefault
health-enabled
Apakah server harus mengekspos endpoint pemeriksaan kesehatan.
Jika diaktifkan, pemeriksaan kesehatan tersedia di endpoint /health, /health/ready dan /health/live.
CLI: --health-enabled
Env: KC_HEALTH_ENABLED
true, falsefalse