Skip to main content
This guide provides Level 1 (L1) diagnostic steps for troubleshooting issues in on-premise Odin AI deployments. These steps help identify common problems with containers, databases, services, and system resources.
Prerequisites: You need SSH access to the customer’s VM/server where Odin AI is deployed, and appropriate permissions to run Docker commands and access container logs.

Container Status Checks

Check All Container Status

First, verify which containers are running and their health status:
Expected Containers:
  • web - Frontend application
  • api or fastapi_backend - Backend API server
  • worker or celery_worker - Celery worker(s)
  • redis - Redis cache
  • rabbitmq - RabbitMQ message queue
  • supabase-studio - Supabase Studio
  • supabase-kong - Kong API Gateway
  • supabase-auth - Auth service
  • supabase-db or postgres - PostgreSQL database
  • Other Supabase services (storage, meta, etc.)
What to Check:
  • All containers should be in “Up” status
  • No containers should be in “Restarting” or “Exited” state
  • Health checks should show “healthy” where applicable

Restart Failed Containers

If containers are stopped or restarting:

Backend Container Logs

Check API Container Logs

The backend API container logs contain critical information about errors, database connections, and service issues:
What to Look For:
  • Database connection errors
  • Redis connection failures
  • RabbitMQ connection issues
  • Authentication errors
  • API endpoint errors (500, 503, etc.)
  • Import/export errors
  • Knowledge Base processing errors
  • Worker task failures

Check Worker Container Logs

Worker containers handle background tasks (KB processing, embeddings, etc.):
What to Look For:
  • Task execution errors
  • Memory issues
  • Timeout errors
  • Database connection errors in workers
  • Knowledge Base sync failures
  • Embedding generation errors

Check Web Container Logs

Frontend container logs can reveal UI and API connection issues:
What to Look For:
  • Build errors
  • API connection failures
  • Environment variable issues
  • Port binding errors

Database Status

Check PostgreSQL/Supabase Database Status

What to Check:
  • Database container is running
  • No connection errors in logs
  • Database is not full (check disk space)
  • Active connections are within limits
  • No long-running queries blocking operations

Check Database Connectivity from API

Check Database Migrations

Redis Status

Check Redis Container

What to Check:
  • Redis is responding to ping
  • Memory usage is within limits
  • No connection errors
  • No eviction errors (memory full)

Test Redis from API Container

RabbitMQ Status

Check RabbitMQ Container

What to Check:
  • Container is running
  • No connection errors
  • Queues are processing messages
  • No message backlog

Check RabbitMQ from API

System Resources

Check Disk Space

Low disk space can cause database, storage, and container issues:
What to Check:
  • Root partition has sufficient space (>20% free recommended)
  • Docker volumes are not full
  • Database data directory has space
  • Supabase storage has space

Check Memory Usage

What to Check:
  • System has available memory
  • Containers are not hitting memory limits
  • No OOM (Out of Memory) kills in logs

Check CPU Usage

Network Connectivity

Check Container Network

Check Port Availability

Environment Variables

Check Environment Configuration

What to Check:
  • Database connection strings are correct
  • Redis and RabbitMQ hostnames are correct
  • API URLs are properly configured
  • Required environment variables are set
  • No typos in variable names

File Permissions

Check File and Directory Permissions

What to Check:
  • Application directories are readable
  • Docker socket has correct permissions
  • Volume mounts have proper permissions
  • Certificate files are accessible

Service-Specific Checks

Knowledge Base Issues

If Knowledge Base is not updating or processing:

Chat/Agent Issues

Authentication Issues

Common Error Patterns

Database Connection Errors

Symptoms:
  • “Connection refused” errors
  • “Too many connections” errors
  • Timeout errors
Diagnostic Steps:
  1. Check database container is running: docker ps | grep db
  2. Check database logs: docker logs supabase-db
  3. Check connection limits: docker exec supabase-db psql -U postgres -c "SHOW max_connections;"
  4. Check active connections: docker exec supabase-db psql -U postgres -c "SELECT count(*) FROM pg_stat_activity;"
  5. Verify DATABASE_URL in environment variables

Redis Connection Errors

Symptoms:
  • “Connection refused” to Redis
  • Cache misses
  • Session issues
Diagnostic Steps:
  1. Check Redis container: docker ps | grep redis
  2. Test Redis: docker exec redis redis-cli ping
  3. Check Redis logs: docker logs redis
  4. Verify Redis hostname in environment variables

Worker Task Failures

Symptoms:
  • Tasks not completing
  • Knowledge Base not syncing
  • Background jobs failing
Diagnostic Steps:
  1. Check worker logs: docker logs worker
  2. Check worker container status: docker ps | grep worker
  3. Check RabbitMQ queues: Access RabbitMQ management UI
  4. Check for memory issues: docker stats worker

Storage/File Upload Issues

Symptoms:
  • File uploads failing
  • “File too large” errors
  • Storage quota exceeded
Diagnostic Steps:
  1. Check disk space: df -h
  2. Check Supabase storage logs: docker logs supabase-storage
  3. Check file size limits in Supabase config
  4. Check storage bucket configuration

Quick Diagnostic Script

Create a diagnostic script to run all checks at once:
Save as diagnostics.sh, make executable: chmod +x diagnostics.sh, and run: ./diagnostics.sh

Escalation Information

When escalating to L2 support, provide:
  1. Container Status: Output of docker ps -a
  2. Recent Logs: Last 100-200 lines from relevant containers
  3. System Resources: Output of df -h and free -h
  4. Error Messages: Specific error messages from logs
  5. Configuration: Environment variable names (not values) that are set
  6. Timeline: When the issue started
  7. Impact: What functionality is affected
Contact Support: support@getodin.ai

Additional Resources