Skip to content

Commit 452ca91

Browse files
committed
feat(exporters): replace opencensus with opentelemetry
* feat(exporters): replace opencensus with opentelemetry * fix(stackdriver_exporter): use metrics util constants * chore: use global meter and init * feat(exporters): add resource info, use global meter * chore: update deps * fix: use a gauge directly, narrow scope info * cleanup: deps * fix: try initOnce pattern for global problem metrics * fix(problemmetrics): init is being called too late * fix(gauge): remove _ratio suffix * fix: clean up after rebase * fix: cleanup after rebase * fix: cleanup after rebase * fix: cleanup after rebase * fix: remove nodename * fix(test): remove instance id check * fix(test): add attr values * fix(test): unexported resources * fix(test): initialize global problem metrics manager * fix(lint): make the linter happy
1 parent 49ee7e7 commit 452ca91

5,235 files changed

Lines changed: 921 additions & 1630303 deletions

File tree

Some content is hidden

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

cmd/nodeproblemdetector/node_problem_detector.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ import (
2929
"k8s.io/node-problem-detector/pkg/exporters/prometheusexporter"
3030
"k8s.io/node-problem-detector/pkg/problemdaemon"
3131
"k8s.io/node-problem-detector/pkg/problemdetector"
32+
"k8s.io/node-problem-detector/pkg/problemmetrics"
3233
"k8s.io/node-problem-detector/pkg/types"
34+
otelutil "k8s.io/node-problem-detector/pkg/util/otel"
3335
"k8s.io/node-problem-detector/pkg/version"
3436
)
3537

@@ -43,13 +45,7 @@ func npdMain(ctx context.Context, npdo *options.NodeProblemDetectorOptions) erro
4345
npdo.SetConfigFromDeprecatedOptionsOrDie()
4446
npdo.ValidOrDie()
4547

46-
// Initialize problem daemons.
47-
problemDaemons := problemdaemon.NewProblemDaemons(npdo.MonitorConfigPaths)
48-
if len(problemDaemons) == 0 {
49-
klog.Fatalf("No problem daemon is configured")
50-
}
51-
52-
// Initialize exporters.
48+
// Initialize exporters first to set up the OpenTelemetry readers.
5349
defaultExporters := []types.Exporter{}
5450
if ke := k8sexporter.NewExporterOrDie(ctx, npdo); ke != nil {
5551
defaultExporters = append(defaultExporters, ke)
@@ -59,9 +55,19 @@ func npdMain(ctx context.Context, npdo *options.NodeProblemDetectorOptions) erro
5955
defaultExporters = append(defaultExporters, pe)
6056
klog.Info("Prometheus exporter started.")
6157
}
62-
6358
plugableExporters := exporters.NewExporters()
6459

60+
// Initialize OpenTelemetry meter provider with all registered readers
61+
// This must be called after all exporters have been created and registered their readers
62+
otelutil.InitializeMeterProvider()
63+
problemmetrics.InitializeGlobalProblemMetricsManager()
64+
65+
// Initialize problem daemons.
66+
problemDaemons := problemdaemon.NewProblemDaemons(npdo.MonitorConfigPaths)
67+
if len(problemDaemons) == 0 {
68+
klog.Fatalf("No problem daemon is configured")
69+
}
70+
6571
npdExporters := []types.Exporter{}
6672
npdExporters = append(npdExporters, defaultExporters...)
6773
npdExporters = append(npdExporters, plugableExporters...)

go.mod

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,25 @@ go 1.25.7
44

55
require (
66
cloud.google.com/go/compute/metadata v0.9.0
7-
contrib.go.opencensus.io/exporter/prometheus v0.4.2
8-
contrib.go.opencensus.io/exporter/stackdriver v0.13.14
7+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0
98
github.com/acobaugh/osrelease v0.1.0
109
github.com/avast/retry-go/v4 v4.7.0
1110
github.com/coreos/go-systemd/v22 v22.6.0
1211
github.com/euank/go-kmsg-parser v2.0.0+incompatible
1312
github.com/hpcloud/tail v1.0.0
13+
github.com/prometheus/client_golang v1.23.2
1414
github.com/prometheus/client_model v0.6.2
15-
github.com/prometheus/common v0.67.4
15+
github.com/prometheus/common v0.67.5
1616
github.com/prometheus/procfs v0.19.2
1717
github.com/shirou/gopsutil/v4 v4.25.12
1818
github.com/spf13/pflag v1.0.10
1919
github.com/stretchr/testify v1.11.1
20-
go.opencensus.io v0.24.0
20+
go.opentelemetry.io/otel v1.40.0
21+
go.opentelemetry.io/otel/exporters/prometheus v0.62.0
22+
go.opentelemetry.io/otel/metric v1.40.0
23+
go.opentelemetry.io/otel/sdk v1.40.0
24+
go.opentelemetry.io/otel/sdk/metric v1.40.0
2125
golang.org/x/sys v0.40.0
22-
google.golang.org/api v0.258.0
2326
k8s.io/api v0.35.0
2427
k8s.io/apimachinery v0.35.0
2528
k8s.io/client-go v0.35.0
@@ -31,33 +34,25 @@ require (
3134
cloud.google.com/go/auth v0.17.0 // indirect
3235
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
3336
cloud.google.com/go/monitoring v1.24.2 // indirect
34-
cloud.google.com/go/trace v1.11.6 // indirect
35-
github.com/aws/aws-sdk-go v1.44.72 // indirect
37+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect
3638
github.com/beorn7/perks v1.0.1 // indirect
37-
github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect
3839
github.com/cespare/xxhash/v2 v2.3.0 // indirect
3940
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
4041
github.com/ebitengine/purego v0.9.1 // indirect
4142
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
42-
github.com/felixge/httpsnoop v1.0.4 // indirect
4343
github.com/fsnotify/fsnotify v1.6.0 // indirect
4444
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
45-
github.com/go-kit/log v0.2.1 // indirect
46-
github.com/go-logfmt/logfmt v0.5.1 // indirect
4745
github.com/go-logr/logr v1.4.3 // indirect
4846
github.com/go-logr/stdr v1.2.2 // indirect
4947
github.com/go-ole/go-ole v1.2.6 // indirect
5048
github.com/go-openapi/jsonpointer v0.21.0 // indirect
5149
github.com/go-openapi/jsonreference v0.20.2 // indirect
5250
github.com/go-openapi/swag v0.23.0 // indirect
53-
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
54-
github.com/golang/protobuf v1.5.4 // indirect
5551
github.com/google/gnostic-models v0.7.0 // indirect
5652
github.com/google/s2a-go v0.1.9 // indirect
5753
github.com/google/uuid v1.6.0 // indirect
5854
github.com/googleapis/enterprise-certificate-proxy v0.3.7 // indirect
5955
github.com/googleapis/gax-go/v2 v2.15.0 // indirect
60-
github.com/jmespath/go-jmespath v0.4.0 // indirect
6156
github.com/josharian/intern v1.0.0 // indirect
6257
github.com/json-iterator/go v1.1.12 // indirect
6358
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
@@ -67,19 +62,14 @@ require (
6762
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
6863
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
6964
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
70-
github.com/prometheus/client_golang v1.23.2 // indirect
71-
github.com/prometheus/prometheus v0.35.0 // indirect
72-
github.com/prometheus/statsd_exporter v0.22.7 // indirect
65+
github.com/prometheus/otlptranslator v1.0.0 // indirect
7366
github.com/tklauser/go-sysconf v0.3.16 // indirect
7467
github.com/tklauser/numcpus v0.11.0 // indirect
7568
github.com/x448/float16 v0.8.4 // indirect
7669
github.com/yusufpapurcu/wmi v1.2.4 // indirect
7770
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
78-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect
79-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
80-
go.opentelemetry.io/otel v1.38.0 // indirect
81-
go.opentelemetry.io/otel/metric v1.38.0 // indirect
82-
go.opentelemetry.io/otel/trace v1.38.0 // indirect
71+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect
72+
go.opentelemetry.io/otel/trace v1.40.0 // indirect
8373
go.yaml.in/yaml/v2 v2.4.3 // indirect
8474
go.yaml.in/yaml/v3 v3.0.4 // indirect
8575
golang.org/x/crypto v0.47.0 // indirect
@@ -89,7 +79,8 @@ require (
8979
golang.org/x/term v0.39.0 // indirect
9080
golang.org/x/text v0.33.0 // indirect
9181
golang.org/x/time v0.14.0 // indirect
92-
google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect
82+
google.golang.org/api v0.258.0 // indirect
83+
google.golang.org/genproto v0.0.0-20250922171735-9219d122eba9 // indirect
9384
google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect
9485
google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 // indirect
9586
google.golang.org/grpc v1.77.0 // indirect
@@ -98,7 +89,6 @@ require (
9889
gopkg.in/fsnotify.v1 v1.4.7 // indirect
9990
gopkg.in/inf.v0 v0.9.1 // indirect
10091
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
101-
gopkg.in/yaml.v2 v2.4.0 // indirect
10292
gopkg.in/yaml.v3 v3.0.1 // indirect
10393
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
10494
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect

0 commit comments

Comments
 (0)