Skip to content
ArenileArenile
Coste360.itCoste360.it

Monitoring and logs

Endpoint Responds Use
GET /healthz 200 if the process is alive liveness: restart the container if it does not answer
GET /readyz 200 if the database is reachable and migrations are up to date, otherwise 503 readiness: send traffic only when ready; external monitoring

The Docker image is distroless and does not contain curl: the healthcheck must be configured in the orchestrator, in the reverse proxy or in an external monitoring service (Uptime Kuma, Healthchecks, your platform’s monitor).

Finestra del terminale
curl -fsS https://prenota.mio-lido.it/readyz

Arenile writes structured JSON logs (log/slog) to standard output: with Docker read them with docker compose logs -f arenile; the official compose file rotates them (5 files of 10 MB).

  • Level with ARENILE_LOG_LEVEL (debug, info, warn, error). Use debug only for as long as it takes to understand a problem.
  • Every request has a request ID, returned in the X-Request-ID header and in the request_id field of API errors: quoting it finds the matching log line immediately.
  • Never personal data or secrets in clear: emails and phone numbers are masked; tokens, keys, signatures and webhook bodies are never logged.

The binary runs its periodic jobs by itself, with no cron or external queues. If a job runs late no sale is blocked: expired holds, for example, are ignored and cleaned up at conflict time too.

Job What it does
Expired hold release Every 30 seconds frees spots held by unfinished checkouts and moves the booking to Expired
Completion Closes bookings at the end of the stay
Event delivery Distributes outbox events to real time, notifications and extensions (at least once)
Notifications Sends queued emails, with retries and growing back-off up to 8 times
Payment reconciliation Every 15 minutes asks Stripe for the outcome of payments pending for more than 10 minutes
Cleanup Expired sessions and idempotency keys older than 24 hours
Signal Where What to do
/readyz failing external monitor Database, full disk, migrations: check the startup logs
Undelivered emails Configuration → Email and notifications, delivery log SMTP, SPF/DKIM, wrong addresses
Payment issues reconciliation report (Online payments) Webhook not configured or wrong secret
Stripe webhook errors Stripe dashboard, webhooks section Webhook URL or secret
Disk space operating system Local backups to rotate, Docker logs