Use this checklist to ensure proper deployment and configuration of the monitoring stack.
- Docker and Docker Compose installed
- Access to Nova Rewards backend
- Slack workspace access (for notifications)
- PagerDuty account (optional, for critical alerts)
- Sufficient disk space (minimum 20GB recommended)
- Copy
.env.exampleto.env - Set
GRAFANA_ADMIN_PASSWORD - Set
POSTGRES_PASSWORD - Set
SLACK_WEBHOOK_URL - Set
PAGERDUTY_SERVICE_KEY(if using PagerDuty) - Review and customize alert thresholds in
prometheus/rules/alerts.yml
- Create monitoring network:
docker network create nova-rewards_monitoring - Verify network created:
docker network ls | grep monitoring
- Start monitoring stack:
docker-compose -f docker-compose.monitoring.yml up -d - Wait 30 seconds for services to initialize
- Check all services running:
docker-compose -f docker-compose.monitoring.yml ps - Verify no services in "Restarting" state
- Prometheus accessible: http://localhost:9090
- Grafana accessible: http://localhost:3000
- Alertmanager accessible: http://localhost:9093
- Node Exporter: http://localhost:9100/metrics
- PostgreSQL Exporter: http://localhost:9187/metrics
- Redis Exporter: http://localhost:9121/metrics
- Login to Grafana (admin/[your-password])
- Change admin password (if using default)
- Verify Prometheus datasource connected
- Import dashboards from
grafana/dashboards/ - Test dashboard queries show data
- Configure user accounts and permissions
- Open Prometheus UI: http://localhost:9090
- Check Status > Targets - all should be "UP"
- Verify backend target is being scraped
- Test query:
up{job="nova-backend"} - Check Status > Rules - alert rules loaded
- Verify no configuration errors
- Open Alertmanager UI: http://localhost:9093
- Verify configuration loaded
- Check Status page for errors
- Test alert routing configuration
- Backend exposes
/metricsendpoint - Metrics endpoint returns Prometheus format
- Test:
curl http://localhost:4000/metrics - Backend connected to monitoring network (if using integrated setup)
- Verify Prometheus scraping backend successfully
- PostgreSQL Exporter can connect to database
- Database metrics appearing in Prometheus
- Test query:
pg_up
- Redis Exporter can connect to Redis
- Redis metrics appearing in Prometheus
- Test query:
redis_up
- HTTP request metrics appearing:
http_request_duration_seconds_count - System metrics appearing:
node_cpu_seconds_total - Database metrics appearing:
pg_stat_database_numbackends - Redis metrics appearing:
redis_memory_used_bytes - Business metrics appearing:
rewards_distributed_total
- Run test alert script:
./scripts/test-alerts.sh - Verify test alert appears in Alertmanager
- Check Slack channel for test alert
- Check PagerDuty for test alert (if configured)
- Verify alert resolves after clearing
- Open Nova Rewards Overview dashboard
- Verify all panels show data
- Test time range selection
- Test dashboard refresh
- Verify no "No Data" panels
- Share Grafana URL and credentials with team
- Share Prometheus URL with team
- Review runbooks with on-call engineers
- Document escalation procedures
- Create team access to Slack channels
- Set up PagerDuty rotation (if using)
- Review
high-error-rate.mdwith team - Review
service-down.mdwith team - Review
high-latency.mdwith team - Review
postgres-down.mdwith DBA - Review
redis-down.mdwith team - Review
high-cpu.mdwith team - Review
high-memory.mdwith team
- Change default Grafana admin password
- Restrict Prometheus access (internal only)
- Restrict Alertmanager access (internal only)
- Configure Grafana authentication (LDAP/OAuth)
- Enable HTTPS for Grafana
- Set up firewall rules
- Review and restrict network access
- Set up Prometheus data backup
- Test backup restoration
- Document backup procedures
- Set up Grafana dashboard backup
- Document recovery procedures
- Set up alerts for Prometheus disk usage
- Set up alerts for Prometheus scrape failures
- Monitor Grafana availability
- Monitor Alertmanager notification failures
- Set up meta-monitoring dashboard
- Define on-call rotation
- Set up PagerDuty schedules
- Configure escalation policies
- Test incident response procedures
- Conduct tabletop exercise
- Document communication procedures
- Schedule regular backup verification
- Plan for Prometheus data retention
- Set up log rotation
- Document update procedures
- Plan for capacity growth
- Review scrape intervals
- Optimize recording rules
- Set appropriate retention periods
- Monitor Prometheus resource usage
- Tune alert evaluation intervals
- Monitor alert accuracy (false positives/negatives)
- Adjust alert thresholds if needed
- Gather team feedback on dashboards
- Document any issues encountered
- Update runbooks based on real incidents
- Review alert fatigue
- Optimize dashboard layouts
- Add custom business metrics
- Conduct incident response drill
- Review and update documentation
- Review monitoring coverage
- Update alert thresholds based on trends
- Review and update runbooks
- Conduct team training
- Plan for improvements
- Mean Time to Detect (MTTD) < 2 minutes
- Mean Time to Resolve (MTTR) < 15 minutes
- Alert accuracy > 95%
- Dashboard load time < 3 seconds
- Prometheus scrape success rate > 99%
- Team regularly reviews dashboards
- Incidents resolved using runbooks
- On-call engineers trained
- Documentation kept up-to-date
- Continuous improvement process in place
- Services not starting: Check logs with
docker-compose logs - No metrics: Verify backend
/metricsendpoint - Prometheus not scraping: Check network connectivity
- Grafana no data: Verify Prometheus datasource
- Alerts not firing: Check Alertmanager configuration
- Notifications not received: Verify webhook URLs
- DevOps Engineer: _________________ Date: _______
- Backend Engineer: ________________ Date: _______
- SRE: ____________________________ Date: _______
- Engineering Manager: _____________ Date: _______
- Product Owner: __________________ Date: _______
- Security Team: ___________________ Date: _______
Use this space to document any deviations from the checklist or additional steps taken:
[Add notes here]
Checklist Version: 1.0 Last Updated: 2024 Next Review: [Date]