Skip to content
Open
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
10 changes: 5 additions & 5 deletions cmd/hydration-controller/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,19 +79,19 @@ func main() {
profiler.Service()
ctrl.SetLogger(textlogger.NewLogger(textlogger.NewConfig()))

// Register the kustomize usage metric views.
if err := kmetrics.RegisterKustomizeMetricsViews(); err != nil {
klog.Fatalf("Failed to register OpenCensus views: %v", err)
// Initialize the kustomize metrics
if err := kmetrics.InitializeOTelKustomizeMetrics(); err != nil {
klog.Fatalf("Failed to initialize kustomize metrics: %v", err)
}

// Register the OC Agent exporter
oce, err := kmetrics.RegisterOCAgentExporter(reconcilermanager.HydrationController)
oce, err := kmetrics.RegisterOTelExporter(reconcilermanager.HydrationController)
if err != nil {
klog.Fatalf("Failed to register the OC Agent exporter: %v", err)
}

defer func() {
if err := oce.Stop(); err != nil {
if err := oce.Shutdown(context.Background()); err != nil {
klog.Fatalf("Unable to stop the OC Agent exporter: %v", err)
}
}()
Expand Down
12 changes: 6 additions & 6 deletions cmd/reconciler-manager/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,20 +182,20 @@ func main() {
}
setupLog.Info("OtelSA controller registration successful")

// Register the OpenCensus views
if err := metrics.RegisterReconcilerManagerMetricsViews(); err != nil {
setupLog.Error(err, "failed to register OpenCensus views")
// Initialize the metrics
if err := metrics.InitializeOTelMetrics(); err != nil {
setupLog.Error(err, "failed to initialize metrics")
}

// Register the OC Agent exporter
oce, err := metrics.RegisterOCAgentExporter(reconcilermanager.ManagerName)
oce, err := metrics.RegisterOTelExporter(reconcilermanager.ManagerName)
if err != nil {
setupLog.Error(err, "failed to register the OC Agent exporter")
os.Exit(1)
}

defer func() {
if err := oce.Stop(); err != nil {
if err := oce.Shutdown(context.Background()); err != nil {
setupLog.Error(err, "failed to stop the OC Agent exporter")
}
}()
Expand All @@ -206,7 +206,7 @@ func main() {
if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
setupLog.Error(err, "problem running manager")
// os.Exit(1) does not run deferred functions so explicitly stopping the OC Agent exporter.
if err := oce.Stop(); err != nil {
if err := oce.Shutdown(context.Background()); err != nil {
setupLog.Error(err, "failed to stop the OC Agent exporter")
}
os.Exit(1)
Expand Down
11 changes: 6 additions & 5 deletions cmd/reconciler/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package main

import (
"context"
"flag"
"fmt"
"os"
Expand Down Expand Up @@ -140,19 +141,19 @@ func main() {
status.EnablePanicOnMisuse()
}

// Register the OpenCensus views
if err := ocmetrics.RegisterReconcilerMetricsViews(); err != nil {
klog.Fatalf("Failed to register OpenCensus views: %v", err)
// Initialize the metrics
if err := ocmetrics.InitializeOTelMetrics(); err != nil {
klog.Fatalf("Failed to initialize metrics: %v", err)
}

// Register the OC Agent exporter
oce, err := ocmetrics.RegisterOCAgentExporter(reconcilermanager.Reconciler)
oce, err := ocmetrics.RegisterOTelExporter(reconcilermanager.Reconciler)
if err != nil {
klog.Fatalf("Failed to register the OC Agent exporter: %v", err)
}

defer func() {
if err := oce.Stop(); err != nil {
if err := oce.Shutdown(context.Background()); err != nil {
klog.Fatalf("Unable to stop the OC Agent exporter: %v", err)
}
}()
Expand Down
13 changes: 9 additions & 4 deletions docs/custom-metric-filter.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ To **turn off the custom metrics** in Cloud Monitoring, remove this section:
```yaml
# Remove this entire section
metrics/cloudmonitoring:
receivers: [opencensus]
receivers: [otlp]
processors: [batch, filter/cloudmonitoring, metricstransform/cloudmonitoring, resourcedetection]
exporters: [googlecloud]
```
Expand All @@ -183,7 +183,7 @@ To **turn off the report to Cloud Monarch**, remove this section:
```yaml
# Remove this entire section
metrics/kubernetes:
receivers: [opencensus]
receivers: [otlp]
processors: [batch, filter/kubernetes, metricstransform/kubernetes, resourcedetection]
exporters: [googlecloud/kubernetes]
```
Expand Down Expand Up @@ -235,7 +235,12 @@ metadata:
data:
otel-collector-config.yaml: |
receivers:
opencensus:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
debug:
verbosity: detailed
Expand All @@ -245,7 +250,7 @@ data:
batch:
pipelines:
metrics:
receivers: [opencensus]
receivers: [otlp]
processors: [batch]
exporters: [debug]
```
Expand Down
94 changes: 47 additions & 47 deletions e2e/nomostest/prometheus_metrics.go

Large diffs are not rendered by default.

7 changes: 3 additions & 4 deletions e2e/testcases/otel_collector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,13 +150,12 @@ func TestOtelCollectorDeployment(t *testing.T) {
nt.Must(rootSyncGitRepo.CommitAndPush("Adding foo namespace"))
nt.Must(nt.WatchForAllSyncs())

nt.T.Log("Watch for metrics in GCM, timeout 2 minutes")
nt.T.Log("Watch for default metrics in GCM")
ctx := nt.Context
client, err := createGCMClient(ctx)
if err != nil {
nt.T.Fatal(err)
}
// retry for 2 minutes until metric is accessible from GCM
nt.Must(validateMetricTypes(ctx, nt, client, startTime, DefaultGCMMetricTypes))

nt.T.Log("Checking the otel-collector log contains no failure...")
Expand Down Expand Up @@ -237,10 +236,10 @@ func TestGCMMetrics(t *testing.T) {

nt.T.Log("Apply custom otel-collector ConfigMap that exports full metric list to GCM")
nt.MustKubectl("apply", "-f", "../testdata/otel-collector/otel-cm-full-gcm.yaml")
nt.Must(nt.Watcher.WatchForCurrentStatus(kinds.Deployment(), csmetrics.OtelCollectorName, configmanagement.MonitoringNamespace))

startTime := time.Now().UTC()

nt.T.Log("Watch for full list of metrics in GCM, timeout 2 minutes")
ctx := nt.Context
client, err := createGCMClient(ctx)
if err != nil {
Expand Down Expand Up @@ -308,7 +307,7 @@ func TestOtelCollectorGCMLabelAggregation(t *testing.T) {
nt.T.Fatal(err)
}
// retry for 2 minutes until metric is accessible from GCM
nt.Must(validateMetricTypes(ctx, nt, client, startTime, metricsWithCommitLabel, metricDoesNotHaveLabel(metrics.KeyCommit.Name())))
nt.Must(validateMetricTypes(ctx, nt, client, startTime, metricsWithCommitLabel, metricDoesNotHaveLabel(string(metrics.KeyCommit))))
}

func setupMetricsServiceAccount(nt *nomostest.NT) {
Expand Down
18 changes: 9 additions & 9 deletions e2e/testdata/otel-collector/otel-cm-full-gcm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@ apiVersion: v1
data:
otel-collector-config.yaml: |-
receivers:
opencensus:
endpoint: 0.0.0.0:55678
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
prometheus:
endpoint: 0.0.0.0:8675
Expand Down Expand Up @@ -71,10 +75,6 @@ data:
enabled: false
processors:
batch:
# resourcedetection: This processor is needed to correctly mirror resource
# labels from OpenCensus to OpenTelemetry. We also want to keep this same
# processor in Otel Agent configuration as the resource labels are added from
# there
resourcedetection:
detectors: [env, gcp]
# Aggregate some metrics sent to Cloud Monitoring to remove high-cardinality labels (e.g. "commit")
Expand Down Expand Up @@ -309,15 +309,15 @@ data:
extensions: [health_check]
pipelines:
metrics/cloudmonitoring:
receivers: [opencensus]
receivers: [otlp]
processors: [batch, filter/cloudmonitoring, metricstransform/cloudmonitoring, resourcedetection]
exporters: [googlecloud]
metrics/prometheus:
receivers: [opencensus]
receivers: [otlp]
processors: [batch]
exporters: [prometheus]
metrics/kubernetes:
receivers: [opencensus]
receivers: [otlp]
processors: [batch, filter/kubernetes, metricstransform/kubernetes, resourcedetection]
exporters: [googlecloud/kubernetes]
kind: ConfigMap
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,12 @@ apiVersion: v1
data:
otel-collector-config.yaml: |-
receivers:
opencensus:
endpoint: 0.0.0.0:55678
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
prometheus:
endpoint: 0.0.0.0:8675
Expand Down Expand Up @@ -75,10 +79,6 @@ data:
enabled: false
processors:
batch:
# resourcedetection: This processor is needed to correctly mirror resource
# labels from OpenCensus to OpenTelemetry. We also want to keep this same
# processor in Otel Agent configuration as the resource labels are added from
# there
resourcedetection:
detectors: [env, gcp]
filter/cloudmonitoring:
Expand Down Expand Up @@ -264,15 +264,15 @@ data:
extensions: [health_check]
pipelines:
metrics/cloudmonitoring:
receivers: [opencensus]
receivers: [otlp]
processors: [batch, filter/cloudmonitoring, metricstransform/cloudmonitoring, resourcedetection]
exporters: [googlecloud]
metrics/prometheus:
receivers: [opencensus]
receivers: [otlp]
processors: [batch]
exporters: [prometheus]
metrics/kubernetes:
receivers: [opencensus]
receivers: [otlp]
processors: [batch, filter/kubernetes, metricstransform/kubernetes, resourcedetection]
exporters: [googlecloud/kubernetes]
kind: ConfigMap
Expand Down
18 changes: 9 additions & 9 deletions e2e/testdata/otel-collector/otel-cm-monarch-rejected-labels.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,12 @@ apiVersion: v1
data:
otel-collector-config.yaml: |-
receivers:
opencensus:
endpoint: 0.0.0.0:55678
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
prometheus:
endpoint: 0.0.0.0:8675
Expand Down Expand Up @@ -75,10 +79,6 @@ data:
enabled: false
processors:
batch:
# resourcedetection: This processor is needed to correctly mirror resource
# labels from OpenCensus to OpenTelemetry. We also want to keep this same
# processor in Otel Agent configuration as the resource labels are added from
# there
resourcedetection:
detectors: [env, gcp]
filter/cloudmonitoring:
Expand Down Expand Up @@ -173,15 +173,15 @@ data:
extensions: [health_check]
pipelines:
metrics/cloudmonitoring:
receivers: [opencensus]
receivers: [otlp]
processors: [batch, filter/cloudmonitoring, resourcedetection]
exporters: [googlecloud]
metrics/prometheus:
receivers: [opencensus]
receivers: [otlp]
processors: [batch]
exporters: [prometheus]
metrics/kubernetes:
receivers: [opencensus]
receivers: [otlp]
processors: [batch, filter/kubernetes, metricstransform/kubernetes, resourcedetection]
exporters: [googlecloud/kubernetes]
kind: ConfigMap
Expand Down
19 changes: 11 additions & 8 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ require (
cloud.google.com/go/logging v1.13.0
cloud.google.com/go/monitoring v1.24.2
cloud.google.com/go/trace v1.11.6
contrib.go.opencensus.io/exporter/ocagent v0.7.0
github.com/GoogleContainerTools/kpt-functions-catalog/functions/go/set-namespace v0.4.1-0.20220713210718-d955e7d3a800
github.com/GoogleContainerTools/kpt-functions-sdk/go/fn v0.0.0-20220706221933-7181f451a663
github.com/Masterminds/semver v1.5.0
Expand All @@ -33,7 +32,11 @@ require (
github.com/spf13/cobra v1.10.1
github.com/spyzhov/ajson v0.9.6
github.com/stretchr/testify v1.11.1
go.opencensus.io v0.24.0
go.opentelemetry.io/otel v1.38.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0
go.opentelemetry.io/otel/metric v1.38.0
go.opentelemetry.io/otel/sdk v1.38.0
go.opentelemetry.io/otel/sdk/metric v1.38.0
go.uber.org/multierr v1.11.0
go.uber.org/zap v1.27.0
golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67
Expand Down Expand Up @@ -76,7 +79,7 @@ require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/blang/semver/v4 v4.0.0 // indirect
github.com/bmatcuk/doublestar/v4 v4.0.2 // indirect
github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chai2010/gettext-go v1.0.2 // indirect
github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect
Expand Down Expand Up @@ -108,7 +111,7 @@ require (
github.com/googleapis/gax-go/v2 v2.15.0 // indirect
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jonboulle/clockwork v0.5.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
Expand Down Expand Up @@ -145,12 +148,12 @@ require (
github.com/vbatts/tar-split v0.12.1 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/xlab/treeprint v1.2.0 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
go.opentelemetry.io/otel v1.37.0 // indirect
go.opentelemetry.io/otel/metric v1.37.0 // indirect
go.opentelemetry.io/otel/trace v1.37.0 // indirect
go.opentelemetry.io/otel/trace v1.38.0 // indirect
go.opentelemetry.io/proto/otlp v1.7.1 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
Expand All @@ -166,7 +169,7 @@ require (
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect
google.golang.org/grpc v1.75.1 // indirect
google.golang.org/protobuf v1.36.10 // indirect
Expand Down
Loading
Loading