Monitoring & Alerting
Executive Overview — all summaries for decision-makers.
Status: Not yet configured (manual setup in external services)
Recommended Stack (cost-effective)
| Purpose | Tool | Cost |
|---|---|---|
| Uptime | Better Stack or UptimeRobot | Free tier |
| Errors | Sentry | Free tier |
| Logs | Render Dashboard | included |
| Cron | Render Cron Job | included |
Uptime Checks
| URL | Interval | Alert |
|---|---|---|
https://api.mqa.group/health | 1 min | Email + Slack |
https://portal.mqa.group/login | 5 min | |
https://api.mqa.group/api/auth/status | 5 min |
Header for auth/status: not required (public endpoint).
Render Alerts
Dashboard → Service → Notifications:
- Deploy failed
- Instance unhealthy
- OOM / restart loop
Sentry Integration (TODO)
Backend
bash
npm install @sentry/node --saveEnv: SENTRY_DSN (Render secret)
Frontend
bash
npm install @sentry/react --saveEnv: VITE_SENTRY_DSN (DSN only, not a secret)
Log Retention
Render Free/Standard: limited retention. For audit:
- Important security events already in DB (
AuditLog) - Optional monthly export for compliance archive
On-Call (proposal)
| Severity | Response time | Channel |
|---|---|---|
| Portal down | 1h | Phone + email |
| Degraded (slow) | 4h | |
| Security incident | immediate | Lead Dev + MQA IT |
Runbook: BACKUP-RESTORE-RUNBOOK
Metrics to Watch
Render Dashboard → Metrics:
- CPU / memory backend
- HTTP latency p95
- Postgres connections
For AI features: Anthropic/OpenRouter usage dashboard separately.