ci: add weaver live-check workflow for SDK self-observability metrics#3565
ci: add weaver live-check workflow for SDK self-observability metrics#3565cijothomas wants to merge 9 commits into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3565 +/- ##
=======================================
+ Coverage 82.9% 83.2% +0.2%
=======================================
Files 130 130
Lines 27768 28232 +464
=======================================
+ Hits 23040 23490 +450
- Misses 4728 4742 +14 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
- Switch LoggerProvider from OTLP to InMemoryLogExporter so app log records don't reach weaver (they carry app-specific attributes that aren't in the semconv registry). Logs still flow through the BLP, exercising otel.sdk.log.created and otel.sdk.processor.log.processed. - Add 'Print live-check findings' step that parses the JSON report and prints violations as ::error:: annotations directly in the CI log.
1166301 to
815a284
Compare
- Switch from gRPC (tonic) to OTLP/HTTP to avoid h2/tonic noise - Remove tracing/appender deps - use Logger API directly - Focus on exercising otel.sdk.processor.log.processed only - Add README explaining why this example exists
815a284 to
9703461
Compare
Not a user-facing example. Placing it under .github/ci-apps/ keeps CI infrastructure together and avoids confusion with actual examples.
|
Thank you for your contribution! This PR has been automatically marked as stale because it has not had activity in the last 14 days. This may be due to a delay in review on our side or awaiting a response from you; either is fine, and we appreciate your patience. It will be closed in 14 days if no further activity occurs. Pushing a new commit or leaving a comment will remove the stale label and keep the PR open. |
|
As a downstream data point in favour of this: we run essentially this exact pattern in Ourios (a Parquet + DataFusion log-storage backend built on the OTel stack), and it's been solid enough that we promoted it to a required CI gate. Our
On the "not yet a required check / promote once proven stable" note — it graduates cleanly. It's in our So the staged-rollout endpoint you're describing is reachable in practice. +1 to landing this — self-obs metrics silently drifting from semconv is exactly the failure it prevents, and it's nicer to catch in CI than in a consumer's dashboard. Happy to share our workflow as a reference if useful. |
Towards #3553.
Adds a
weaver registry live-checkCI workflow that validates SDK self-observability metrics (otel.sdk.log.created,otel.sdk.processor.log.processed, exporter metrics, etc.) against the upstream semantic conventions registry on every PR that touches the SDK or OTLP exporter.Changes
.github/workflows/sdk-self-observability.ymlusing the upstreamweaver-live-check-{start,stop}composite actions (v0.24.0). Validates against semconv v1.42.0.fail-on: violation.examples/self-obs-live-check/— purpose-built binary that creates a LoggerProvider with BatchLogProcessor + OTLP gRPC exporter, emits log records, waits for the periodic metric export, and shuts down cleanly. This exercises the SDK's self-obs metrics end-to-end.Pattern
Follows the same approach as opentelemetry-rust-contrib#613 (tower instrumentation live-check): no in-tree registry, validates directly against the published upstream semconv, uses a dedicated app as the telemetry source.
Not yet a required status check
The workflow runs on PR/push/merge_group but is not in the required checks list. Promote once the gate is proven stable, consistent with the staged rollout used in otel-arrow.