From c369e5a13b1424e1fe4fec0c9c92d8c179fd1079 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sat, 22 Jun 2019 12:23:25 -0700 Subject: [PATCH] add metrics for filer store --- weed/filer2/filerstore.go | 23 +++++++++++++++++++++++ weed/stats/metrics.go | 19 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/weed/filer2/filerstore.go b/weed/filer2/filerstore.go index fa5979b30..bab4722db 100644 --- a/weed/filer2/filerstore.go +++ b/weed/filer2/filerstore.go @@ -3,7 +3,10 @@ package filer2 import ( "context" "errors" + "time" + "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" + "github.com/chrislusf/seaweedfs/weed/stats" "github.com/chrislusf/seaweedfs/weed/util" ) @@ -45,16 +48,28 @@ func (fsw *FilerStoreWrapper) Initialize(configuration util.Configuration) error } func (fsw *FilerStoreWrapper) InsertEntry(ctx context.Context, entry *Entry) error { + stats.FilerStoreCounter.WithLabelValues(fsw.actualStore.GetName(), "insert").Inc() + start := time.Now() + defer func() { stats.FilerStoreHistogram.WithLabelValues(fsw.actualStore.GetName(), "insert").Observe(time.Since(start).Seconds()) }() + filer_pb.BeforeEntrySerialization(entry.Chunks) return fsw.actualStore.InsertEntry(ctx, entry) } func (fsw *FilerStoreWrapper) UpdateEntry(ctx context.Context, entry *Entry) error { + stats.FilerStoreCounter.WithLabelValues(fsw.actualStore.GetName(), "update").Inc() + start := time.Now() + defer func() { stats.FilerStoreHistogram.WithLabelValues(fsw.actualStore.GetName(), "update").Observe(time.Since(start).Seconds()) }() + filer_pb.BeforeEntrySerialization(entry.Chunks) return fsw.actualStore.UpdateEntry(ctx, entry) } func (fsw *FilerStoreWrapper) FindEntry(ctx context.Context, fp FullPath) (entry *Entry, err error) { + stats.FilerStoreCounter.WithLabelValues(fsw.actualStore.GetName(), "find").Inc() + start := time.Now() + defer func() { stats.FilerStoreHistogram.WithLabelValues(fsw.actualStore.GetName(), "find").Observe(time.Since(start).Seconds()) }() + entry, err = fsw.actualStore.FindEntry(ctx, fp) if err != nil { return nil, err @@ -64,10 +79,18 @@ func (fsw *FilerStoreWrapper) FindEntry(ctx context.Context, fp FullPath) (entry } func (fsw *FilerStoreWrapper) DeleteEntry(ctx context.Context, fp FullPath) (err error) { + stats.FilerStoreCounter.WithLabelValues(fsw.actualStore.GetName(), "delete").Inc() + start := time.Now() + defer func() { stats.FilerStoreHistogram.WithLabelValues(fsw.actualStore.GetName(), "delete").Observe(time.Since(start).Seconds()) }() + return fsw.actualStore.DeleteEntry(ctx, fp) } func (fsw *FilerStoreWrapper) ListDirectoryEntries(ctx context.Context, dirPath FullPath, startFileName string, includeStartFile bool, limit int) ([]*Entry, error) { + stats.FilerStoreCounter.WithLabelValues(fsw.actualStore.GetName(), "list").Inc() + start := time.Now() + defer func() { stats.FilerStoreHistogram.WithLabelValues(fsw.actualStore.GetName(), "list").Observe(time.Since(start).Seconds()) }() + entries, err := fsw.actualStore.ListDirectoryEntries(ctx, dirPath, startFileName, includeStartFile, limit) if err != nil { return nil, err diff --git a/weed/stats/metrics.go b/weed/stats/metrics.go index b7f184e87..46ea6d74e 100644 --- a/weed/stats/metrics.go +++ b/weed/stats/metrics.go @@ -31,6 +31,23 @@ var ( Buckets: prometheus.ExponentialBuckets(0.0001, 2, 24), }, []string{"type"}) + FilerStoreCounter = prometheus.NewCounterVec( + prometheus.CounterOpts{ + Namespace: "SeaweedFS", + Subsystem: "filerStore", + Name: "request_total", + Help: "Counter of filer store requests.", + }, []string{"store", "type"}) + + FilerStoreHistogram = prometheus.NewHistogramVec( + prometheus.HistogramOpts{ + Namespace: "SeaweedFS", + Subsystem: "filerStore", + Name: "request_seconds", + Help: "Bucketed histogram of filer store request processing time.", + Buckets: prometheus.ExponentialBuckets(0.0001, 2, 24), + }, []string{"store", "type"}) + VolumeServerRequestCounter = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: "SeaweedFS", @@ -77,6 +94,8 @@ func init() { FilerGather.MustRegister(FilerRequestCounter) FilerGather.MustRegister(FilerRequestHistogram) + FilerGather.MustRegister(FilerStoreCounter) + FilerGather.MustRegister(FilerStoreHistogram) VolumeServerGather.MustRegister(VolumeServerRequestCounter) VolumeServerGather.MustRegister(VolumeServerRequestHistogram)