Skip to main content
CVAT provides built-in monitoring and logging capabilities through an integrated analytics stack based on ClickHouse, Vector, and Grafana.

Analytics Stack Overview

The analytics infrastructure consists of:
  • ClickHouse: Time-series database for storing events and logs
  • Vector: Log aggregation and forwarding
  • Grafana: Visualization and dashboards
  • Traefik: Access logs and routing
Defined in docker-compose.yml:332-419.

Enabling Analytics

Enable Analytics in Docker Compose

Set the environment variable in docker-compose.yml:99 or in your override file:
Alternatively, set as a shell variable:

Django Settings

Analytics are controlled by the ANALYTICS_ENABLED setting in cvat/settings/base.py:177-180:

ClickHouse Configuration

ClickHouse stores analytics events and logs.

Environment Variables

Defined in docker-compose.yml:31-36:

Django Configuration

ClickHouse settings in cvat/settings/base.py:701-709:

ClickHouse Container

Defined in docker-compose.yml:332-343:

Vector Log Aggregation

Vector collects logs from Django and forwards them to ClickHouse.

Vector Configuration

Source: components/analytics/vector/vector.toml:1-47

Event Fields

Vector forwards these fields to ClickHouse:
  • scope: Event scope/category
  • obj_name: Object name
  • obj_id: Object ID
  • obj_val: Object value
  • source: Event source
  • timestamp: Event timestamp
  • count: Event count
  • duration: Event duration
  • project_id: Associated project ID
  • task_id: Associated task ID
  • job_id: Associated job ID
  • user_id: User ID
  • user_name: Username
  • user_email: User email
  • org_id: Organization ID
  • org_slug: Organization slug
  • payload: Additional event data
  • access_token_id: Access token ID

Vector Container

Defined in docker-compose.yml:345-364:

Django Logging Configuration

Logging setup in cvat/settings/base.py:481-553:

Log Handler

Log Files

File-based logging handlers:
Logs are stored in the cvat_logs volume mounted at /home/django/logs.

Log Level Configuration

See cvat/settings/base.py:532.

Grafana Dashboards

Grafana provides visualization of analytics data stored in ClickHouse.

Accessing Grafana

Grafana is accessible at:
Traefik routing defined in components/analytics/grafana_conf.yml.

Grafana Configuration

Grafana container in docker-compose.yml:366-419:

Anonymous Access

By default, Grafana allows anonymous access with admin role:
To restrict access, modify these settings in your docker-compose.override.yml:

Pre-built Dashboards

CVAT includes three dashboards in components/analytics/grafana/dashboards/:
  1. all_events.json: All events overview (default home dashboard)
  2. management.json: Management metrics
  3. monitoring.json: System monitoring

Custom Dashboards

To add custom dashboards:
  1. Create a dashboard JSON file
  2. Place it in components/analytics/grafana/dashboards/
  3. Restart Grafana:
The dashboard will be automatically provisioned.

Traefik Access Logs

Traefik logs all HTTP requests in JSON format.

Log Configuration

Defined in docker-compose.yml:275-287:

Log Rotation

Traefik logs are rotated automatically:
Logs are limited to 100MB per file with a maximum of 10 files.

Viewing Traefik Logs

Container Health Monitoring

CVAT includes health check endpoints.

Health Check Apps

Installed in cvat/settings/base.py:103-106:

Health Check Configuration

Disk usage threshold in cvat/settings/base.py:788:

Health Check Endpoint

Access health status:
Response includes:
  • Database connectivity
  • Cache availability
  • Disk usage
  • System resources (CPU, memory)

Monitoring with External Tools

Prometheus Integration

To export metrics to Prometheus:
  1. Install django-prometheus:
  1. Add to Django settings:
  1. Expose metrics endpoint in docker-compose.override.yml:

Datadog Integration

Add Datadog agent to your compose file:

Sentry Error Tracking

Add Sentry SDK to track errors:
  1. Install sentry-sdk:
  1. Configure in custom settings:

Log Management

Accessing Container Logs

Log Files Location

Application logs are stored in the cvat_logs volume:
Files:
  • cvat_server.log: Main application log
  • cvat_server_dataset.log: Dataset operations log

Extracting Logs from Volume

Log Retention

Rotating file handlers automatically manage log retention:
  • Server logs: 5 files × 50 MB = 250 MB max
  • Dataset logs: 3 files × 50 MB = 150 MB max

Performance Monitoring

Database Performance

Monitor PostgreSQL performance:

Redis Performance

Monitor Redis:

Container Resource Usage

Troubleshooting

Analytics Not Working

Check if analytics are enabled:
Verify ClickHouse is running:
Check Vector is forwarding logs:

Grafana Connection Issues

Test ClickHouse connectivity from Grafana:
Verify ClickHouse credentials:

High Disk Usage

Check volume sizes:
Clear ClickHouse data:

Best Practices

  1. Enable analytics: Always enable analytics in production for troubleshooting
  2. Monitor disk space: Set up alerts for disk usage thresholds
  3. Backup analytics data: Include ClickHouse in backup procedures
  4. Secure Grafana: Disable anonymous access in production
  5. Rotate logs: Ensure log rotation is working to prevent disk exhaustion
  6. Monitor container health: Set up external monitoring of health endpoints
  7. Review dashboards regularly: Check Grafana dashboards for anomalies

Additional Resources