9b4ca1482f21427a0dc23f7f3dce3bee15409c16
- Migration 003: alerts table with fingerprint UNIQUE, JSON label/annotation
columns, nullable ends_at, and indexed status/name/received_at
- POST /api/alertmanager/webhook — upserts each alert by fingerprint;
zero endsAt ("0001-01-01") stored as NULL (still firing)
- GET /api/alerts — filtered list (?status, ?name, ?from, ?to, ?limit)
- GET /api/alerts/{id} — single alert lookup
Terminal Duty
Terminal Duty(termdut) is a server that helps teams manage alerts, oncall schedules etc.
- The app will integrate with alertmanager(prometheus alertmanager), as a receiver of alertmanager webhooks without the need for adapters.
- Incoming alerts will be logged to a database(postgres or sqlite).
- Alerts can be marked as "acknowledged", when someone is already working on it.
- Comments can be added to alerts, such as solutions, tips or actions.
- Statistics can be produced for the alerts in the database, such as most common alert, most busy times of the day/week etc.
- The server exposes a rest-api, where users, schedules, alerts etc can be managed.
- Alerts will be received from alertmanager with no authentication initially.
- The exposed api however(besides receiving alert from alertmanager) needs authentication.
- Authentication is managed on a user basis, each user has his or her own credentials, these are stored hashed in the database.
- Each user can be assigned to time slots in the oncall-schedule.
- The smallest unit of time managed in the schedule is a day. This may change later.
- The server is written in golang