Portal Community

The Stable Sections (Never Change)

# otel-collector-config.yaml — stable sections (same for all providers)

receivers:
  otlp:                              # Always the same — receives from BizFirstGO
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318

processors:
  memory_limiter:                    # Always the same
    check_interval: 5s
    limit_mib: 400
  batch:                             # Always the same
    send_batch_size: 1000
    timeout: 10s
  redaction:                         # Always the same — security controls
    allow_all_keys: true
    blocked_values_patterns:
      - "bearer [a-zA-Z0-9._-]{20,}"
  tail_sampling:                     # Always the same — cost control
    policies:
      - name: errors
        type: status_code
        status_code: {status_codes: [ERROR]}

The Exporter Section (Changes Per Provider)

# Self-Hosted (Loki + Prometheus + Tempo):
exporters:
  loki:
    endpoint: http://loki:3100/loki/api/v1/push
  prometheusremotewrite:
    endpoint: http://prometheus:9090/api/v1/write
  otlp/tempo:
    endpoint: http://tempo:4317

# ─────────────────── SWAP TO ───────────────────────────

# Grafana Cloud:
exporters:
  loki/cloud:
    endpoint: https://logs-prod-us-central1.grafana.net/loki/api/v1/push
    headers:
      Authorization: "Basic ${GRAFANA_CLOUD_TOKEN}"
  prometheusremotewrite/cloud:
    endpoint: https://prometheus-prod-01-us-central1.grafana.net/api/prom/push
    headers:
      Authorization: "Basic ${GRAFANA_CLOUD_TOKEN}"
  otlp/cloud-tempo:
    endpoint: tempo-prod-04-prod-us-east-0.grafana.net:443
    headers:
      Authorization: "Basic ${GRAFANA_CLOUD_TOKEN}"

# ─────────────────── SWAP TO ───────────────────────────

# Datadog:
exporters:
  datadog:
    api:
      key: "${DD_API_KEY}"

Provider Migration Checklist

# When migrating from self-hosted to a PaaS provider:

1. Update the exporters section in otel-collector-config.yaml
2. Update environment variables (add provider API keys)
3. Restart the OTel Collector: docker compose restart otel-collector
4. Verify telemetry appears in the new provider (15-30 seconds after restart)
5. Update Grafana data sources to point to the new provider endpoints
6. Test all 10 pre-built dashboards (verify data appears)
7. Migrate or recreate alert rules in the new provider
8. Maintain old provider in parallel for 1-2 weeks (historical data access)
9. Decommission old provider after validation complete

# BizFirstGO service code: ZERO changes required
# Migration time: 1-2 days (configuration + dashboard migration)