155 lines
5.3 KiB
Go
155 lines
5.3 KiB
Go
|
package blockstore
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
"go.opencensus.io/stats"
|
||
|
"go.opencensus.io/stats/view"
|
||
|
"go.opencensus.io/tag"
|
||
|
)
|
||
|
|
||
|
//
|
||
|
// Currently unused, but kept in repo in case we introduce one of the candidate
|
||
|
// cache implementations (Freecache, Ristretto), both of which report these
|
||
|
// metrics.
|
||
|
//
|
||
|
|
||
|
// CacheMetricsEmitInterval is the interval at which metrics are emitted onto
|
||
|
// OpenCensus.
|
||
|
var CacheMetricsEmitInterval = 5 * time.Second
|
||
|
|
||
|
var (
|
||
|
CacheName, _ = tag.NewKey("cache_name")
|
||
|
)
|
||
|
|
||
|
// CacheMeasures groups all metrics emitted by the blockstore caches.
|
||
|
var CacheMeasures = struct {
|
||
|
HitRatio *stats.Float64Measure
|
||
|
Hits *stats.Int64Measure
|
||
|
Misses *stats.Int64Measure
|
||
|
Entries *stats.Int64Measure
|
||
|
QueriesServed *stats.Int64Measure
|
||
|
Adds *stats.Int64Measure
|
||
|
Updates *stats.Int64Measure
|
||
|
Evictions *stats.Int64Measure
|
||
|
CostAdded *stats.Int64Measure
|
||
|
CostEvicted *stats.Int64Measure
|
||
|
SetsDropped *stats.Int64Measure
|
||
|
SetsRejected *stats.Int64Measure
|
||
|
QueriesDropped *stats.Int64Measure
|
||
|
}{
|
||
|
HitRatio: stats.Float64("blockstore/cache/hit_ratio", "Hit ratio of blockstore cache", stats.UnitDimensionless),
|
||
|
Hits: stats.Int64("blockstore/cache/hits", "Total number of hits at blockstore cache", stats.UnitDimensionless),
|
||
|
Misses: stats.Int64("blockstore/cache/misses", "Total number of misses at blockstore cache", stats.UnitDimensionless),
|
||
|
Entries: stats.Int64("blockstore/cache/entry_count", "Total number of entries currently in the blockstore cache", stats.UnitDimensionless),
|
||
|
QueriesServed: stats.Int64("blockstore/cache/queries_served", "Total number of queries served by the blockstore cache", stats.UnitDimensionless),
|
||
|
Adds: stats.Int64("blockstore/cache/adds", "Total number of adds to blockstore cache", stats.UnitDimensionless),
|
||
|
Updates: stats.Int64("blockstore/cache/updates", "Total number of updates in blockstore cache", stats.UnitDimensionless),
|
||
|
Evictions: stats.Int64("blockstore/cache/evictions", "Total number of evictions from blockstore cache", stats.UnitDimensionless),
|
||
|
CostAdded: stats.Int64("blockstore/cache/cost_added", "Total cost (byte size) of entries added into blockstore cache", stats.UnitBytes),
|
||
|
CostEvicted: stats.Int64("blockstore/cache/cost_evicted", "Total cost (byte size) of entries evicted by blockstore cache", stats.UnitBytes),
|
||
|
SetsDropped: stats.Int64("blockstore/cache/sets_dropped", "Total number of sets dropped by blockstore cache", stats.UnitDimensionless),
|
||
|
SetsRejected: stats.Int64("blockstore/cache/sets_rejected", "Total number of sets rejected by blockstore cache", stats.UnitDimensionless),
|
||
|
QueriesDropped: stats.Int64("blockstore/cache/queries_dropped", "Total number of queries dropped by blockstore cache", stats.UnitDimensionless),
|
||
|
}
|
||
|
|
||
|
// CacheViews groups all cache-related default views.
|
||
|
var CacheViews = struct {
|
||
|
HitRatio *view.View
|
||
|
Hits *view.View
|
||
|
Misses *view.View
|
||
|
Entries *view.View
|
||
|
QueriesServed *view.View
|
||
|
Adds *view.View
|
||
|
Updates *view.View
|
||
|
Evictions *view.View
|
||
|
CostAdded *view.View
|
||
|
CostEvicted *view.View
|
||
|
SetsDropped *view.View
|
||
|
SetsRejected *view.View
|
||
|
QueriesDropped *view.View
|
||
|
}{
|
||
|
HitRatio: &view.View{
|
||
|
Measure: CacheMeasures.HitRatio,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
Hits: &view.View{
|
||
|
Measure: CacheMeasures.Hits,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
Misses: &view.View{
|
||
|
Measure: CacheMeasures.Misses,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
Entries: &view.View{
|
||
|
Measure: CacheMeasures.Entries,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
QueriesServed: &view.View{
|
||
|
Measure: CacheMeasures.QueriesServed,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
Adds: &view.View{
|
||
|
Measure: CacheMeasures.Adds,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
Updates: &view.View{
|
||
|
Measure: CacheMeasures.Updates,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
Evictions: &view.View{
|
||
|
Measure: CacheMeasures.Evictions,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
CostAdded: &view.View{
|
||
|
Measure: CacheMeasures.CostAdded,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
CostEvicted: &view.View{
|
||
|
Measure: CacheMeasures.CostEvicted,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
SetsDropped: &view.View{
|
||
|
Measure: CacheMeasures.SetsDropped,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
SetsRejected: &view.View{
|
||
|
Measure: CacheMeasures.SetsRejected,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
QueriesDropped: &view.View{
|
||
|
Measure: CacheMeasures.QueriesDropped,
|
||
|
Aggregation: view.LastValue(),
|
||
|
TagKeys: []tag.Key{CacheName},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
// DefaultViews exports all default views for this package.
|
||
|
var DefaultViews = []*view.View{
|
||
|
CacheViews.HitRatio,
|
||
|
CacheViews.Hits,
|
||
|
CacheViews.Misses,
|
||
|
CacheViews.Entries,
|
||
|
CacheViews.QueriesServed,
|
||
|
CacheViews.Adds,
|
||
|
CacheViews.Updates,
|
||
|
CacheViews.Evictions,
|
||
|
CacheViews.CostAdded,
|
||
|
CacheViews.CostEvicted,
|
||
|
CacheViews.SetsDropped,
|
||
|
CacheViews.SetsRejected,
|
||
|
CacheViews.QueriesDropped,
|
||
|
}
|