# OpenTelemetry Collector config for voyage v4.1
# Receives OTLP/HTTP push from hooks/scripts/otel-export.mjs (port 4318)
# and exposes a Prometheus scrape endpoint at :8889 for the Prometheus
# container to pull voyage metrics.

receivers:
  otlp:
    protocols:
      http:
        endpoint: 0.0.0.0:4318
      grpc:
        endpoint: 0.0.0.0:4317

processors:
  batch:
    send_batch_size: 1024
    timeout: 5s
  # Conservative resource attribute limits — voyage emits small payloads but
  # we cap to prevent runaway label-cardinality blowing up Prometheus.
  memory_limiter:
    check_interval: 5s
    limit_mib: 256
    spike_limit_mib: 64

exporters:
  prometheus:
    endpoint: 0.0.0.0:8889
    namespace: voyage
    send_timestamps: true
    metric_expiration: 5m
    enable_open_metrics: true
  # Debug exporter — echoes every received metric to stderr. Useful for
  # local development; comment out in production to reduce log volume.
  debug:
    verbosity: detailed
    sampling_initial: 5
    sampling_thereafter: 200

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [prometheus, debug]
  telemetry:
    logs:
      level: info
