Monitoring, logs and alerts
Read metrics and logs, set alert rules, and get told on Discord or by email when something breaks.
Metrics for every server and container, logs for every application, and alert rules that tell you when something crosses a line — on Discord, Slack, by email or to a webhook of your own.
Metrics
Two levels, sampled continuously and kept as history:
- Server
- CPU, memory and disk for the machine, used and total. This is what alert rules read.
- Container
- Per-container CPU, memory, network in/out and block I/O — for an application, a database or a Linux instance.
You see the servers you have access to through project membership; a platform administrator sees the fleet. Reading metrics needs monitoring:view, which is part of the read-only role.
Logs
Three log streams exist and they answer different questions — see deployments for when to reach for which. Container logs are the live stream from the running process, and they are the ones you want when the application is up but misbehaving.
Alert rules
A rule is a server, a metric, an operator, a threshold and a channel:
cpu >= 90 → Discord
memory >= 85 → email
disk < 10 → SlackThresholds are percentages, so memory >= 90 means ninety percent regardless of how much RAM the machine has. Metrics available: cpu, memory, disk. Operators: >, >=, <, <=, =.
disk >= 90 means “used crossed a ceiling”. disk < 10 means “free fell below a floor” — the reading you actually want from that phrasing, not “the disk is nearly empty”. CPU has no free counterpart, so the operator never flips it.Rules are evaluated every thirty seconds against the most recent sample. Two behaviours worth knowing:
- A crossed rule does not re-fire every thirty seconds. Repeat notifications are suppressed — an alert that shouts every half-minute for an hour trains you to ignore it.
- A server that has stopped reporting stops firing alerts. Its last sample is frozen, and a frozen sample would re-announce a resource alert forever. The host being offline is surfaced on its own, as itself.
Where alerts go
| Channel | Needs |
|---|---|
| SMTP configured on the install. See installation. | |
| Discord | A channel webhook URL. |
| Slack | An incoming-webhook URL. |
| Webhook | Any URL of yours — for a pager, an internal bot, or your own on-call tooling. |
A channel that fails — a revoked webhook, an SMTP server that refuses — is logged and skipped. It never takes the evaluation loop down, so one misconfigured destination cannot stop every other rule from firing.