Monitor Varnish Orca with Prometheus, Tempo, and Grafana. Track cache performance, registry traffic, and artifact metrics.
Note: If using the complete docker-compose example below, Orca is included - no separate installation needed. If you’re setting up monitoring for an existing Orca installation, see the installation guide.
Varnish Orca includes built-in OpenTelemetry (OTLP) support for exporting metrics and traces. This tutorial sets up a complete observability stack:
Licensing:
sup-otel and vmod-otel addons (Premium feature)The dashboard provides insights into:
Everything is pre-configured. Just clone and run:
git clone https://github.com/varnish/orca.git
cd orca/docs/tutorials/grafana
docker compose up -d
This starts:
Metrics work immediately. To enable tracing, uncomment the volumes and license config in docker-compose.yaml and mount your license file (needs sup-otel and vmod-otel addons). See the license tutorial for details.
Generate some traffic, then open Grafana at http://localhost:3000 (admin/admin).
If you already have Orca running and want to add monitoring:
Configure OTLP export in your Orca config file (typically /etc/varnish-orca/config.yaml):
otel:
service_name: varnish-orca
metrics:
enabled: true
endpoint: http://your-prometheus:9090/api/v1/otlp/v1/metrics
protocol: http/protobuf
(Optional) Enable tracing by adding a license with sup-otel and vmod-otel addons and configuring the tracing endpoint.
See the OTEL configuration reference for all available options and the license tutorial for how to add a license.
Restart Orca:
sudo systemctl restart varnish-orca
Then set up Prometheus, Tempo, and Grafana using the example configs as reference.
Check Prometheus is receiving data:
curl http://localhost:9090/api/v1/query?query=varnish_main_client_requests
Docker Compose setup:
# Check Orca is running
docker compose ps
# Check Prometheus logs
docker compose logs prometheus
# Check Orca is pushing metrics
docker compose logs orca | grep -i otlp
No data in dashboard:
job label matches what your dashboard expects (set via service_name in config)Connection refused:
http://prometheus:9090)http://localhost:9090 or actual hostname