Skip to content

Commit f9c93c4

Browse files
sagor999roboquat
authored andcommitted
[ws-manager] add metrics to track initialize and finalize of workspaces
1 parent 28db115 commit f9c93c4

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

components/ws-manager/pkg/manager/metrics.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ type metrics struct {
3838
manager *Manager
3939

4040
startupTimeHistVec *prometheus.HistogramVec
41+
initializeTimeHistVec *prometheus.HistogramVec
42+
finalizeTimeHistVec *prometheus.HistogramVec
4143
totalStartsCounterVec *prometheus.CounterVec
4244
totalStopsCounterVec *prometheus.CounterVec
4345
totalOpenPortGauge prometheus.GaugeFunc
@@ -58,6 +60,20 @@ func newMetrics(m *Manager) *metrics {
5860
// same as components/ws-manager-bridge/src/prometheus-metrics-exporter.ts#L15
5961
Buckets: prometheus.ExponentialBuckets(2, 2, 10),
6062
}, []string{"type"}),
63+
initializeTimeHistVec: prometheus.NewHistogramVec(prometheus.HistogramOpts{
64+
Namespace: metricsNamespace,
65+
Subsystem: metricsWorkspaceSubsystem,
66+
Name: "workspace_initialize_seconds",
67+
Help: "time it took to initialize workspace",
68+
Buckets: prometheus.ExponentialBuckets(2, 2, 10),
69+
}, []string{"type"}),
70+
finalizeTimeHistVec: prometheus.NewHistogramVec(prometheus.HistogramOpts{
71+
Namespace: metricsNamespace,
72+
Subsystem: metricsWorkspaceSubsystem,
73+
Name: "workspace_finalize_seconds",
74+
Help: "time it took to finalize workspace",
75+
Buckets: prometheus.ExponentialBuckets(2, 2, 10),
76+
}, []string{"type"}),
6177
totalStartsCounterVec: prometheus.NewCounterVec(prometheus.CounterOpts{
6278
Namespace: metricsNamespace,
6379
Subsystem: metricsWorkspaceSubsystem,
@@ -118,6 +134,8 @@ func newTotalOpenPortGaugeHandler(m *Manager) func() float64 {
118134
func (m *metrics) Register(reg prometheus.Registerer) error {
119135
collectors := []prometheus.Collector{
120136
m.startupTimeHistVec,
137+
m.initializeTimeHistVec,
138+
m.finalizeTimeHistVec,
121139
newPhaseTotalVec(m.manager),
122140
newWorkspaceActivityVec(m.manager),
123141
newTimeoutSettingsVec(m.manager),

components/ws-manager/pkg/manager/monitor.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,7 @@ func (m *Monitor) initializeWorkspaceContent(ctx context.Context, pod *corev1.Po
734734
// we are already initialising
735735
return nil
736736
}
737-
737+
t := time.Now()
738738
err = retryIfUnavailable(ctx, func(ctx context.Context) error {
739739
_, err = snc.InitWorkspace(ctx, &wsdaemon.InitWorkspaceRequest{
740740
Id: workspaceID,
@@ -755,6 +755,12 @@ func (m *Monitor) initializeWorkspaceContent(ctx context.Context, pod *corev1.Po
755755
} else {
756756
err = handleGRPCError(ctx, err)
757757
}
758+
wsType := pod.Labels[wsk8s.TypeLabel]
759+
hist, errHist := m.manager.metrics.initializeTimeHistVec.GetMetricWithLabelValues(wsType)
760+
if errHist != nil {
761+
log.WithError(errHist).WithField("type", wsType).Warn("cannot get initialize time histogram metric")
762+
}
763+
hist.Observe(time.Since(t).Seconds())
758764
if err != nil {
759765
return xerrors.Errorf("cannot initialize workspace: %w", err)
760766
}
@@ -916,6 +922,7 @@ func (m *Monitor) finalizeWorkspaceContent(ctx context.Context, wso *workspaceOb
916922
backupError error
917923
gitStatus *csapi.GitStatus
918924
)
925+
t := time.Now()
919926
for i := 0; i < wsdaemonMaxAttempts; i++ {
920927
span.LogKV("attempt", i)
921928
didSometing, gs, err := doFinalize()
@@ -959,6 +966,12 @@ func (m *Monitor) finalizeWorkspaceContent(ctx context.Context, wso *workspaceOb
959966
}
960967
break
961968
}
969+
wsType := api.WorkspaceType_name[int32(tpe)]
970+
hist, err := m.manager.metrics.finalizeTimeHistVec.GetMetricWithLabelValues(wsType)
971+
if err != nil {
972+
log.WithError(err).WithField("type", wsType).Warn("cannot get finalize time histogram metric")
973+
}
974+
hist.Observe(time.Since(t).Seconds())
962975

963976
disposalStatus = &workspaceDisposalStatus{
964977
BackupComplete: true,

0 commit comments

Comments
 (0)