Skip to content

Commit e1946b2

Browse files
committed
Added metrics for lock acquiring attempts
1 parent f529edd commit e1946b2

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

pkg/server/prometheus_exporter.go

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,55 @@
11
package server
22

33
import (
4-
"github.com/prometheus/client_golang/prometheus"
54
"strings"
5+
6+
"github.com/prometheus/client_golang/prometheus"
67
)
78

89
var (
10+
buildInfoGaugeVec = prometheus.NewGaugeVec(
11+
prometheus.GaugeOpts{
12+
Name: "sidecache_admission_build_info",
13+
Help: "Build info for sidecache admission webhook",
14+
}, []string{"version"})
15+
916
cacheHitCounter = prometheus.NewCounter(
1017
prometheus.CounterOpts{
1118
Namespace: "sidecache_" + ProjectName,
1219
Name: "cache_hit_counter",
1320
Help: "Cache hit count",
1421
})
1522

23+
lockAcquiringAttemptsHistogram = prometheus.NewHistogram(
24+
prometheus.HistogramOpts{
25+
Namespace: "sidecache_" + ProjectName,
26+
Name: "lock_acquiring_attempts_histogram",
27+
Help: "Lock acquiring attempts histogram",
28+
Buckets: []float64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 100},
29+
})
30+
1631
totalRequestCounter = prometheus.NewCounter(
1732
prometheus.CounterOpts{
1833
Namespace: "sidecache_" + ProjectName,
1934
Name: "all_request_hit_counter",
2035
Help: "All request hit counter",
2136
})
22-
23-
buildInfoGaugeVec = prometheus.NewGaugeVec(
24-
prometheus.GaugeOpts{
25-
Name: "sidecache_admission_build_info",
26-
Help: "Build info for sidecache admission webhook",
27-
}, []string{"version"})
2837
)
2938

3039
type Prometheus struct {
31-
CacheHitCounter prometheus.Counter
32-
TotalRequestCounter prometheus.Counter
40+
CacheHitCounter prometheus.Counter
41+
LockAcquiringAttemptsHistogram prometheus.Histogram
42+
TotalRequestCounter prometheus.Counter
3343
}
3444

3545
func NewPrometheusClient() *Prometheus {
36-
prometheus.MustRegister(cacheHitCounter, totalRequestCounter, buildInfoGaugeVec)
46+
prometheus.MustRegister(buildInfoGaugeVec, cacheHitCounter, lockAcquiringAttemptsHistogram, totalRequestCounter)
3747

38-
return &Prometheus{TotalRequestCounter: totalRequestCounter, CacheHitCounter: cacheHitCounter}
48+
return &Prometheus{
49+
CacheHitCounter: cacheHitCounter,
50+
LockAcquiringAttemptsHistogram: lockAcquiringAttemptsHistogram,
51+
TotalRequestCounter: totalRequestCounter,
52+
}
3953
}
4054

4155
func BuildInfo(admission string) {

pkg/server/server.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"encoding/hex"
88
"encoding/json"
99
"errors"
10-
"github.com/zeriontech/sidecache/pkg/lock"
1110
"io"
1211
"io/ioutil"
1312
"net/http"
@@ -19,6 +18,7 @@ import (
1918

2019
"github.com/prometheus/client_golang/prometheus/promhttp"
2120
"github.com/zeriontech/sidecache/pkg/cache"
21+
"github.com/zeriontech/sidecache/pkg/lock"
2222
"go.uber.org/zap"
2323
)
2424

@@ -160,6 +160,7 @@ func (server CacheServer) CacheHandler(w http.ResponseWriter, r *http.Request) {
160160
// try to acquire the lock
161161
server.Logger.Info("acquiring the lock", zap.String("key", key))
162162
if err := server.LockMgr.Acquire(key, LockTtl); err == nil {
163+
server.Prometheus.LockAcquiringAttemptsHistogram.Observe(float64(attempt) + 1)
163164
server.Logger.Info("lock acquired", zap.String("key", key))
164165
defer func() {
165166
// release the lock

0 commit comments

Comments
 (0)