4.8. Monitorování aplikace

Od verze 3.4.0 poskytuje Elza rozhraní pro sledování stavu aplikace (health) a metriky ve formátu Prometheus. Rozhraní je založeno na technologii Spring Boot Actuator a lze jej napojit na běžné dohledové nástroje (Prometheus, Grafana, Zabbix a další).

Rozhraní zpřístupňuje:

  • celkový stav aplikace včetně stavu jednotlivých komponent (databáze, volné místo na disku),

  • sondy pro kontrolu životnosti a připravenosti (liveness/readiness),

  • metriky aplikace ve formátu Prometheus, zejména metriky fronty zpracování požadavků na synchronizaci s externími systémy.

4.8.1. Potřebná nastavení

Rozhraní pro monitorování je ve výchozím stavu zapnuté a není nutné je aktivovat. Endpointy jsou publikovány na samostatném správcovském portu 8081, který je dostupný pouze z lokálního počítače (127.0.0.1). Hlavní aplikační port není monitorováním nijak dotčen.

Výchozí hodnoty nastavení:

management:
  server:
    port: 8081
    address: 127.0.0.1
  endpoints:
    web:
      exposure:
        include: health,prometheus
  endpoint:
    health:
      probes:
        enabled: true
      show-details: always

Publikovány jsou pouze endpointy health a prometheus, ostatní endpointy technologie Actuator jsou vypnuty.

Uvedené hodnoty lze změnit v konfiguračním souboru elza.yaml (viz Konfigurace Elza), případně pomocí proměnných prostředí (např. MANAGEMENT_SERVER_PORT).

Varování

Endpointy monitorování nejsou chráněny autentizací. Zabezpečení je založeno na tom, že správcovský port je dostupný pouze z lokálního počítače. Pokud je nutné zpřístupnit metriky vzdálenému dohledovému systému (např. serveru Prometheus), je třeba změnit management.server.address a přístup k portu omezit jiným způsobem (firewall, reverzní proxy s autentizací). Rozhraní není určeno pro publikaci do veřejné sítě.

4.8.2. Přístup k rozhraní

Ve výchozím nastavení jsou endpointy dostupné z lokálního počítače na těchto adresách:

  • http://127.0.0.1:8081/actuator/health - celkový stav aplikace

  • http://127.0.0.1:8081/actuator/health/liveness - sonda životnosti

  • http://127.0.0.1:8081/actuator/health/readiness - sonda připravenosti

  • http://127.0.0.1:8081/actuator/prometheus - metriky ve formátu Prometheus

Příklad ověření stavu aplikace:

curl http://127.0.0.1:8081/actuator/health

Odpověď obsahuje celkový stav (UP / DOWN) a detail jednotlivých komponent:

{
  "status": "UP",
  "components": {
    "db": { "status": "UP" },
    "diskSpace": { "status": "UP" },
    "livenessState": { "status": "UP" },
    "ping": { "status": "UP" },
    "readinessState": { "status": "UP" }
  }
}

Sondy životnosti a připravenosti vrací pouze dílčí stav a jsou určeny například pro kontroly orchestrátoru kontejnerů nebo load balanceru.

Metriky ve formátu Prometheus lze získat příkazem:

curl http://127.0.0.1:8081/actuator/prometheus

4.8.3. Publikované metriky

Metriky fronty zpracování

Elza udržuje frontu zpracování požadavků na synchronizaci archivních entit s externími systémy (typicky CAM). Položky fronty mohou čekat na zpracování, být odloženy (např. při nahrazení entity, jejíž nahrazující entita ještě není dostupná) nebo skončit chybou. Následující metriky umožňují dohledovému systému rozpoznat zaseknutou nebo chybující frontu:

Metrika (Prometheus)

Typ

Jednotka

Význam

elza_cam_last_success_age_seconds

gauge

sekundy

Stáří posledního úspěšného dotazu na externí systém (bere se nejstarší hodnota přes všechny nakonfigurované systémy). Úspěchem je i dotaz bez nových změn. Hlavní ukazatel dostupnosti externího systému.

elza_cam_error_count

gauge

počet

Počet položek fronty ve stavu chyba (např. neúspěšné odeslání), součet přes všechny externí systémy.

elza_cam_oldest_error_age_seconds

gauge

sekundy

Stáří nejstarší položky ve stavu chyba.

elza_cam_deferred_oldest_age_seconds

gauge

sekundy

Stáří nejstarší odložené položky.

elza_users_connected

gauge

počet

Počet aktuálně připojených uživatelů. Informativní metrika.

Poznámky:

  • Metriky nemají žádné štítky (labels). Hodnoty jsou agregovány přes všechny nakonfigurované externí systémy, aby bylo možné použít jednotné prahové hodnoty.

  • Metriky typu stáří vrací hodnotu -1, pokud není co měřit (např. žádný externí systém není nakonfigurován nebo fronta neobsahuje žádnou chybnou položku).

Standardní metriky

Kromě výše uvedených metrik jsou na endpointu prometheus dostupné standardní metriky technologií Spring Boot a Micrometer, zejména:

  • metriky JVM (paměť, garbage collection, vlákna),

  • metriky HTTP serveru (http_server_requests_*),

  • metriky databázového poolu (HikariCP),

  • systémové metriky (CPU, uptime).

Strojově čitelný přehled metrik fronty zpracování, včetně výchozích prahových hodnot pro upozornění, je součástí distribuce v souboru config/csc-metrics.json. Přehled metrik předávaných případnému externímu dohledovému systému je uveden v kapitole Hlášení stavu dohledovému systému.