Voor eenvoudige gezondheidschecks op een Carbon container zou je het liefst een interface willen die precies genoeg informatie geeft om te kunnen bepalen of de omgeving gezond is. Het zou een lichtgewicht proces moeten zijn dat het systeem niet te zwaar belast. Het zou ook een veilig proces moeten zijn, waarbij geen gevoelige gegevens van het systeem blootgelegd worden, zodat potentiële aanvallen van hackers vermeden worden. In deze blog vertel ik hoe je een gezondheidscheck uit kunt voeren. In het verleden waren er verschillende manieren om informatie te krijgen over de gezondheid van een WSO2 container, bijvoorbeeld:
- Admin services blootstellen om informatie over databronnen te krijgen,
- Een echo-service uitrollen om en deze blootstellen door de proxy,
- JMX-interfaces blootstellen waardoor totale controle over de containers verkregen wordt.
Geen van deze methodes is het overwegen waard, omdat ze stuk voor stuk potentiële veiligheidslekken creëren.
Als we een eenvoudige service uitrollen op de Carbon container, die lokaal en regelmatig aangeroepen kan worden door een agent of een script, dan hebben we een complete keten om gezondheidschecks mee te doen. Zo’n service bestaat. Het heet de /api/health-check/v1.0/health REST API en werd geïntroduceerd in de WSO2 Identity Server v5.7.0 en beschikbaar gemaakt via de WUM updates voor v5.5.0 en v5.6.0 van de Identity Server. Met deze API is het mogelijk om gezondheidschecks te configureren op:
- HTTP- / HTTPS-verbindingen
- JDBC op gewone databronnen
- User store verbindingsstatus
Omdat de health-check API een generieke Carbon container-based API is, biedt WSO2 richtlijnen aan voor de deployment op alle WSO2-producten met de minimale vereiste dat deze op Java 8 draaien en dat ze WSO2 Carbon 4.4.x dependent zijn. De deployment van de API heeft betrekking op de OSGi module, een WAR-bestand en een configuratie XML-bestand. Dus we kunnen gezondheidschecks uitvoeren voor bijvoorbeeld een volledige APIM gedistribueerde set-up, waar verschillende Carbon containers zoals Traffic Managers, Gateways, Publisher en de Store, Identity Server (Key Manager), of een cluster van Enterprise Integrator modules in zitten. Noem het maar op.
Belangrijke opmerking
De health-check API is een open API. Er is geen authenticatie / autorisatie voor nodig. Deze API hoeft nooit blootgesteld te worden aan de buitenwereld. Houdt hem dus achter de firewall / proxy als een intern proces.
Wat is het vervolg?
Het JSON response bericht vanuit de health-check API geeft informatie over de huidige status van de Carbon container. Je kunt er ook voor kiezen om de API regelmatig te laten checken (bijv. iedere 5 seconden) en de JSON response berichten in een bestand als gezondheidslog op te slaan. Op die manier kan je de uitkomst in het logbestand met bijvoorbeeld een ELK stack volgen. Je kunt er een script op toepassen dat de API controleert om veranderingen in de status van de gezondheid van de Carbon container te registeren en e-mails te versturen als er iets mis is. Lees ook de blog van mijn collega Vinay over scripts voor gezondheidschecks voor servers en webdiensten die met WSO2 werken. Je kunt ook voor verschillende monitoringsoplossingen bekijken hoe ze te integreren zijn met de API en alarmen instellen op bepaalde veranderingen in statussen. De keuze is vrij op basis van je eigen productvoorkeuren en architectuur.
De volledige deployment guidelines en informatie over de health-check API kunnen gevonden worden op de WSO2 website. Voor alle andere vragen kun je uiteraard bij ons terecht!