4.8. Monitorování

Elza poskytuje kontroly stavu (health) a metriky ve formátu Prometheus (Spring Boot Actuator). Lze je napojit na běžné dohledové nástroje jako Prometheus, Grafana nebo Zabbix.

4.8.1. Správcovský port

Endpointy monitorování jsou ve výchozím stavu zapnuté. Jsou publikovány na samostatném správcovském portu 8081 navázaném na 127.0.0.1, jsou tedy dostupné pouze ze samotného serveru. Aplikační port tím není dotčen. Vestavěné výchozí hodnoty jsou:

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. Libovolnou hodnotu lze přepsat v elza.yaml nebo proměnnou prostředí (například MANAGEMENT_SERVER_PORT).

Varování

Endpointy monitorování nevyžadují autentizaci; jsou chráněny tím, že jsou dostupné jen lokálně. Pokud má metriky sbírat vzdálený server Prometheus, změňte management.server.address a přístup k portu omezte jinak (firewall, reverzní proxy s autentizací). Port nikdy nepublikujte do veřejné sítě.

4.8.2. Endpointy

http://127.0.0.1:8081/actuator/health

Celkový stav (UP / DOWN) se stavem jednotlivých komponent (databáze, místo na disku, LDAP, je-li nastaven).

http://127.0.0.1:8081/actuator/health/liveness a .../readiness

Sondy životnosti a připravenosti pro load balancery nebo orchestrátory kontejnerů.

http://127.0.0.1:8081/actuator/prometheus

Metriky ve formátu Prometheus.

Příklad:

$ curl http://127.0.0.1:8081/actuator/health
{"status":"UP","components":{"db":{"status":"UP"},"diskSpace":{"status":"UP"},
 "livenessState":{"status":"UP"},"ping":{"status":"UP"},"readinessState":{"status":"UP"}}}

Kontrola LDAP je součástí stavu jen při nastavené autentizaci přes LDAP (elza.security.ldap.ad-domain); pak kontroluje nastavený server LDAP. Vypnout ji lze volbou management.health.ldap.enabled: false.

4.8.3. Metriky Elzy

Kromě standardních metrik JVM, HTTP serveru (http_server_requests_*), poolu databázových spojení (HikariCP) a systému publikuje Elza metriky své fronty synchronizace s externími systémy (typicky CAM) a svého plánovače úloh. Metriky nemají štítky (labels); hodnoty fronty jsou agregovány přes všechny nastavené externí systémy. Metriky stáří vracejí -1, pokud není co měřit.

Metrika

Význam

Doporučené upozornění

elza_cam_last_success_age_seconds

Počet sekund od posledního úspěšného dotazu na externí systém CAM (nejstarší hodnota přes všechny systémy). I dotaz, který nenajde žádnou změnu, je úspěšný. Hlavní ukazatel dostupnosti CAM.

nad 7200

elza_cam_error_count

Počet položek synchronizace ve stavu chyba (například neúspěšné odeslání do CAM).

nad 0

elza_cam_oldest_error_age_seconds

Počet sekund od poslední změny stavu nejstarší chybové položky. Dává počtu chyb závažnost a zabraňuje upozorněním u přechodných chyb.

nad 3600

elza_cam_deferred_oldest_age_seconds

Počet sekund od poslední změny stavu nejstarší odložené položky (například nahrazení entitou, která ještě není k dispozici). Odložené položky se obvykle vyřeší samy.

nad 86400

elza_cam_pending_oldest_age_seconds

Počet sekund od chvíle, kdy nejstarší položka čekající na stažení nebo odeslání vstoupila do svého stavu. Roste, když se fronta nezpracovává, což metrika posledního úspěchu nezachytí.

nad 3600

elza_scheduler_heartbeat_age_seconds

Počet sekund od posledního tiku plánovače úloh. Roste bez omezení, pokud plánovač zamrzne; tím se zastaví synchronizace s CAM i všechny další plánované úlohy až do restartu.

nad 300

elza_scheduler_longest_running_task_seconds

Počet sekund, po které běží nejdéle běžící plánovaná úloha; -1 v nečinnosti. Pro diagnostiku; úloha běžící déle než elza.monitoring.scheduler.stuckThresholdSeconds se navíc zapíše do logu s výpisem zásobníku.

žádné

elza_users_connected

Počet připojených uživatelů (session WebSocket). Informativní.

žádné

Strojově čitelný seznam těchto metrik s doporučenými prahy je součástí distribuce: server/config/csc-metrics.json.

Plánovač lze ladit volbami elza.monitoring.scheduler.poolSize (výchozí 4 vlákna), elza.monitoring.scheduler.heartbeatMs (výchozí 30000) a elza.monitoring.scheduler.stuckThresholdSeconds (výchozí 1800).

4.8.4. Hlášení stavu dohledovému systému

Příkaz elza-health instalačních skriptů umí hlásit stav instance vzdálenému dohledovému systému. LightComp v.o.s. nabízí takovou službu v rámci podpory (Customer Service Center, CSC); lze použít i jiný systém, který implementuje stejné rozhraní.

  • Hlášení je aktivní jen při nastavených přístupových údajích (CUSTOMER_ID a CUSTOMER_SERVICE_SECRET v elza-env). Bez nich skripty stav kontrolují jen lokálně a nic neodesílají.

  • Komunikace probíhá pouze směrem od instance k dohledovému systému (push) protokolem HTTPS; každé hlášení je podepsáno klíčem zákazníka (HMAC). Dohledový systém se nikdy nepřipojuje do infrastruktury zákazníka.

Každé hlášení (ve výchozím nastavení každých 10 minut, HEARTBEAT_INTERVAL) obsahuje:

  • celkový stav instance (up / degraded / down),

  • výsledky dílčích kontrol (stav služby systemd, HTTP kontrola),

  • verzi aplikace a čas jejího spuštění,

  • název počítače,

  • hodnoty metrik uvedených v csc-metrics.json.

Odesílají se jen číselné hodnoty uvedených metrik (allow-list); žádný archivní obsah, osobní údaje ani úplný výpis metrik. Pro vypnutí odesílání metrik při zachování hlášení stavu nastavte CSC_METRICS_URL na prázdnou hodnotu; pro úplné vypnutí hlášení odstraňte přístupové údaje.

Další nastavení skriptů popisuje https://get.lightcomp.com/elza/.