feat(tracing): add semantic span attributes to reconciler child spans
#9785 aperta il 16 apr 2026
Metriche repository
- Star
- (9013 stelle)
- Metriche merge PR
- (Metriche PR in attesa)
Descrizione
Feature request
22 of 26 child spans in the PipelineRun/TaskRun reconcilers carry zero attributes — they are unqueryable timers. Add semantic attributes (outcome, error reason, task/pipeline ref, step count) to key spans.
Use case
Operators cannot filter or search traces by outcome ("show me all failed createPod spans") because spans lack queryable attributes. Adding semantic attributes enables Jaeger/Tempo filtering and alerting on specific span patterns.
Implementation hints
Spans missing attributes (all have zero today):
In pkg/reconciler/pipelinerun/pipelinerun.go:
reconcile,resolvePipelineState,runNextSchedulableTask,createTaskRuns— add pipeline name, task count, status
In pkg/reconciler/taskrun/taskrun.go:
reconcile,createPod,stopSidecars,failTaskRun— add task name, step count, failure reason
Also fix:
- Deduplicate identical
SetAttributescalls betweeninitTracingroot spans andReconcileKindspans (attributes set twice per reconcile) - Use OTel semantic conventions (
k8s.namespace.name) instead of ad-hoc keys ("namespace") to align with semconv v1.40.0 bump in #9697
Pattern:
span.SetAttributes(
attribute.String("tekton.pipeline.name", pipelineName),
attribute.Int("tekton.task.count", len(tasks)),
attribute.String("tekton.status", string(condition.Reason)),
)
Part of umbrella: #9701
good first issue — no new spans needed, just add attributes to existing ones.