Skip to content

Commit 35019bf

Browse files
committed
Register metrics manager for node server and begin emitting metrics.
1 parent 0f78ba0 commit 35019bf

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

cmd/gce-pd-csi-driver/main.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,22 @@ func handle() {
151151
}
152152

153153
var metricsManager *metrics.MetricsManager = nil
154-
if *runControllerService && *httpEndpoint != "" {
154+
runServiceWithMetrics := *runControllerService || *runNodeService
155+
if runServiceWithMetrics && *httpEndpoint != "" {
155156
mm := metrics.NewMetricsManager()
156157
mm.InitializeHttpHandler(*httpEndpoint, *metricsPath)
157-
mm.RegisterPDCSIMetric()
158158

159-
if metrics.IsGKEComponentVersionAvailable() {
160-
mm.EmitGKEComponentVersion()
159+
switch {
160+
case *runControllerService:
161+
mm.RegisterPDCSIMetric()
162+
if metrics.IsGKEComponentVersionAvailable() {
163+
mm.EmitGKEComponentVersion()
164+
}
165+
case *runNodeService:
166+
if err := mm.EmmitProcessStartTime(); err != nil {
167+
klog.Errorf("Failed to emit process start time: %v", err.Error())
168+
}
169+
mm.RegisterMountMetric()
161170
}
162171
metricsManager = &mm
163172
}
@@ -266,6 +275,7 @@ func handle() {
266275
EnableDataCache: *enableDataCacheFlag,
267276
DataCacheEnabledNodePool: isDataCacheEnabledNodePool,
268277
SysfsPath: "/sys",
278+
MetricsManager: metricsManager,
269279
}
270280
nodeServer = driver.NewNodeServer(gceDriver, mounter, deviceUtils, meta, statter, nsArgs)
271281

pkg/gce-pd-csi-driver/gce-pd-driver.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ func NewNodeServer(gceDriver *GCEDriver, mounter *mount.SafeFormatAndMount, devi
158158
EnableDataCache: args.EnableDataCache,
159159
DataCacheEnabledNodePool: args.DataCacheEnabledNodePool,
160160
SysfsPath: args.SysfsPath,
161+
metricsManager: args.MetricsManager,
161162
}
162163
}
163164

pkg/gce-pd-csi-driver/node.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import (
4040
"sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/pkg/common"
4141
"sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/pkg/deviceutils"
4242
metadataservice "sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/pkg/gce-cloud-provider/metadata"
43+
"sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/pkg/metrics"
4344
mountmanager "sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/pkg/mount-manager"
4445
"sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/pkg/resizefs"
4546
)
@@ -77,6 +78,8 @@ type GCENodeServer struct {
7778
// Embed UnimplementedNodeServer to ensure the driver returns Unimplemented for any
7879
// new RPC methods that might be introduced in future versions of the spec.
7980
csi.UnimplementedNodeServer
81+
82+
metricsManager *metrics.MetricsManager
8083
}
8184

8285
type NodeServerArgs struct {
@@ -92,6 +95,8 @@ type NodeServerArgs struct {
9295

9396
// SysfsPath defaults to "/sys", except if it's a unit test.
9497
SysfsPath string
98+
99+
MetricsManager *metrics.MetricsManager
95100
}
96101

97102
var _ csi.NodeServer = &GCENodeServer{}
@@ -442,6 +447,10 @@ func (ns *GCENodeServer) NodeStageVolume(ctx context.Context, req *csi.NodeStage
442447
return &csi.NodeStageVolumeResponse{}, nil
443448
}
444449
}
450+
451+
if ns.metricsManager != nil {
452+
ns.metricsManager.RecordMountErrorMetric(err)
453+
}
445454
return nil, status.Error(codes.Internal,
446455
fmt.Sprintf("Failed to format and mount device from (%q) to (%q) with fstype (%q) and options (%q): %v",
447456
devicePath, stagingTargetPath, fstype, options, err.Error()))

0 commit comments

Comments
 (0)