Skip to content

Commit 768a3b2

Browse files
committed
Add lease list metrics
1 parent 175cb5e commit 768a3b2

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

pkg/server/leases/gc_controller.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,25 @@ func (c *GarbageCollectionController) Run(ctx context.Context) {
5454
}
5555

5656
func (c *GarbageCollectionController) gc(ctx context.Context) {
57+
start := time.Now()
5758
leases, err := c.leaseInterface.List(ctx, metav1.ListOptions{LabelSelector: c.labelSelector})
59+
latency := time.Now().Sub(start)
5860
if err != nil {
5961
klog.Errorf("Could not list leases to garbage collect: %v", err)
62+
63+
var apiStatus apierrors.APIStatus
64+
if errors.As(err, &apiStatus) {
65+
status := apiStatus.Status()
66+
metrics.Metrics.ObserveLeaseList(int(status.Code), string(status.Reason))
67+
metrics.Metrics.ObserveLeaseListLatency(int(status.Code), latency)
68+
} else {
69+
klog.Errorf("Lease list error could not be logged to metrics as it is not an APIStatus: %v", err)
70+
}
71+
6072
return
6173
}
74+
metrics.Metrics.ObserveLeaseList(200, "")
75+
metrics.Metrics.ObserveLeaseListLatency(200, latency)
6276

6377
for _, lease := range leases.Items {
6478
if util.IsLeaseValid(c.pc, lease) {

pkg/server/metrics/metrics.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ type ServerMetrics struct {
6060
culledLeases prometheus.Counter
6161
leaseDeleteLatencies *prometheus.HistogramVec
6262
leaseDeletes *prometheus.CounterVec
63+
leaseListLatencies *prometheus.HistogramVec
64+
leaseLists *prometheus.CounterVec
6365
}
6466

6567
// newServerMetrics create a new ServerMetrics, configured with default metric names.
@@ -176,6 +178,24 @@ func newServerMetrics() *ServerMetrics {
176178
},
177179
[]string{"http_status_code", "reason"},
178180
)
181+
leaseListLatencies := prometheus.NewHistogramVec(
182+
prometheus.HistogramOpts{
183+
Namespace: Namespace,
184+
Subsystem: Subsystem,
185+
Name: "lease_list_latency_seconds",
186+
Help: "Latency of lease list calls by the garbage collection controller in seconds.",
187+
},
188+
[]string{"http_status_code"},
189+
)
190+
leaseLists := prometheus.NewCounterVec(
191+
prometheus.CounterOpts{
192+
Namespace: Namespace,
193+
Subsystem: Subsystem,
194+
Name: "lease_list_total",
195+
Help: "Count of lease deletion calls by the garbage collection controller. Labeled by HTTP status code and reason.",
196+
},
197+
[]string{"http_status_code", "reason"},
198+
)
179199
streamPackets := commonmetrics.MakeStreamPacketsTotalMetric(Namespace, Subsystem)
180200
streamErrors := commonmetrics.MakeStreamErrorsTotalMetric(Namespace, Subsystem)
181201
prometheus.MustRegister(endpointLatencies)
@@ -192,6 +212,8 @@ func newServerMetrics() *ServerMetrics {
192212
prometheus.MustRegister(culledLeases)
193213
prometheus.MustRegister(leaseDeleteLatencies)
194214
prometheus.MustRegister(leaseDeletes)
215+
prometheus.MustRegister(leaseListLatencies)
216+
prometheus.MustRegister(leaseLists)
195217
return &ServerMetrics{
196218
endpointLatencies: endpointLatencies,
197219
frontendLatencies: frontendLatencies,
@@ -207,6 +229,8 @@ func newServerMetrics() *ServerMetrics {
207229
culledLeases: culledLeases,
208230
leaseDeleteLatencies: leaseDeleteLatencies,
209231
leaseDeletes: leaseDeletes,
232+
leaseListLatencies: leaseListLatencies,
233+
leaseLists: leaseLists,
210234
}
211235
}
212236

@@ -309,3 +333,11 @@ func (s *ServerMetrics) ObserveLeaseDeleteLatency(httpCode int, latency time.Dur
309333
func (s *ServerMetrics) ObserveLeaseDelete(httpCode int, reason string) {
310334
s.leaseDeletes.WithLabelValues(strconv.Itoa(httpCode), reason).Inc()
311335
}
336+
337+
func (s *ServerMetrics) ObserveLeaseListLatency(httpCode int, latency time.Duration) {
338+
s.leaseListLatencies.WithLabelValues(strconv.Itoa(httpCode)).Observe(latency.Seconds())
339+
}
340+
341+
func (s *ServerMetrics) ObserveLeaseList(httpCode int, reason string) {
342+
s.leaseLists.WithLabelValues(strconv.Itoa(httpCode), reason).Inc()
343+
}

0 commit comments

Comments
 (0)