OpenTelemetry Collector

The OpenTelemetry Collector is the recommended way to send data to Unblind. It allows you to buffer, process, and export data to us alongside your existing tools (like Datadog or Prometheus).

Configuration

Add the following to your config.yaml:

exporters:
  otlp_http/unblind:
    endpoint: "https://otlp.unblind.dev"
    headers:
      Authorization: "Bearer <YOUR_API_KEY>"

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp_http/unblind]
    logs:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp_http/unblind]

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
processors:
  # Extract tenant ID from environment variable
  resource/tenant_id:
    attributes:
      - key: tenant.id
        value: ${env:TENANT_ID}
        action: upsert

service:
  pipelines:
    metrics:
      # Add processor to the pipeline
      processors: [batch, resource/tenant_id]
      exporters: [otlp_http/unblind]

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.

# Add the 'filter' processor to your config.yaml
# Docs: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/filterprocessor
processors:
  filter/include_metrics:
    error_mode: ignore
    metrics:
      include:
        match_type: strict
        metric_names:
          - system.cpu.time
          - system.memory.usage
          - http.server.request.duration

service:
  pipelines:
    metrics:
      # Add processor to the pipeline
      processors: [batch, filter/include_metrics]
      exporters: [otlp_http/unblind]

Was this page helpful?