Skip to main content
The Edge distribution includes support for all protocols: Datadog APIs and OTLP. Use this when your environment sends telemetry in multiple formats.

Supported Endpoints

EndpointMethodProtocolDescription
/api/v2/logsPOSTDatadogLog ingestion
/api/v1/seriesPOSTDatadogMetrics ingestion
/v1/logsPOSTOTLPLog export
/v1/metricsPOSTOTLPMetrics export
/healthGET-Health check

Configuration

config.json
{
  "listen_address": "0.0.0.0",
  "listen_port": 8080,
  "upstream_url": "https://agent-http-intake.logs.datadoghq.com",
  "logs_url": "https://agent-http-intake.logs.datadoghq.com",
  "metrics_url": "https://api.datadoghq.com",
  "log_level": "info",
  "policy_providers": [
    {
      "id": "local",
      "type": "file",
      "path": "policies.json"
    }
  ]
}
You can configure separate upstream URLs for logs (logs_url) and metrics (metrics_url). If not specified, they fall back to upstream_url.

Running

docker run -d \
  --name edge \
  -p 8080:8080 \
  -v $(pwd)/config.json:/etc/edge/config.json \
  -v $(pwd)/policies.json:/etc/edge/policies.json \
  ghcr.io/usetero/edge:latest \
  /etc/edge/config.json

When to Use This Distribution

Use the Edge distribution when:
  • Mixed telemetry sources: Some applications use Datadog agents, others use OpenTelemetry
  • Migration: Transitioning from one protocol to another
  • Multi-vendor: Sending data to multiple backends that prefer different protocols
  • Flexibility: Want a single deployment that handles everything
For single-protocol environments, prefer the focused distributions: Focused distributions have a smaller binary size and attack surface.

Features

  • Handles Datadog /api/v2/logs and /api/v1/series endpoints
  • Handles OTLP /v1/logs and /v1/metrics endpoints
  • Policy-based filtering (DROP/KEEP) for logs and metrics
  • Separate upstream URLs for logs and metrics
  • Async policy loading (server starts immediately while policies load in background)
  • Fail-open behavior (errors pass data through unchanged)
  • Lock-free policy updates via atomic snapshots
  • Graceful shutdown with signal handling

Unified Policies

Policies work the same regardless of the incoming protocol. A log filter policy applies to both Datadog logs and OTLP logs.
{
  "id": "drop-debug",
  "name": "Drop debug logs from all sources",
  "log": {
    "match": [{ "log_field": "severity_text", "regex": "^(debug|DEBUG)$" }],
    "keep": "none"
  }
}
This policy drops debug logs whether they arrive via /api/v2/logs (Datadog) or /v1/logs (OTLP).

Protocol-Specific Filtering

To apply policies only to specific protocols, match on protocol-specific attributes:
{
  "id": "sample-datadog-agent-logs",
  "name": "Sample logs from Datadog agents",
  "log": {
    "match": [{ "log_attribute": "ddsource", "exists": true }],
    "keep": "10%"
  }
}
The ddsource attribute is specific to Datadog, so this policy only affects Datadog-format logs.

Resource Considerations

The Edge distribution:
  • Has a larger binary size than focused distributions
  • Loads all protocol modules at startup
  • Uses slightly more memory
For most deployments, this overhead is negligible. Consider focused distributions only if you’re running Edge in constrained environments (embedded systems, very small containers).

Next Steps