mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #6930 from xiang90/grpc_metrics
grpcproxy: add cache related metrics
This commit is contained in:
commit
d844440ffb
5
proxy/grpcproxy/cache/store.go
vendored
5
proxy/grpcproxy/cache/store.go
vendored
@ -34,6 +34,7 @@ type Cache interface {
|
||||
Get(req *pb.RangeRequest) (*pb.RangeResponse, error)
|
||||
Compact(revision int64)
|
||||
Invalidate(key []byte, endkey []byte)
|
||||
Size() int
|
||||
}
|
||||
|
||||
// keyFunc returns the key of an request, which is used to look up in the cache for it's caching response.
|
||||
@ -154,3 +155,7 @@ func (c *cache) Compact(revision int64) {
|
||||
c.compactedRev = revision
|
||||
}
|
||||
}
|
||||
|
||||
func (c *cache) Size() int {
|
||||
return c.lru.Len()
|
||||
}
|
||||
|
@ -39,11 +39,14 @@ func (p *kvProxy) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRespo
|
||||
resp, err := p.cache.Get(r)
|
||||
switch err {
|
||||
case nil:
|
||||
cacheHits.Inc()
|
||||
return resp, nil
|
||||
case cache.ErrCompacted:
|
||||
cacheHits.Inc()
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
cachedMisses.Inc()
|
||||
|
||||
resp, err := p.kv.Do(ctx, RangeRequestToOp(r))
|
||||
if err != nil {
|
||||
@ -55,18 +58,23 @@ func (p *kvProxy) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRespo
|
||||
req.Serializable = true
|
||||
gresp := (*pb.RangeResponse)(resp.Get())
|
||||
p.cache.Add(&req, gresp)
|
||||
cacheKeys.Set(float64(p.cache.Size()))
|
||||
|
||||
return gresp, nil
|
||||
}
|
||||
|
||||
func (p *kvProxy) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error) {
|
||||
p.cache.Invalidate(r.Key, nil)
|
||||
cacheKeys.Set(float64(p.cache.Size()))
|
||||
|
||||
resp, err := p.kv.Do(ctx, PutRequestToOp(r))
|
||||
return (*pb.PutResponse)(resp.Put()), err
|
||||
}
|
||||
|
||||
func (p *kvProxy) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) {
|
||||
p.cache.Invalidate(r.Key, r.RangeEnd)
|
||||
cacheKeys.Set(float64(p.cache.Size()))
|
||||
|
||||
resp, err := p.kv.Do(ctx, DelRequestToOp(r))
|
||||
return (*pb.DeleteRangeResponse)(resp.Del()), err
|
||||
}
|
||||
@ -120,6 +128,9 @@ func (p *kvProxy) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, e
|
||||
} else {
|
||||
p.txnToCache(r.Failure, resp.Responses)
|
||||
}
|
||||
|
||||
cacheKeys.Set(float64(p.cache.Size()))
|
||||
|
||||
return (*pb.TxnResponse)(resp), nil
|
||||
}
|
||||
|
||||
@ -134,6 +145,8 @@ func (p *kvProxy) Compact(ctx context.Context, r *pb.CompactionRequest) (*pb.Com
|
||||
p.cache.Compact(r.Revision)
|
||||
}
|
||||
|
||||
cacheKeys.Set(float64(p.cache.Size()))
|
||||
|
||||
return (*pb.CompactionResponse)(resp), err
|
||||
}
|
||||
|
||||
|
@ -29,9 +29,30 @@ var (
|
||||
Name: "events_coalescing_total",
|
||||
Help: "Total number of events coalescing",
|
||||
})
|
||||
cacheKeys = prometheus.NewGauge(prometheus.GaugeOpts{
|
||||
Namespace: "etcd",
|
||||
Subsystem: "grpc_proxy",
|
||||
Name: "cache_keys_total",
|
||||
Help: "Total number of keys/ranges cached",
|
||||
})
|
||||
cacheHits = prometheus.NewGauge(prometheus.GaugeOpts{
|
||||
Namespace: "etcd",
|
||||
Subsystem: "grpc_proxy",
|
||||
Name: "cache_hits_total",
|
||||
Help: "Total number of cache hits",
|
||||
})
|
||||
cachedMisses = prometheus.NewGauge(prometheus.GaugeOpts{
|
||||
Namespace: "etcd",
|
||||
Subsystem: "grpc_proxy",
|
||||
Name: "cache_misses_total",
|
||||
Help: "Total number of cache misses",
|
||||
})
|
||||
)
|
||||
|
||||
func init() {
|
||||
prometheus.MustRegister(watchersCoalescing)
|
||||
prometheus.MustRegister(eventsCoalescing)
|
||||
prometheus.MustRegister(cacheKeys)
|
||||
prometheus.MustRegister(cacheHits)
|
||||
prometheus.MustRegister(cachedMisses)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user