Health Check Endpoint
Sunschool includes a built-in health check endpoint for monitoring and load balancer integration. Fromserver/auth.ts:
Test Health Endpoint
Railway Health Checks
FromENGINEERING.md:
Health check at /api/healthcheck (60s timeout, restart on failure, max 3 retries)
Railway configuration in railway.json:
- Railway pings
/api/healthcheckevery 30 seconds - 60-second timeout for response
- If 3 consecutive failures, container restarts
- Zero-downtime during health check failures
Custom Health Checks
Extend the health check with additional diagnostics:Logging
Server Logs
Sunschool usesconsole.log for application logging:
Log Levels
- Development
- Production
Structured Logging
Not implemented by default. Add structured logging for production monitoring.
Railway Logs
Access logs via Railway CLI:- Railway Free: 7 days
- Railway Pro: 30 days
Error Tracking
Server Errors
Fromserver/middleware/auth.ts:
Error Response Format
Production (NODE_ENV=production):Sentry Integration
Recommended for production. Track errors with context and stack traces.
Performance Monitoring
Database Connection Pooling
Fromserver/db.ts:
Response Times
Track endpoint performance:Memory Usage
Application Metrics
User Activity
Fromserver/services/activity-service.ts (if implemented):
Lesson Generation Metrics
Alerting
Railway Alerts
Configure alerts in Railway dashboard:- Health check failures - Email/Slack on 3+ consecutive failures
- High memory usage - Alert when > 90% of allocated memory
- Deployment failures - Notify on failed builds
- Database connection issues - Alert on connection pool exhaustion
Custom Alerts
Email on critical errors:Slack Integration
Monitoring Dashboard
Recommended Tools
- Grafana + Prometheus
- Datadog
- New Relic
Full-featured monitoring stack:Metrics:
- Request rates and latencies
- Database connection pool
- Memory and CPU usage
- Custom business metrics
Custom Metrics Endpoint
Troubleshooting with Logs
Common Log Patterns
Migration failures
Migration failures
Log pattern:Diagnosis: Migration partially applied or run twice.Fix: Check
drizzle_migrations table, manually reconcile schema.Database connection errors
Database connection errors
Log pattern:Diagnosis: PostgreSQL not running or wrong DATABASE_URL.Fix: Verify database status and connection string.
AI provider failures
AI provider failures
Log pattern:Diagnosis: Bittensor unavailable, automatic fallback working.Action: Monitor fallback frequency, consider disabling Bittensor if unreliable.
Memory warnings
Memory warnings
Log pattern:Diagnosis: Memory leak or insufficient memory allocation.Fix: Increase memory limit (
NODE_OPTIONS=--max-old-space-size=2048) or fix leak.Best Practices
Next Steps
Troubleshooting
Debug common issues with logs and metrics
Security
Secure monitoring endpoints and log sensitive data