Vector

Vector is a popular high-performance observability pipeline. You can use the opentelemetry sink to offload data to Unblind.

Configuration

Add the following to your Vector configuration:

# (Optional) OTLP HTTP source, skip if you have other source
sources:
  otlp:
    type: opentelemetry
    http:
      address: "0.0.0.0:4318"
    grpc:
      address: "0.0.0.0:4317"

    # Reference: https://vector.dev/highlights/2025-09-23-otlp-support/
    use_otlp_decoding: true

sinks:
  # Send metrics to Unblind
  unblind_metrics:
    type: opentelemetry
    inputs:
      - otlp.metrics
    protocol:
      type: http
      uri: "https://otlp.unblind.dev/v1/metrics"
      compression: "gzip"
      encoding:
        codec: otlp
    auth:
      strategy: bearer
      token: "${UNBLIND_API_KEY}"

  # Send logs to Unblind
  unblind_logs:
    type: opentelemetry
    inputs:
      - otlp.logs
    protocol:
      type: http
      uri: "https://otlp.unblind.dev/v1/logs"
      method: post
      compression: "gzip"
      encoding:
        type: http
        codec: otlp
    auth:
      strategy: bearer
      token: "${UNBLIND_API_KEY}"

Identifying Tenants

Unblind isolates data into per-tenant datasets by detecting the tenant.id attribute in your telemetry data. The Unblind data pipeline then strips this value internally and uses it to determine which tenant each piece of telemetry belongs to.

The attribute can be set at the Resource level (recommended for resources owned by the tenant) or the Attribute level (useful for multi-tenant scenarios). If both are present, the Attribute-level identifier takes precedence.

Tenant Context Examples
transforms:
  add_tenant_id:
    type: remap
    inputs:
      - your_source
    source: |
      .tenant.id = get_env_var!("TENANT_ID")

sinks:
  unblind_metrics:
    type: opentelemetry
    inputs:
      - add_tenant_id
    protocol:
      type: http
      uri: "https://otlp.unblind.dev/v1/metrics"
      compression: "gzip"
      encoding:
        codec: otlp
    auth:
      strategy: bearer
      token: "${UNBLIND_API_KEY}"

Filtering Metrics

You may not want to send every single metric your application emits. To reduce noise and manage costs, you can filter your telemetry pipeline to only forward high-value metrics (e.g., CPU, Memory, or specific Business KPIs) to Unblind.

Below is an example of how to configure an "Allowlist", dropping everything except the specific metrics you define.

# Use a filter transform before your sink
# Docs: https://vector.dev/docs/reference/configuration/transforms/filter/
allow_specific_metrics:
  type: filter
  inputs:
    - metrics_source
  condition: |
    includes(["system.cpu.time", "system.memory.usage"], .name)

sinks:
  unblind:
    type: opentelemetry
    inputs:
      - allow_specific_metrics
    endpoint: https://otlp.unblind.dev

Was this page helpful?