Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions .github/workflows/install-bench.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Install bench: stands up a kind cluster, builds and loads the
# tracecore image, deploys an OTLP sink + tracecore via the chart
# with the otlphttp exporter swap, measures install-to-first-data
# wall-clock, and writes the result JSON.
# with the upstream otlphttpexporter swap, measures
# install-to-first-data wall-clock, and writes the result JSON.
#
# Pinned action SHAs match the existing chart.yml workflow (the
# canonical reference for kind-based CI in this repo). See
Expand All @@ -13,7 +13,6 @@ on:
pull_request:
paths:
- 'bench/install/**'
- 'components/exporters/otlphttp/**'
- 'install/kubernetes/tracecore/**'
- 'builder-config.yaml'
- 'go.mod'
Expand All @@ -23,7 +22,6 @@ on:
branches: [main]
paths:
- 'bench/install/**'
- 'components/exporters/otlphttp/**'
- 'install/kubernetes/tracecore/**'
- 'builder-config.yaml'
- 'go.mod'
Expand Down
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ User-visible changes are documented here. Format: [Keep a Changelog](https://kee

## [Unreleased]

### Removed

- **In-tree `components/exporters/otlphttp/` + `components/exporters/stdoutexporter/` wrappers** (closes #333, #334). The OCB build assembled from [`builder-config.yaml`](builder-config.yaml) has shipped upstream `go.opentelemetry.io/collector/exporter/otlphttpexporter` + `debugexporter` since v0.2.0 (lines 59-60); the in-tree wrappers had zero Go importers outside their own `_test.go` files. Operator configs that named `otlphttp` as an exporter type continue to work — the upstream component-id is identical. Configs that named `stdoutexporter` should switch to `debug` (the upstream `debugexporter` component-id); the chart default already uses `debug`. Net deletion: 13 + 8 files / ~3,981 LOC. See [`docs/migration/v0.1-to-v0.2.md`](docs/migration/v0.1-to-v0.2.md) for the chart-default + PromQL implications already documented at the v0.2.0 boundary.

## [0.2.0] - 2026-05-31

First tagged release after the RFC-0013 distribution-first pivot. The binary is now assembled by the OpenTelemetry Collector Builder (OCB) from upstream + contrib components plus the in-repo `module/` Go submodule (NCCL FlightRecorder receiver, rankjoinprocessor, patterndetectorprocessor). OTel collector + contrib pinned at v0.130.0. Hand-rolled `cmd/tracecore` boot path retired; the legacy in-tree pipeline runtime, consumer chain, fanout, config loader, componentstatus surface, and runtime/lifecycle helper have all been deleted in favor of upstream `go.opentelemetry.io/collector/service`. Self-telemetry instrument names renamed `tracecore_*` → `otelcol_*`. Helm chart default image tag now resolves to `v0.2.0` via `Chart.yaml` appVersion (synced from `builder-config.yaml` `dist.version` by `scripts/chart-appversion-check.sh`). Container image publish via [ko](https://ko.build) to `ghcr.io/tracecoreai/tracecore`, cosign-signed and SLSA-attested by digest. See [`docs/migration/v0.1-to-v0.2.md`](docs/migration/v0.1-to-v0.2.md) for the operator upgrade walkthrough and [RFC-0013](docs/rfcs/0013-distro-first-pivot.md) for the strategic rationale.
Expand All @@ -22,7 +26,7 @@ First tagged release after the RFC-0013 distribution-first pivot. The binary is

### Changed

- **Self-telemetry instrument names renamed `tracecore_*` → `otelcol_*`** for the eight surviving in-tree components (`clockreceiver`, `containerstdout`, `k8sevents`, `kernelevents`, `nccl_fr`, `pyspy`, `otlphttp`, `stdoutexporter`). Each emits through its own per-component MeterProvider; names now match the upstream `otelcol_<role>_<component>_<metric>` convention (e.g. `otelcol_receiver_containerstdout_errors_total`, `otelcol_exporter_otlphttp_calls_total`). Label shape preserved (`component_id`, `kind`, `result` unchanged). The migration table in `docs/migration/v0.1-to-v0.2.md` under "In-tree receiver / exporter namespace alignment" carries the rename matrix, per-component `<name>` substitutions, and a PromQL diff recipe.
- **Self-telemetry instrument names renamed `tracecore_*` → `otelcol_*`** for the eight in-tree components shipping at the v0.2.0 boundary (`clockreceiver`, `containerstdout`, `k8sevents`, `kernelevents`, `nccl_fr`, `pyspy`, `otlphttp`, `stdoutexporter`; the four receivers + two exporter wrappers were subsequently retired — see `[Unreleased]` Removed for the exporter wrappers). Each emits through its own per-component MeterProvider; names now match the upstream `otelcol_<role>_<component>_<metric>` convention (e.g. `otelcol_receiver_containerstdout_errors_total`, `otelcol_exporter_otlphttp_calls_total`). Label shape preserved (`component_id`, `kind`, `result` unchanged). The migration table in `docs/migration/v0.1-to-v0.2.md` under "In-tree receiver / exporter namespace alignment" carries the rename matrix, per-component `<name>` substitutions, and a PromQL diff recipe.
- **Adopt > build posture for upstream-provided telemetry surfaces** (RFC-0013 §2). GPU telemetry, container stdout, kernel events, K8s events, Kueue, heartbeat, self-telemetry, release pipeline, and image publish all route through upstream + contrib components rather than in-tree forks. Vendors: NVIDIA (`dcgm-exporter`), AMD (`ROCm/device-metrics-exporter`), Intel (`intel/xpumanager`), Habana (Habana Prometheus Metric Exporter) — all scraped via upstream `prometheusreceiver`. CNCF: `filelogreceiver` + container stanza + `file_storage`; `journaldreceiver`; `k8sobjectsreceiver`. Self-telemetry: upstream `componentstatus` + `service/telemetry` + standard `otelcol_*` metrics.
- **Customer-stable telemetry contracts preserved across the pivot** via OTTL `transform` processors in the bundled Helm-chart recipe (RFC-0013 §3): `k8s.event.hint` eleven-entry enum, `kernelevents.xid` (NVRM Xid code), `gpu.id` (PCI BDF), `gpu.vendor`, `gen_ai.training.rank` + `gen_ai.training.job_id` (cross-receiver join keys), NCCL FlightRecorder span schema, pattern-detector outputs.
- **OTel collector + contrib pinned at v0.130.0** (bumped from v0.110 → v0.115 → v0.120 → v0.125 → v0.130 across the wave-PR sequence). Go toolchain on 1.23.
Expand Down Expand Up @@ -58,7 +62,7 @@ Pre-pivot scaffolding tagged as `v0.1.0-m1` on 2026-05-14. None of the code desc
- **`internal/pipeline.ComponentState`** — lifecycle-bookkeeping mixin receiver authors embed for `Started()`/`Stopped()` accessors. Modelled after OTel's `service/internal/testcomponents/stateful_component.go`. (Deleted in v0.2.0 PR-F.2.)
- **`tools/components-gen`** + `components.yaml` codegen — single source of truth for which components the binary ships with; generated `cmd/tracecore/components.go` regenerated via `make generate`. Manifest changes validated at gen-time. (Superseded by OCB `builder-config.yaml` in v0.2.0.)
- **`components/receivers/clockreceiver`** — canonical example receiver. Emitted `tracecore.clock.now` gauge at a configurable interval. (Deleted in v0.2.0 PR-K.2; replaced by `hostmetricsreceiver`.)
- **`components/exporters/stdoutexporter`** — canonical example exporter. (Ported onto upstream `service` in v0.2.0; source survives in-tree.)
- **`components/exporters/stdoutexporter`** — canonical example exporter. (Ported onto upstream `service` in v0.2.0; source retired post-v0.2.0, see `[Unreleased]` Removed.)
- **`cmd/tracecore collect --config=<path>`** — boots the runtime, builds pipelines via bottom-up factory assembly (exporters → fan-out → processors reversed → first-data wrap → receivers), runs until SIGTERM/SIGINT, performs two-phase shutdown. (Deleted in v0.2.0 PR-A2; replaced by the OCB-generated main.)
- **Operator-UX patterns** baked in (RFC-0003 §"Operator UX patterns"): line-numbered YAML errors with `file:line`, named-op `safe.Call`, empty-pipeline boot logs once and idles, first-data log line per pipeline, `pipelinetest.New(t)` fixture.
- **Integration test** in `cmd/tracecore/integration_test.go` — built the binary, ran it with a real config, captured stdout/stderr, asserted exit code + JSON metric output + lifecycle log lines. (Deleted in v0.2.0 PR-A2.)
Expand Down
12 changes: 6 additions & 6 deletions bench/install/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
End-to-end install-bench harness for tracecore: stands up a kind
cluster, deploys an OTLP-receiving sink (otelcol-contrib `file`
exporter), `helm install`s tracecore with chart values that swap the
default stdoutexporter for the in-tree `otlphttp` exporter, and
default `debug` exporter for the upstream `otlphttpexporter`, and
measures wall-clock from `helm install` return to first OTLP
datapoint at the sink.

Expand Down Expand Up @@ -69,11 +69,11 @@ Each `bench/results/install-*.json` row carries:
## Caveats

- **Metrics signal only.** The bench wires `pipelines.metrics` to the
otlphttp exporter; `traces` and `logs` pipelines are not exercised.
The exporter supports all three signals (unit-tested in
`components/exporters/otlphttp/otlphttp_test.go`), but install-bench
validates the metrics wire path only. Adding traces+logs to the
bench is tracked in `docs/FOLLOWUPS.md`.
upstream `otlphttpexporter`; `traces` and `logs` pipelines are not
exercised. The exporter supports all three signals (covered by
upstream tests in `go.opentelemetry.io/collector/exporter/otlphttpexporter`),
but install-bench validates the metrics wire path only. Adding
traces+logs to the bench is tracked in `docs/FOLLOWUPS.md`.
- **First-data is tick-aliased.** The bench heartbeat source emits
on a 1 s interval (hostmetricsreceiver loadscraper as of PR-E;
was the in-tree clockreceiver pre-PR-E, which was deleted in
Expand Down
97 changes: 0 additions & 97 deletions components/exporters/otlphttp/README.md

This file was deleted.

49 changes: 0 additions & 49 deletions components/exporters/otlphttp/classify_internal_test.go

This file was deleted.

Loading
Loading