2.5 KiB
2.5 KiB
dozzle_n8n_logging
n8n-driven Docker log alerting for the Coolify host at twala.rahamafresh.com. Critical errors fan out to ntfy (self-hosted) and WhatsApp (via Evolution API); lower-severity events go to ntfy only.
Dozzle stays as the human-facing log viewer. This project does not integrate with Dozzle — it reads Docker logs independently via a small read-only proxy.
Layout
log-proxy/ FastAPI app, only thing with docker.sock access. /services + /logs/<group> + /healthz.
coolify/ Coolify Docker Compose file for log-proxy.
ntfy/ Deploy notes for self-hosted ntfy.
n8n/ Exported workflow JSON (poll-<group>.json + notify.json).
Architecture
Docker Engine log-proxy (RO sock) n8n queue-mode
socket ────► HTTP /logs/<group> ────► poll → match → threshold → notify
│
┌───────────────────┴───────────────────┐
▼ ▼
ntfy.rahamafresh.com Evolution API (WhatsApp)
Service groups are auto-derived from each container's COOLIFY_RESOURCE_UUID. The allow-list (and friendly names) live in log-proxy/groups.yml.
Severity defaults:
| Severity | Threshold | Cooldown | Channels |
|---|---|---|---|
| critical | 1 match (immediate) | 30 min | ntfy + WhatsApp |
| error | 10 / 5 min | 15 min | ntfy |
| warn | 50 / 15 min | 30 min | ntfy (low prio) |
See 260517_docker_n8n_logging.md for the full design rationale.
Adding a new service group
- Append a line to
log-proxy/groups.yml:<coolify-uuid>: <friendly-name> - Restart the
log-proxyCoolify service - In n8n: duplicate
poll-tracksolidworkflow, retarget itsgroupVariable, tune severity patterns/thresholds, activate
Operating
- Tune thresholds: edit the
severityVariables block at the top of eachpoll-<group>workflow. - Silence during maintenance: deactivate the workflow in n8n (or set a global
silenced=trueflag in the Notify workflow's Variables). - Rotate ntfy publisher credential: update the credential in n8n; restart workflows.
Status
Bootstrap (2026-05-17): log-proxy code complete; n8n workflows, ntfy deploy, and Coolify deploy still pending.