Ein Health Check Endpunkt beantwortet schnell eine Frage: ist diese API erreichbar, und kann sie ihre eigene Datenbank erreichen. Uptime Monitore, Load Balancer, und Status Seiten erwarten alle einen, und ihn von Hand zu bauen (selbst die Datenbank abfragen, das richtige JSON zusammenstellen, einen Statuscode wählen) ist mehr Arbeit, als es für etwas so Einfaches sein sollte.
Ihn bauen
- Erstelle einen neuen GET Endpunkt, etwas wie
/healthoder/status. - Ziehe einen Health Check Block hinein. Lass Check that the database can be reached an, er führt eine leichte Abfrage aus, nichts Aufwendiges.
- Füge einen JSON Response Block hinzu. Setze seinen Body auf
{{health}}und sein Statusfeld auf{{health_status}}(oder welchen Variablennamen du dem Health Check Block gegeben hast, im eigenen Panel angezeigt). - Verbinde die beiden ausgehenden Pfade des Health Check Blocks (markiert "Ok" und "Unhealthy") beide mit demselben Response Block, da er so oder so bereits den richtigen Status trägt.
Das ist der ganze Endpunkt. Ein gesunder Aufruf gibt 200 mit einem Body wie {"status":"ok","checks":{"database":"ok"}} zurück; falls die Datenbank nicht erreicht werden kann, gibt er stattdessen 503 mit {"status":"unhealthy","checks":{"database":"error"}} zurück, genau den Statuscode, den ein Monitoring Werkzeug erwartet, um ihn als echten Ausfall zu behandeln.
Tipp: Halte einen Health Check Endpunkt öffentlich (kein API Schlüssel nötig), damit ein externer Monitor ihn ohne konfigurierte Zugangsdaten aufrufen kann.