Skip to content

infra: drop OTel collector container — backend hosts OTLP directly (HOL-21) - #100

Closed
BrewingCoder wants to merge 1 commit into
issue-19-drop-predictionsfrom
issue-21-drop-collector
Closed

infra: drop OTel collector container — backend hosts OTLP directly (HOL-21)#100
BrewingCoder wants to merge 1 commit into
issue-19-drop-predictionsfrom
issue-21-drop-collector

Conversation

@BrewingCoder

Copy link
Copy Markdown
Owner

Summary

The OTel collector was a SaaS-shaped multi-protocol relay (fluentforward, syslog, AWS Firehose CloudWatch, OTLP gRPC/HTTP/HTTPS, TCP log) that for self-hosted deployments only delivers OTLP HTTP value the backend already provides natively.

The .NET backend has a complete OTLP HTTP receiver at /otel/v1/{logs,traces,metrics}: JSON + protobuf, gzip + snappy decompression, CORS-enabled, project-id resolution from resource attributes. Self-instrumentation already targets it directly. SDKs just needed their default OTLP endpoint pointed at it.

Removed

  • compose.yml + compose.hobby-dotnet.yml: collector service
  • infra/docker/{collector.Dockerfile, collector.yml, configure-collector.sh}
  • start-infra.sh: collector from SERVICES list
  • .env.example: OTEL_COLLECTOR_* image vars
  • env.sh: collector hostname rewrites

Updated

SDK + frontend defaults from :4318 (collector) to :8082/otel (backend):

  • sdk/highlight-run/src/index.tsx: otlpEndpoint default
  • compose.hobby-dotnet.yml + compose.dev-frontend.yml: REACT_APP_OTLP_ENDPOINT
  • env.sh: OTLP_DOGFOOD_ENDPOINT, OTLP_ENDPOINT

Tradeoffs accepted

  • Lose support for non-OTLP ingest sources (fluentforward, syslog, AWS Firehose). For self-hosted deployments these were never wired through to anything we use.
  • Collector also offered protocol upgrades (gRPC ↔ HTTP). Backend only accepts OTLP HTTP. Anyone wanting gRPC ingest can run the collector themselves as an external relay.

Verified

  • docker compose ps now shows 7 HoldFast containers (was 9 before HOL-19 + HOL-21).
  • Smoke test (./infra/docker/smoke-test-ingest.sh) passes end-to-end.
  • Backend's self-instrumentation continues to flow into ClickHouse via the in-process /otel handler (no behavior change there).

Stacks on #99 (HOL-19). Subtask of HOL-17. Closes HOL-21.

🤖 Generated with Claude Code

…OL-21)

The OTel collector container was a SaaS-shaped multi-protocol relay
(fluentforward, syslog, AWS Firehose CloudWatch, OTLP gRPC/HTTP/HTTPS,
TCP log) that for self-hosted deployments only delivers OTLP HTTP value
the backend already provides natively.

The .NET backend has a complete OTLP HTTP receiver at /otel/v1/{logs,
traces,metrics}: JSON + protobuf, gzip + snappy decompression, CORS-
enabled, project-id resolution from resource attributes. Self-
instrumentation already targets it directly. SDKs just needed their
default OTLP endpoint pointed at it.

Removed:
- compose.yml + compose.hobby-dotnet.yml: collector service
- infra/docker/{collector.Dockerfile, collector.yml, configure-collector.sh}
- start-infra.sh: collector from SERVICES list
- .env.example: OTEL_COLLECTOR_* image vars
- env.sh: collector hostname rewrites

Updated SDK + frontend defaults from :4318 (collector) to :8082/otel
(backend):
- sdk/highlight-run/src/index.tsx: otlpEndpoint default
- compose.hobby-dotnet.yml + compose.dev-frontend.yml: REACT_APP_OTLP_ENDPOINT
- env.sh: OTLP_DOGFOOD_ENDPOINT, OTLP_ENDPOINT

Verified: docker compose ps now shows 7 HoldFast containers (was 9
before HOL-19+HOL-21). Smoke test passes end-to-end.

Subtask of HOL-17. Closes HOL-21.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant