Monitoring & Observability System
Complete monitoring solution for the Node webhook system with Prometheus, Grafana, and Sentry.
π Features
- Real-time Metrics: Track webhooks, queues, workers, and Redis
- Error Tracking: Automatic error capture with Sentry
- Visualizations: Pre-built Grafana dashboards
- Health Checks: API endpoints for load balancers
- Alerts: Configurable alerts for critical issues
- Performance Monitoring: Latency and throughput tracking
π Quick Start
1. Install Dependencies
npm install
2. Configure Sentry (Optional)
# Add to .env.local
SENTRY_DSN=https://your-key@sentry.io/project-id
3. Start Monitoring Stack
# Start Prometheus, Grafana, Redis Exporter
npm run monitoring:start
4. Start Workers
npm run workers
5. Test System
# Run monitoring tests
npm run monitoring:test
π Access URLs
| Service | URL | Credentials |
|---|---|---|
| Metrics API | http://localhost:3000/api/metrics | - |
| Health Check | http://localhost:3000/api/health | - |
| Prometheus | http://localhost:9090 | - |
| Grafana | http://localhost:3003 | admin/admin |
| Bull Board | http://localhost:3001 | - |
π Available Scripts
# Start monitoring stack
npm run monitoring:start
# Stop monitoring stack
npm run monitoring:stop
# View logs
npm run monitoring:logs
# Test monitoring system
npm run monitoring:test
π Metrics Collected
Webhook Metrics
- Total webhooks received/processed
- Processing success/failure rates
- Processing duration (p50, p95, p99)
- Enqueue latency
- Duplicate detection
Queue Metrics
- Queue size (waiting jobs)
- Active jobs
- Delayed jobs
- Failed jobs
- Retry counts
Worker Metrics
- Health status
- Restart counts
- Concurrency settings
Redis Metrics
- Connection errors
- Operation latency
- Memory usage
π― Key Dashboards
Grafana Dashboard Panels
- Webhook Receive Rate - Incoming webhooks/second
- Processing Rate - Success vs failures
- Queue Size - Jobs waiting by queue
- Failed Jobs - Failed job counts
- Processing Duration - Latency percentiles
- Worker Health - All worker status
Prometheus Queries
# Webhook rate
rate(webhooks_received_total[5m])
# Error rate
rate(webhook_processing_failures_total[5m]) / rate(webhooks_received_total[5m])
# p95 latency
histogram_quantile(0.95, rate(webhook_processing_duration_seconds_bucket[5m]))
π¨ Alerts
Pre-configured alerts in monitoring/alerts.yml:
- High webhook failure rate (> 10%)
- Growing queue size (> 500 jobs)
- High failed job count (> 100)
- Worker unhealthy
- Redis connection errors
- Slow processing (p95 > 30s)
π₯ Health Checks
Detailed Health Check
curl http://localhost:3000/api/health | jq
Simple Health Check
curl http://localhost:3000/api/health?simple=true
π Documentation
- Full Monitoring Guide - Complete documentation
- Quick Start Guide - 5-minute setup
- Implementation Details - Technical details
π§ Configuration
Prometheus
Edit monitoring/prometheus.yml to customize:
- Scrape intervals
- Retention periods
- Target endpoints
Grafana
- Access http://localhost:3001
- Login: admin/admin
- Import dashboard from
monitoring/grafana-dashboard.json - Configure data sources and alerts
Sentry
# Environment variables
SENTRY_DSN=your-dsn
SENTRY_DEV_MODE=false # Set true for dev
π Troubleshooting
No Metrics in Prometheus
# Check metrics endpoint
curl http://localhost:3000/api/metrics
# Check Prometheus targets
open http://localhost:9090/targets
Grafana Shows No Data
- Add Prometheus data source
- URL:
http://prometheus:9090 - Save & Test
- Import dashboard
Sentry Not Working
# Check DSN is set
echo $SENTRY_DSN
# Check worker logs
npm run workers | grep Sentry
π¦ Architecture
βββββββββββββββ
β Webhooks β
ββββββββ¬βββββββ
β
βΌ
βββββββββββββββ ββββββββββββ
β Queues βββββββ€ Redis β
ββββββββ¬βββββββ ββββββ¬ββββββ
β β
βΌ βΌ
βββββββββββββββ ββββββββββββ
β Workers β β Exporter β
ββββββββ¬βββββββ ββββββ¬ββββββ
β β
βΌ βΌ
βββββββββββββββ ββββββββββββ
β Metrics API ββββββΊβPrometheusβ
βββββββββββββββ ββββββ¬ββββββ
β β
βΌ βΌ
βββββββββββββββ ββββββββββββ
β Sentry β β Grafana β
βββββββββββββββ ββββββββββββ
π Best Practices
-
Monitor Key Metrics
- Webhook failure rate
- Queue backlog
- Worker health
- Processing latency
-
Set Up Alerts
- Configure notification channels
- Tune alert thresholds
- Create escalation policies
-
Regular Reviews
- Check dashboards daily
- Review Sentry errors
- Analyze performance trends
-
Capacity Planning
- Track growth trends
- Plan for scaling
- Optimize resource usage
π What's Monitored
All 5 Webhook Queues
β
webhook:shopify
β
webhook:slack
β
webhook:outlook
β
webhook:gmail
β
webhook:meta
Each Queue Tracks
- Receive rate
- Processing rate
- Success/failure ratio
- Queue depth
- Worker health
- Processing latency
- Error types
- Retry counts
π― Success Criteria
System is working correctly when:
- β Metrics endpoint returns data
- β Health check shows "healthy"
- β Prometheus scraping successfully
- β Grafana shows charts
- β Workers report healthy status
- β Errors appear in Sentry
π Support
For issues or questions:
- Check documentation in
docs/ - Review troubleshooting section
- Check service logs:
npm run monitoring:logs - Test system:
npm run monitoring:test
π Updates
To update the monitoring system:
# Pull latest changes
git pull
# Update dependencies
npm install
# Restart monitoring stack
npm run monitoring:stop
npm run monitoring:start
# Restart workers
npm run workers
Status: β
Production Ready
Version: 1.0.0
Last Updated: November 19, 2025