Database connection issues
PostgreSQL connection failed
Error message:Database is not running
Database is not running
Verify PostgreSQL is running:
Incorrect database credentials
Incorrect database credentials
Verify your Test the connection manually:
.env file has the correct credentials:Database does not exist
Database does not exist
Create the database:
Network/firewall issues
Network/firewall issues
Check if PostgreSQL is listening on the correct port:Verify firewall allows connections:For remote databases, ensure
pg_hba.conf allows connections from your IP.Database ping failed
Error message:The service calls
pool.Ping(ctx) on startup. If this fails, verify the database is accepting connections and not under heavy load.Redis connection issues
Redis connection failed
Error message:Redis is not running
Redis is not running
Verify Redis is running:Test Redis connection:
Incorrect Redis configuration
Incorrect Redis configuration
Verify your Test connection with redis-cli:
.env file:Redis requires password
Redis requires password
If Redis is password-protected, set Test with password:
REDIS_PASS in .env:Connection timeout
Connection timeout
The service uses a 10-second dial timeout. If Redis is slow to respond, check:Consider increasing pool size in
/home/daytona/workspace/source/cmd/commands/guard.go:46 if you have many concurrent operations.Migration errors
TimescaleDB extension not found
Error message:Migration already applied
Error message:Migration rollback needed
Rollback the last migration:URL monitoring issues
URL not added - “url is required”
Error message:“contact_email is required”
Error message:“Error parsing http method”
Error message:getpostputpatchdelete
“Error parsing frequency”
Error message:ten_secondsthirty_secondsone_minutefive_minutes(note the plural)thirty_minutesone_hourtwelve_hourstwenty_four_hours
URL not being monitored after adding
Possible causes:Watchdog service is not running
Watchdog service is not running
Start the service:Or check if it’s running:
Redis refresh failed
Redis refresh failed
When you add a URL, the system calls Check:
RefreshRedisInterval (see /home/daytona/workspace/source/cmd/commands/add.go:101). If this fails:- Redis is running and accessible
- No Redis connection errors in logs
- Redis has available memory
URL status is pending
URL status is pending
Newly added URLs have status After the first check, status should change to
pending until the first check completes. This is normal. Wait for one monitoring interval to pass, then check status:healthy or unhealthy.Email notification issues
Notifications not being sent
Possible causes:Incorrect SMTP configuration
Incorrect SMTP configuration
Verify your Test SMTP connection:
.env SMTP settings:Firewall blocking SMTP port
Firewall blocking SMTP port
Check if port 587 (or 25/465) is open:For cloud servers, verify security group/firewall rules allow outbound SMTP.
No state transitions
No state transitions
Emails are only sent when a URL changes state:
- Healthy → Unhealthy
- Unhealthy → Healthy
Event listener not registered
Event listener not registered
Verify event listeners are registered in the orchestrator. Check logs for listener registration messages.The notification listener should be registered during orchestrator initialization.
Performance issues
High CPU usage
Possible causes:Too many monitored URLs
Too many monitored URLs
Check how many URLs you’re monitoring:If monitoring hundreds of URLs with high-frequency intervals (e.g.,
ten_seconds), consider:- Increasing
MAXIMUM_WORK_POOL_SIZEin.env - Using longer intervals for non-critical URLs
- Deploying multiple Watchdog instances
HTTP request timeouts too long
HTTP request timeouts too long
Reduce This prevents slow URLs from blocking workers.
HTTP_REQUEST_TIMEOUT in .env:Database connection pool exhausted
Database connection pool exhausted
The default pgxpool configuration may be insufficient for high-load scenarios. Consider increasing the pool size by modifying the database initialization in
/home/daytona/workspace/source/cmd/commands/guard.go:65.High memory usage
Possible causes:Large batch sizes
Large batch sizes
Reduce
SUPERVISOR_POOL_FLUSH_BATCHSIZE in .env:Redis memory usage
Redis memory usage
Check Redis memory:Set a max memory policy:
Too many child workers
Too many child workers
Reduce
MAXIMUM_CHILD_WORKERS in .env:Slow response times
Possible causes:Database performance
Database performance
Check database performance:Consider:
- Adding indexes on frequently queried columns
- Running
VACUUM ANALYZEperiodically - Archiving old time-series data from
url_statustable
Network latency to monitored URLs
Network latency to monitored URLs
Check if monitored URLs are slow:If URLs are consistently slow, increase
HTTP_REQUEST_TIMEOUT to prevent false negatives.Command-line issues
”ID is required” when removing URL
Error message:“page must be greater than 0”
Error message:Command alias conflict
Issue: Bothadd and analysis commands use the a alias (see /home/daytona/workspace/source/cmd/commands/add.go:116 and analysis command).
Solution:
Use full command names instead of aliases:
Logging and debugging
Enable verbose logging
Watchdog useslog/slog for structured logging. The log level is controlled by APP_ENV:
View real-time logs
Debug database queries
Enable PostgreSQL query logging:Remember to disable query logging in production as it can impact performance and generate large log files.