extensions:
  health_check:
    endpoint: 0.0.0.0:13133

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

processors:
  memory_limiter:
    check_interval: 1s
    limit_mib: 256
    spike_limit_mib: 64
  transform/roster_allowlist:
    error_mode: propagate
    trace_statements:
      - context: resource
        statements:
          - keep_keys(attributes, ["service.name", "service.namespace", "service.version", "deployment.environment.name"])
      - context: span
        statements:
          - keep_keys(attributes, ["db.system.name", "error.type", "gen_ai.operation.name", "gen_ai.provider.name", "gen_ai.request.model", "gen_ai.response.id", "gen_ai.usage.input_tokens", "gen_ai.usage.output_tokens", "http.request.method", "http.response.status_code", "http.route", "mcp.method.name", "mcp.tool.name", "roster.connector.kind", "roster.db.attempt", "roster.db.mode", "roster.db.operation", "roster.job.refresh_scope", "roster.job.target_type", "roster.operation", "roster.outcome", "roster.request.id", "roster.resolve.mode", "roster.surface"])
    metric_statements:
      - context: resource
        statements:
          - keep_keys(attributes, ["service.name", "service.namespace", "service.version", "deployment.environment.name"])
      - context: datapoint
        statements:
          - keep_keys(attributes, ["db.system.name", "gen_ai.operation.name", "gen_ai.provider.name", "gen_ai.token.type", "http.request.method", "http.route", "mcp.tool.name", "roster.connector.kind", "roster.deployment.mode", "roster.job.type", "roster.operation", "roster.outcome", "roster.queue.state", "roster.resolve.mode", "roster.surface", "roster.telemetry.enabled", "roster.telemetry.signal", "service.version"])
  batch:
    send_batch_size: 512
    send_batch_max_size: 1024
    timeout: 2s

exporters:
  otlphttp/tempo:
    endpoint: http://tempo:4318
    tls:
      insecure: true
  prometheus:
    endpoint: 0.0.0.0:9464
    enable_open_metrics: true
    resource_to_telemetry_conversion:
      enabled: true

service:
  extensions: [health_check]
  telemetry:
    logs:
      level: info
  pipelines:
    traces:
      receivers: [otlp]
      processors: [memory_limiter, transform/roster_allowlist, batch]
      exporters: [otlphttp/tempo]
    metrics:
      receivers: [otlp]
      processors: [memory_limiter, transform/roster_allowlist, batch]
      exporters: [prometheus]
