Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
3781507
feat(exporters): replace opencensus with opentelemetry
daveoy Sep 26, 2025
d670640
fix(test): allow for summary and histogram types to be emit
daveoy Sep 26, 2025
9756747
fix(otel): remove otel_scope labels
daveoy Sep 26, 2025
5585dc8
fix(stackdriver_exporter): filter resource attributes for gcp
daveoy Feb 17, 2026
3477a29
fix(metrics): retain early nil return with no name
daveoy Feb 17, 2026
568b612
chore(exporters): remove deprecated prometheus opts, use otel translator
daveoy Feb 17, 2026
e0f0a05
feat(metric): use metricdata for unit tests
daveoy Feb 17, 2026
f2bba3e
fix(metrics/test): test our New() funcs
daveoy Feb 17, 2026
c6afce7
feat(stackdriver_exporter/test): add cloudmock and use it to test met…
daveoy Feb 18, 2026
869be6f
chore(lint): make the linter happy by not returning some errs
daveoy Feb 18, 2026
a8951ef
fix(stackdriver): restore gce_instance resource, instance_name and ap…
hakman Jul 5, 2026
e856a85
fix(prometheus): serve metrics from a dedicated registry
hakman Jul 5, 2026
ad515aa
fix(metrics): error on unsupported aggregation and undeclared labels
hakman Jul 5, 2026
181a014
refactor(metrics): dedupe int64/float64 metric implementations
hakman Jul 5, 2026
98c2be2
chore: remove dead code from metrics, otel and cloudmock
hakman Jul 5, 2026
30593ca
refactor(metrics): simplify otelMetric internals
hakman Jul 5, 2026
2b98aa4
fix(prometheus): drop target_info from scrape output
hakman Jul 5, 2026
7631035
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
29 changes: 7 additions & 22 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,30 @@ go 1.26.5

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/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
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.46.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 @@ -35,20 +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/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect
github.com/aws/aws-sdk-go v1.44.72 // 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 @@ -66,33 +63,24 @@ 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.63.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect
go.opentelemetry.io/otel/metric v1.44.0 // indirect
go.opentelemetry.io/otel/sdk v1.44.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
Expand All @@ -106,13 +94,10 @@ require (
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