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)
|
Get(req *pb.RangeRequest) (*pb.RangeResponse, error)
|
||||||
Compact(revision int64)
|
Compact(revision int64)
|
||||||
Invalidate(key []byte, endkey []byte)
|
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.
|
// 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
|
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)
|
resp, err := p.cache.Get(r)
|
||||||
switch err {
|
switch err {
|
||||||
case nil:
|
case nil:
|
||||||
|
cacheHits.Inc()
|
||||||
return resp, nil
|
return resp, nil
|
||||||
case cache.ErrCompacted:
|
case cache.ErrCompacted:
|
||||||
|
cacheHits.Inc()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
cachedMisses.Inc()
|
||||||
|
|
||||||
resp, err := p.kv.Do(ctx, RangeRequestToOp(r))
|
resp, err := p.kv.Do(ctx, RangeRequestToOp(r))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -55,18 +58,23 @@ func (p *kvProxy) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRespo
|
|||||||
req.Serializable = true
|
req.Serializable = true
|
||||||
gresp := (*pb.RangeResponse)(resp.Get())
|
gresp := (*pb.RangeResponse)(resp.Get())
|
||||||
p.cache.Add(&req, gresp)
|
p.cache.Add(&req, gresp)
|
||||||
|
cacheKeys.Set(float64(p.cache.Size()))
|
||||||
|
|
||||||
return gresp, nil
|
return gresp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *kvProxy) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error) {
|
func (p *kvProxy) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error) {
|
||||||
p.cache.Invalidate(r.Key, nil)
|
p.cache.Invalidate(r.Key, nil)
|
||||||
|
cacheKeys.Set(float64(p.cache.Size()))
|
||||||
|
|
||||||
resp, err := p.kv.Do(ctx, PutRequestToOp(r))
|
resp, err := p.kv.Do(ctx, PutRequestToOp(r))
|
||||||
return (*pb.PutResponse)(resp.Put()), err
|
return (*pb.PutResponse)(resp.Put()), err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *kvProxy) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) {
|
func (p *kvProxy) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) {
|
||||||
p.cache.Invalidate(r.Key, r.RangeEnd)
|
p.cache.Invalidate(r.Key, r.RangeEnd)
|
||||||
|
cacheKeys.Set(float64(p.cache.Size()))
|
||||||
|
|
||||||
resp, err := p.kv.Do(ctx, DelRequestToOp(r))
|
resp, err := p.kv.Do(ctx, DelRequestToOp(r))
|
||||||
return (*pb.DeleteRangeResponse)(resp.Del()), err
|
return (*pb.DeleteRangeResponse)(resp.Del()), err
|
||||||
}
|
}
|
||||||
@ -120,6 +128,9 @@ func (p *kvProxy) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, e
|
|||||||
} else {
|
} else {
|
||||||
p.txnToCache(r.Failure, resp.Responses)
|
p.txnToCache(r.Failure, resp.Responses)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cacheKeys.Set(float64(p.cache.Size()))
|
||||||
|
|
||||||
return (*pb.TxnResponse)(resp), nil
|
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)
|
p.cache.Compact(r.Revision)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cacheKeys.Set(float64(p.cache.Size()))
|
||||||
|
|
||||||
return (*pb.CompactionResponse)(resp), err
|
return (*pb.CompactionResponse)(resp), err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,9 +29,30 @@ var (
|
|||||||
Name: "events_coalescing_total",
|
Name: "events_coalescing_total",
|
||||||
Help: "Total number of events coalescing",
|
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() {
|
func init() {
|
||||||
prometheus.MustRegister(watchersCoalescing)
|
prometheus.MustRegister(watchersCoalescing)
|
||||||
prometheus.MustRegister(eventsCoalescing)
|
prometheus.MustRegister(eventsCoalescing)
|
||||||
|
prometheus.MustRegister(cacheKeys)
|
||||||
|
prometheus.MustRegister(cacheHits)
|
||||||
|
prometheus.MustRegister(cachedMisses)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user