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 |
|---|---|---|---|
|
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. |
|
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. |
|
gauge |
sekundy |
Stáří nejstarší položky ve stavu chyba. |
|
gauge |
sekundy |
Stáří nejstarší odložené položky. |
|
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.