Skip to content

Commit 3c81962

Browse files
Migrate from OpenCensus library (#1909)
* Update OpenCensus to OpenTelemetry Change is meant to be transparent to user. Using OTel SDK for metric composing in: kmetrics, core metrics, resource group metrics; Using otlp receiver in otel-agent and otel-collector; Configured deployment for new ports and component; Refactor metric composing and recording; Metric prefix remain the same to minimize breaking change. Tests updated. * cleanup - pass on context in register * cleanup: restore record.go under kmetrics * cleanup: restore record.go under resourcegroup metrics * cleanup: refactor testexporter for readability * gemini comment: fail fast when record sees metric not initialized * gemini comment: use context with timeout for exporter graceful shutdown * fix rebase conflict * cleanup - constify conext shutdonw timeout - restore header - remove unnecessary metric attribute on exporter setup - restore test coverage from rebase conflict * refactor: use lazy initialization for metrics * copilot: cleanup logs and comments * refactor testexporter for readability and better error handling * revert to explicit metric initialization with error check * cleanup - restore kmetrics record.go header - pass on rg manager container name from register
1 parent 822e075 commit 3c81962

File tree

248 files changed

+20051
-10890
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

248 files changed

+20051
-10890
lines changed

cmd/hydration-controller/main.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,20 +79,18 @@ func main() {
7979
profiler.Service()
8080
ctrl.SetLogger(textlogger.NewLogger(textlogger.NewConfig()))
8181

82-
// Register the kustomize usage metric views.
83-
if err := kmetrics.RegisterKustomizeMetricsViews(); err != nil {
84-
klog.Fatalf("Failed to register OpenCensus views: %v", err)
85-
}
86-
87-
// Register the OC Agent exporter
88-
oce, err := kmetrics.RegisterOCAgentExporter(reconcilermanager.HydrationController)
82+
// Register the OTLP metrics exporter and metrics instruments
83+
ctx := context.Background()
84+
oce, err := kmetrics.RegisterOTelExporter(ctx, reconcilermanager.HydrationController)
8985
if err != nil {
90-
klog.Fatalf("Failed to register the OC Agent exporter: %v", err)
86+
klog.Fatalf("Failed to register the OTLP metrics exporter: %v", err)
9187
}
9288

9389
defer func() {
94-
if err := oce.Stop(); err != nil {
95-
klog.Fatalf("Unable to stop the OC Agent exporter: %v", err)
90+
shutdownCtx, cancel := context.WithTimeout(context.Background(), kmetrics.ShutdownTimeout)
91+
defer cancel()
92+
if err := oce.Shutdown(shutdownCtx); err != nil {
93+
klog.Fatalf("Unable to stop the OTLP metrics exporter: %v", err)
9694
}
9795
}()
9896

cmd/reconciler-manager/main.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -182,21 +182,19 @@ func main() {
182182
}
183183
setupLog.Info("OtelSA controller registration successful")
184184

185-
// Register the OpenCensus views
186-
if err := metrics.RegisterReconcilerManagerMetricsViews(); err != nil {
187-
setupLog.Error(err, "failed to register OpenCensus views")
188-
}
189-
190-
// Register the OC Agent exporter
191-
oce, err := metrics.RegisterOCAgentExporter(reconcilermanager.ManagerName)
185+
// Register the OTLP metrics exporter and metrics instruments
186+
ctx := context.Background()
187+
oce, err := metrics.RegisterOTelExporter(ctx, reconcilermanager.ManagerName)
192188
if err != nil {
193-
setupLog.Error(err, "failed to register the OC Agent exporter")
189+
setupLog.Error(err, "failed to register the OTLP metrics exporter")
194190
os.Exit(1)
195191
}
196192

197193
defer func() {
198-
if err := oce.Stop(); err != nil {
199-
setupLog.Error(err, "failed to stop the OC Agent exporter")
194+
shutdownCtx, cancel := context.WithTimeout(context.Background(), metrics.ShutdownTimeout)
195+
defer cancel()
196+
if err := oce.Shutdown(shutdownCtx); err != nil {
197+
setupLog.Error(err, "failed to stop the OTLP metrics exporter")
200198
}
201199
}()
202200

@@ -205,9 +203,11 @@ func main() {
205203
setupLog.Info("starting manager")
206204
if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
207205
setupLog.Error(err, "problem running manager")
208-
// os.Exit(1) does not run deferred functions so explicitly stopping the OC Agent exporter.
209-
if err := oce.Stop(); err != nil {
210-
setupLog.Error(err, "failed to stop the OC Agent exporter")
206+
// os.Exit(1) does not run deferred functions so explicitly stopping the OTLP metrics exporter.
207+
shutdownCtx, cancel := context.WithTimeout(context.Background(), metrics.ShutdownTimeout)
208+
defer cancel()
209+
if err := oce.Shutdown(shutdownCtx); err != nil {
210+
setupLog.Error(err, "failed to stop the OTLP metrics exporter")
211211
}
212212
os.Exit(1)
213213
}

cmd/reconciler/main.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package main
1616

1717
import (
18+
"context"
1819
"flag"
1920
"fmt"
2021
"os"
@@ -140,20 +141,18 @@ func main() {
140141
status.EnablePanicOnMisuse()
141142
}
142143

143-
// Register the OpenCensus views
144-
if err := ocmetrics.RegisterReconcilerMetricsViews(); err != nil {
145-
klog.Fatalf("Failed to register OpenCensus views: %v", err)
146-
}
147-
148-
// Register the OC Agent exporter
149-
oce, err := ocmetrics.RegisterOCAgentExporter(reconcilermanager.Reconciler)
144+
// Register the OTLP metrics exporter and metrics instruments
145+
ctx := context.Background()
146+
oce, err := ocmetrics.RegisterOTelExporter(ctx, reconcilermanager.Reconciler)
150147
if err != nil {
151-
klog.Fatalf("Failed to register the OC Agent exporter: %v", err)
148+
klog.Fatalf("Failed to register the OTLP metrics exporter: %v", err)
152149
}
153150

154151
defer func() {
155-
if err := oce.Stop(); err != nil {
156-
klog.Fatalf("Unable to stop the OC Agent exporter: %v", err)
152+
shutdownCtx, cancel := context.WithTimeout(context.Background(), ocmetrics.ShutdownTimeout)
153+
defer cancel()
154+
if err := oce.Shutdown(shutdownCtx); err != nil {
155+
klog.Fatalf("Unable to stop the OTLP metrics exporter: %v", err)
157156
}
158157
}()
159158

docs/custom-metric-filter.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ To **turn off the custom metrics** in Cloud Monitoring, remove this section:
171171
```yaml
172172
# Remove this entire section
173173
metrics/cloudmonitoring:
174-
receivers: [opencensus]
174+
receivers: [otlp]
175175
processors: [batch, filter/cloudmonitoring, metricstransform/cloudmonitoring, resourcedetection]
176176
exporters: [googlecloud]
177177
```
@@ -183,7 +183,7 @@ To **turn off the report to Cloud Monarch**, remove this section:
183183
```yaml
184184
# Remove this entire section
185185
metrics/kubernetes:
186-
receivers: [opencensus]
186+
receivers: [otlp]
187187
processors: [batch, filter/kubernetes, metricstransform/kubernetes, resourcedetection]
188188
exporters: [googlecloud/kubernetes]
189189
```
@@ -235,7 +235,12 @@ metadata:
235235
data:
236236
otel-collector-config.yaml: |
237237
receivers:
238-
opencensus:
238+
otlp:
239+
protocols:
240+
grpc:
241+
endpoint: 0.0.0.0:4317
242+
http:
243+
endpoint: 0.0.0.0:4318
239244
exporters:
240245
debug:
241246
verbosity: detailed
@@ -245,7 +250,7 @@ data:
245250
batch:
246251
pipelines:
247252
metrics:
248-
receivers: [opencensus]
253+
receivers: [otlp]
249254
processors: [batch]
250255
exporters: [debug]
251256
```

0 commit comments

Comments
 (0)