Routing

Description

This connector routes logs, metrics, or traces to different pipeline paths based on OTTL conditions. Telemetry is evaluated against each route in order and sent to the first matching route. If no condition matches, telemetry flows to the last route without a condition (acting as a default).

Use

Use this connector to:

  • Split telemetry by environment, region, tenant, or any resource/record attribute

  • Send different severity levels to different destinations (e.g., errors to a dedicated store, debug logs to cheap storage)

  • Route specific services or namespaces to specialized processing pipelines

  • Fan out telemetry to multiple destinations based on content

Supported Types

Metrics
Logs
Traces

Each selected input type is routed independently. For example, selecting Logs and Traces creates separate routing tables for each.

Configuration

Field
Description

Telemetry Types

Select which signal types to route: Logs, Metrics, Traces. Multiple types can be selected.

Routes

An ordered list of routes. Each route can have an optional OTTL condition. See route fields below.

Route Fields

Field
Description

Condition

An OTTL condition that determines whether telemetry matches this route. If omitted, the route matches all remaining telemetry (acts as default).

Routes are evaluated in order. Telemetry is sent to the first route whose condition matches. A route without a condition should be placed last to catch all unmatched telemetry.

OTTL Condition Context

Conditions are automatically evaluated in the appropriate context for each telemetry type:

Telemetry Type
Context

Logs

log

Metrics

datapoint

Traces

span

Resource-level attributes are accessible in all contexts using resource.attributes["key"].

Example Configurations

Route Logs by Severity

Send error logs to one destination and everything else to another.

  • Telemetry Types: Logs

  • Route 1 Condition: severity_number >= SEVERITY_NUMBER_ERROR

  • Route 2: (no condition — catches all remaining logs)

Route Traces by Environment

Separate production and non-production traces.

  • Telemetry Types: Traces

  • Route 1 Condition: resource.attributes["deployment.environment"] == "production"

  • Route 2: (no condition — catches all remaining traces)

Route Metrics by Service Name

Send metrics from specific services to dedicated pipelines.

  • Telemetry Types: Metrics

  • Route 1 Condition: resource.attributes["service.name"] == "checkout-service"

  • Route 2 Condition: resource.attributes["service.name"] == "payment-service"

  • Route 3: (no condition — catches all remaining metrics)

Route Logs by Namespace

Split Kubernetes logs by namespace for team-based routing.

  • Telemetry Types: Logs

  • Route 1 Condition: resource.attributes["k8s.namespace.name"] == "frontend"

  • Route 2 Condition: resource.attributes["k8s.namespace.name"] == "backend"

  • Route 3: (no condition — catches all remaining logs)

Technical Notes

  • Errors in OTTL condition evaluation are silently ignored. Telemetry that fails condition evaluation will fall through to subsequent routes.

  • Each route creates a separate sub-pipeline. Processors and destinations can be configured independently per route in the Bindplane pipeline editor.

  • The routing connector requires Bindplane OTel Collector v1.69.0 or later.

Last updated

Was this helpful?