examples/otel-dashboards/datadog/README.md
This directory contains a pre-configured Datadog dashboard for monitoring Daytona Sandbox resources (CPU, Memory, Disk) and organization-level quota usage. Metrics are ingested into Datadog via OpenTelemetry (daytona.sandbox.*).
The dashboard is organized into collapsible groups (one per topic):
Datadog exposes a native OTLP intake endpoint, so you can point Daytona's OTLP destination directly at it — no Datadog Agent required.
https://otlp.datadoghq.comhttps://otlp.datadoghq.euhttps://otlp.us3.datadoghq.comhttps://otlp.us5.datadoghq.comhttps://otlp.ap1.datadoghq.comdd-api-key = <YOUR_DATADOG_API_KEY>Note Datadog's OTLP metrics intake requires delta temporality for cumulative metric types (counters, histograms). Daytona's sandbox and organization metrics are all gauges, so they are accepted as-is. If you also export your own cumulative application metrics from inside sandboxes, configure your SDK to use delta temporality (
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=delta). OTLP traces intake is in Preview at Datadog and may require enabling for your account.
service.name → the reserved service tag (used to group/filter sandboxes)region.id → the region.id tag (used on the Organization Quotas page)organization.id → the organization.id tagIf a tag doesn't resolve in the dashboard, open Metrics → Summary, search for daytona.sandbox.cpu.utilization, and confirm the exact tag keys Datadog assigned — then adjust the template variables/queries to match.
dashboard.json.dashboard.json (or upload the file) and confirm the import.curl -X POST "https://api.datadoghq.com/api/v1/dashboard" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \
-d @dashboard.json
Use the API host matching your Datadog site (e.g. api.datadoghq.eu, api.us3.datadoghq.com).
The dashboard ships with two template variables for filtering:
$service — filter by the service tag (individual sandbox). Default: * (all).$region — filter by the region.id tag (used on the Organization Quotas page). Default: * (all).The overview tiles and per-resource lists are color-coded with these thresholds:
Per-sandbox metrics (prefixed with daytona.sandbox.):
| Metric | Unit | Description |
|---|---|---|
cpu.utilization | percent | CPU usage percentage (0–100) |
cpu.limit | cores | CPU cores limit |
memory.utilization | percent | Memory usage percentage (0–100) |
memory.usage | bytes | Memory used |
memory.limit | bytes | Memory limit |
filesystem.utilization | percent | Disk usage percentage (0–100) |
filesystem.usage | bytes | Disk space used |
filesystem.available | bytes | Disk space available |
filesystem.total | bytes | Total disk space |
Organization-level quota metrics (also prefixed with daytona.sandbox., tagged by region.id):
| Metric | Unit | Description |
|---|---|---|
used_cpu / total_cpu | cores | CPU consumed / quota |
used_ram / total_ram | GiB | Memory consumed / quota |
used_storage / total_storage | GiB | Storage consumed / quota |
Memory/disk byte metrics are divided by
1073741824in the dashboard to display GB.
daytona.sandbox.dd-api-key header is set.service / region.id tags exist on the metrics (tag keys can differ depending on your collector's attribute mapping). Adjust template variables/queries if needed.jq . dashboard.json.To modify the dashboard:
dashboard.json with your customized version.