Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
8a2a897
chore(deps): pre-vendor OpenTelemetry dependencies
hakman Jul 8, 2026
c987f1d
feat(exporters): replace opencensus with opentelemetry
daveoy Sep 26, 2025
2824794
fix(test): allow for summary and histogram types to be emit
daveoy Sep 26, 2025
cada1cb
fix(otel): remove otel_scope labels
daveoy Sep 26, 2025
3df32a4
fix(stackdriver_exporter): filter resource attributes for gcp
daveoy Feb 17, 2026
b861679
fix(metrics): retain early nil return with no name
daveoy Feb 17, 2026
a035fe4
chore(exporters): remove deprecated prometheus opts, use otel translator
daveoy Feb 17, 2026
1233c02
feat(metric): use metricdata for unit tests
daveoy Feb 17, 2026
4d8ed67
fix(metrics/test): test our New() funcs
daveoy Feb 17, 2026
37e86e1
feat(stackdriver_exporter/test): add cloudmock and use it to test met…
daveoy Feb 18, 2026
32cc912
chore(lint): make the linter happy by not returning some errs
daveoy Feb 18, 2026
4318ff7
chore(deps): more gomod updates
daveoy Feb 18, 2026
ecbacf6
fix(stackdriver): restore gce_instance resource, instance_name and ap…
hakman Jul 5, 2026
f9e4857
fix(prometheus): serve metrics from a dedicated registry
hakman Jul 5, 2026
86403b7
fix(metrics): error on unsupported aggregation and undeclared labels
hakman Jul 5, 2026
6530d4f
refactor(metrics): dedupe int64/float64 metric implementations
hakman Jul 5, 2026
9ca6a92
chore: remove dead code from metrics, otel and cloudmock
hakman Jul 5, 2026
015c406
refactor(metrics): simplify otelMetric internals
hakman Jul 5, 2026
321c49a
fix(prometheus): drop target_info from scrape output
hakman Jul 5, 2026
bb3180d
chore(deps): update modules for the OpenTelemetry migration
hakman Jul 5, 2026
e1f9ca1
fix(systemstatsmonitor): key disk_percent_used by device_name only
hakman Jul 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
22 changes: 14 additions & 8 deletions cmd/nodeproblemdetector/node_problem_detector.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ import (
"k8s.io/node-problem-detector/pkg/exporters/prometheusexporter"
"k8s.io/node-problem-detector/pkg/problemdaemon"
"k8s.io/node-problem-detector/pkg/problemdetector"
"k8s.io/node-problem-detector/pkg/problemmetrics"
"k8s.io/node-problem-detector/pkg/types"
otelutil "k8s.io/node-problem-detector/pkg/util/otel"
"k8s.io/node-problem-detector/pkg/version"
)

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

// Initialize problem daemons.
problemDaemons := problemdaemon.NewProblemDaemons(npdo.MonitorConfigPaths)
if len(problemDaemons) == 0 {
klog.Fatalf("No problem daemon is configured")
}

// Initialize exporters.
// Initialize exporters first to set up the OpenTelemetry readers.
defaultExporters := []types.Exporter{}
if ke := k8sexporter.NewExporterOrDie(ctx, npdo); ke != nil {
defaultExporters = append(defaultExporters, ke)
Expand All @@ -59,9 +55,19 @@ func npdMain(ctx context.Context, npdo *options.NodeProblemDetectorOptions) erro
defaultExporters = append(defaultExporters, pe)
klog.Info("Prometheus exporter started.")
}

plugableExporters := exporters.NewExporters()

// Initialize OpenTelemetry meter provider with all registered readers
// This must be called after all exporters have been created and registered their readers
otelutil.InitializeMeterProvider()
problemmetrics.InitializeGlobalProblemMetricsManager()

// Initialize problem daemons.
problemDaemons := problemdaemon.NewProblemDaemons(npdo.MonitorConfigPaths)
if len(problemDaemons) == 0 {
klog.Fatalf("No problem daemon is configured")
}

npdExporters := []types.Exporter{}
npdExporters = append(npdExporters, defaultExporters...)
npdExporters = append(npdExporters, plugableExporters...)
Expand Down
55 changes: 23 additions & 32 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,25 +1,33 @@
module k8s.io/node-problem-detector

go 1.26.5
go 1.25.8

require (
cloud.google.com/go/compute/metadata v0.9.0
contrib.go.opencensus.io/exporter/prometheus v0.4.2
contrib.go.opencensus.io/exporter/stackdriver v0.13.14
cloud.google.com/go/monitoring v1.24.3
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0
github.com/acobaugh/osrelease v0.1.0
github.com/avast/retry-go/v4 v4.7.0
github.com/coreos/go-systemd/v22 v22.6.0
github.com/euank/go-kmsg-parser v2.0.0+incompatible
github.com/hpcloud/tail v1.0.0
github.com/prometheus/client_golang v1.23.2
github.com/prometheus/client_model v0.6.2
github.com/prometheus/common v0.67.5
github.com/prometheus/procfs v0.19.2
github.com/prometheus/otlptranslator v1.0.0
github.com/prometheus/procfs v0.20.1
github.com/shirou/gopsutil/v4 v4.25.12
github.com/spf13/pflag v1.0.10
github.com/stretchr/testify v1.11.1
go.opencensus.io v0.24.0
golang.org/x/sys v0.46.0
go.opentelemetry.io/otel v1.44.0
go.opentelemetry.io/otel/exporters/prometheus v0.66.0
go.opentelemetry.io/otel/metric v1.44.0
go.opentelemetry.io/otel/sdk v1.44.0
go.opentelemetry.io/otel/sdk/metric v1.44.0
golang.org/x/sys v0.45.0
google.golang.org/api v0.272.0
google.golang.org/grpc v1.79.3
google.golang.org/protobuf v1.36.11
k8s.io/api v0.35.6
k8s.io/apimachinery v0.35.6
k8s.io/client-go v0.35.6
Expand All @@ -30,19 +38,14 @@ require (
require (
cloud.google.com/go/auth v0.18.2 // indirect
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
cloud.google.com/go/monitoring v1.24.3 // indirect
cloud.google.com/go/trace v1.11.7 // indirect
github.com/aws/aws-sdk-go v1.44.72 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/ebitengine/purego v0.9.1 // indirect
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.5.1 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
Expand All @@ -60,53 +63,41 @@ require (
github.com/go-openapi/swag/stringutils v0.25.5 // indirect
github.com/go-openapi/swag/typeutils v0.25.5 // indirect
github.com/go-openapi/swag/yamlutils v0.25.5 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gnostic-models v0.7.0 // indirect
github.com/google/s2a-go v0.1.9 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect
github.com/googleapis/gax-go/v2 v2.18.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
github.com/prometheus/client_golang v1.23.2 // indirect
github.com/prometheus/prometheus v0.311.3 // indirect
github.com/prometheus/statsd_exporter v0.22.7 // indirect
github.com/tklauser/go-sysconf v0.3.16 // indirect
github.com/tklauser/numcpus v0.11.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect
go.opentelemetry.io/otel v1.42.0 // indirect
go.opentelemetry.io/otel/metric v1.42.0 // indirect
go.opentelemetry.io/otel/trace v1.42.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect
go.opentelemetry.io/otel/trace v1.44.0 // indirect
go.yaml.in/yaml/v2 v2.4.4 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/crypto v0.53.0 // indirect
golang.org/x/net v0.56.0 // indirect
golang.org/x/crypto v0.49.0 // indirect
golang.org/x/net v0.52.0 // indirect
golang.org/x/oauth2 v0.36.0 // indirect
golang.org/x/sync v0.21.0 // indirect
golang.org/x/term v0.44.0 // indirect
golang.org/x/text v0.39.0 // indirect
golang.org/x/sync v0.20.0 // indirect
golang.org/x/term v0.41.0 // indirect
golang.org/x/text v0.35.0 // indirect
golang.org/x/time v0.15.0 // indirect
google.golang.org/genproto v0.0.0-20260217215200-42d3e9bedb6d // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260311181403-84a4fc48630c // indirect
google.golang.org/grpc v1.79.3 // indirect
google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/fsnotify.v1 v1.4.7 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
Expand Down
Loading
Loading