Skip to content

Health Endpointy

Health endpointy jsou důležitou součástí monitorování a řízení životního cyklu aplikací v distribuovaném prostředí. Identifikují se tři základní typy: liveness, readiness a health. Každý má specifickou funkci a účel:

Liveness Endpoint (/healthz/live)

  • Účel: Slouží k ověření, zda aplikace běží a není v nevratném chybovém stavu.
  • Kontrola: Typicky zahrnuje pouze kontrolu, zda běží aplikační procesy a zda aplikace odpovídá.
  • Detaily: Tento endpoint by měl být co nejjednodušší a nejméně náročný. Neobsahuje kontroly externích závislostí, jako jsou databáze nebo jiné API služby.
  • Použití: Vhodný pro prostředí container orchestratorů, jako je Kubernetes, pro rozhodnutí, zda restartovat kontejner.

Příklad odpovědi:

json
{
    "status": "UP"
}

Readiness Endpoint (/healthz/ready)

  • Účel: Ověřuje, zda je aplikace schopna přijímat a zpracovávat požadavky.
  • Kontrola: Zahrnuje důkladnou kontrolu všech kritických závislostí, jako jsou databázová připojení, dostupnost klíčových externích API, front zpráv atd.
  • Detaily: Umožňuje systémům pro vyvažování zátěže rozhodnout, zda by instance aplikace měla přijímat požadavky.
  • Použití: Pomáhá bránit směrování provozu na aplikaci, která není plně připravena ke zpracování požadavků.

Příklad odpovědi:

json
{
    "status": "UP",
    "components": {
        "database": "UP",
        "redis": "UP",
        "storage": "UP",
        "messageQueue": "UP",
        "externalApiService": "DOWN"
    }
}

Health Endpoint (/healthz/health)

  • Účel: Kombinuje informace o živosti a připravenosti aplikace, poskytuje komplexní pohled na celkový stav aplikace a jejích komponent.
  • Kontrola: Může zahrnovat kontroly z obou předchozích endpointů, poskytuje přehledný stav celého systému.
  • Detaily: Je užitečný pro administrátory a monitorovací systémy, které potřebují detailní přehled o aplikaci.
  • Použití: Pro sledování celkového zdraví aplikace v rámci různých monitorovacích nástrojů a pro účely auditu.

Příklad odpovědi:

json
{
    "status": "UP",
    "details": {
        "liveness": "UP",
        "readiness": {
            "status": "UP",
            "components": {
                "database": "UP",
                "externalApiService": "UP",
                "messageQueue": "UP"
            }
        }
    }
}

Doporučení

  • Zabezpečení: Zabezpečte přístup k těmto endpointům, aby se k nim nedostaly neoprávněné subjekty, které by mohly získat citlivé informace o vnitřím stavu aplikace.
  • Jednoduchost liveness kontroly: Udržujte liveness kontrolu co nejjednodušší, aby nezpůsobila zbytečné zatížení systému.
  • Testování readiness: Pravidelně testujte readiness kontroly, aby aplikace správně reagovala na změny ve stavu závislostí.

Tyto endpointy pomohou zajistit, že vaše aplikace bude spolehlivě monitorována a správně integrována do orchestrátorů a monitorovacích nástrojů.