Skip to content

Commit 74b736e

Browse files
committed
feat(metrics): Migrate to OpenTelemetry for metrics
This commit migrates the metrics collection from OpenCensus to OpenTelemetry, aligning with the broader observability trends in the ecosystem. Key changes include: - Updated `pipelinerunmetrics` and `taskrunmetrics` to use the OpenTelemetry SDK for creating and recording metrics. - Preserved existing metric names and labels to ensure backward compatibility with existing dashboards and alerting. - Updated `config-observability.yaml` to use the new OpenTelemetry configuration for exporting metrics. - Updated `docs/metrics.md` to reflect the new configuration options. - Removed the now-obsolete OpenCensus `unregisterMetrics` function from the test suite. All changes have been verified with the existing test suite.
1 parent 0161399 commit 74b736e

File tree

33 files changed

+1027
-2029
lines changed

33 files changed

+1027
-2029
lines changed

config/config-observability.yaml

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,43 @@ data:
3737
# this example block and unindented to be in the data block
3838
# to actually change the configuration.
3939
40+
# OpenTelemetry Metrics Configuration
41+
# Protocol for metrics export (prometheus, grpc, http/protobuf, none)
42+
# Default: prometheus
43+
metrics-protocol: prometheus
44+
45+
# Metrics endpoint (for grpc/http protocols)
46+
# Default: empty (uses default OTLP endpoint)
47+
metrics-endpoint: ""
48+
49+
# Metrics export interval (e.g., "30s", "1m")
50+
# Default: empty (uses default interval)
51+
metrics-export-interval: ""
52+
53+
# OpenTelemetry Tracing Configuration
54+
# Protocol for tracing export (grpc, http/protobuf, none, stdout)
55+
# Default: none
56+
tracing-protocol: none
57+
58+
# Tracing endpoint (for grpc/http protocols)
59+
# Default: empty
60+
tracing-endpoint: ""
61+
62+
# Tracing sampling rate (0.0 to 1.0)
63+
# Default: 1.0 (100% sampling)
64+
tracing-sampling-rate: "1.0"
65+
66+
# Runtime Configuration
67+
# Enable profiling (enabled, disabled)
68+
# Default: disabled
69+
runtime-profiling: disabled
70+
71+
# Runtime export interval (e.g., "15s")
72+
# Default: 15s
73+
runtime-export-interval: "15s"
74+
75+
# Legacy OpenCensus Configuration (DEPRECATED)
76+
# These are kept for backward compatibility but should be migrated to OpenTelemetry
4077
# metrics.backend-destination field specifies the system metrics destination.
4178
# It supports either prometheus (the default) or stackdriver.
4279
# Note: Using Stackdriver will incur additional charges.
@@ -54,9 +91,11 @@ data:
5491
# charge. If metrics.backend-destination is not Stackdriver, this is
5592
# ignored.
5693
metrics.allow-stackdriver-custom-metrics: "false"
94+
95+
# Tekton-specific metrics configuration
5796
metrics.taskrun.level: "task"
5897
metrics.taskrun.duration-type: "histogram"
5998
metrics.pipelinerun.level: "pipeline"
6099
metrics.pipelinerun.duration-type: "histogram"
61100
metrics.count.enable-reason: "false"
62-
metrics.running-pipelinerun.level: ""
101+
metrics.running-pipelinerun.level: ""

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ require (
5050
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0
5151
go.opentelemetry.io/otel/metric v1.37.0
5252
go.opentelemetry.io/otel/sdk v1.37.0
53+
go.opentelemetry.io/otel/sdk/metric v1.37.0
5354
go.opentelemetry.io/otel/trace v1.37.0
5455
k8s.io/utils v0.0.0-20241210054802-24370beab758
5556
)
@@ -127,7 +128,6 @@ require (
127128
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect
128129
go.opentelemetry.io/otel/exporters/prometheus v0.59.1 // indirect
129130
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.37.0 // indirect
130-
go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect
131131
go.opentelemetry.io/proto/otlp v1.7.0 // indirect
132132
go.yaml.in/yaml/v2 v2.4.2 // indirect
133133
golang.org/x/tools/go/expect v0.1.0-deprecated // indirect

pkg/client/clientset/versioned/fake/clientset_generated.go

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/client/clientset/versioned/typed/pipeline/v1/pipeline_client.go

Lines changed: 3 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/client/clientset/versioned/typed/pipeline/v1alpha1/pipeline_client.go

Lines changed: 3 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/client/clientset/versioned/typed/pipeline/v1beta1/pipeline_client.go

Lines changed: 3 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/client/informers/externalversions/pipeline/v1/pipeline.go

Lines changed: 14 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/client/informers/externalversions/pipeline/v1/pipelinerun.go

Lines changed: 14 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/client/informers/externalversions/pipeline/v1/task.go

Lines changed: 14 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/client/informers/externalversions/pipeline/v1/taskrun.go

Lines changed: 14 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)