Signals Outage Runbook
Use this runbook when signal generation or downstream delivery looks stale.
Detection
GET /api/v1/signals/latestfails or returns obviously stale payloadsGET /api/v1/signals/delivery-statusshows delivery channels misconfigured- daemon telemetry is stale
- Discord/Telegram mirrors stop posting when those channels are enabled
First Checks
- API health:
- Signal generation:
- Delivery configuration:
- Daemon state:
Host-Level Checks
On the production droplet:
sudo systemctl status qgtm-api qgtm-daemon qgtm-redis
sudo journalctl -u qgtm-daemon -n 100 --no-pager
sudo journalctl -u qgtm-api -n 100 --no-pager
Common Causes
| Symptom | Likely Cause | Action |
|---|---|---|
| No fresh signals | Daemon stopped or heartbeat stale | Restore qgtm-daemon, then verify telemetry |
| Signals compute locally but not externally | API degraded or Redis unhealthy | Check /health, Redis, and API logs |
| Delivery status shows unconfigured channels | Discord or Telegram credentials missing | Fix runtime config before expecting external delivery |
| Delivery lag with healthy daemon | Consumer/config issue in signal publishing layer | Check qgtm_signals and bot logs/config |
Communication
If external delivery is actually enabled for users, post a brief status update in the active delivery channel:
Signal delivery is delayed. The trading/runtime stack is under review and we
will post the next update within 30 minutes.
Recovery
- Restore API, daemon, and Redis health
- Verify
signals/latest,daemon/telemetry, anddelivery-status - Replay or reissue missed downstream notifications only if the delivery layer was enabled and the operator confirms they should be resent
- Write a short incident note with root cause and follow-up action