From 230106dd3cb928d8093439e8af6b0a9b4d46241d Mon Sep 17 00:00:00 2001 From: fanmin shi Date: Fri, 5 May 2017 16:34:22 -0700 Subject: [PATCH] backend: add prometheus metric for large snapshot duration. FIXES #7878 --- mvcc/backend/backend.go | 1 + mvcc/backend/metrics.go | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/mvcc/backend/backend.go b/mvcc/backend/backend.go index a94cd65a70b..1ce140a9db1 100644 --- a/mvcc/backend/backend.go +++ b/mvcc/backend/backend.go @@ -176,6 +176,7 @@ func (b *backend) Snapshot() Snapshot { case <-ticker.C: plog.Warningf("snapshotting is taking more than %v seconds to finish [started at %v]", time.Since(start).Seconds(), start) case <-stopc: + snapshotDurations.Observe(time.Since(start).Seconds()) return } } diff --git a/mvcc/backend/metrics.go b/mvcc/backend/metrics.go index 34a56a91956..30a38801476 100644 --- a/mvcc/backend/metrics.go +++ b/mvcc/backend/metrics.go @@ -24,8 +24,18 @@ var ( Help: "The latency distributions of commit called by backend.", Buckets: prometheus.ExponentialBuckets(0.001, 2, 14), }) + + snapshotDurations = prometheus.NewHistogram(prometheus.HistogramOpts{ + Namespace: "etcd", + Subsystem: "disk", + Name: "backend_snapshot_duration_seconds", + Help: "The latency distribution of backend snapshots.", + // 10 ms -> 655 seconds + Buckets: prometheus.ExponentialBuckets(.01, 2, 17), + }) ) func init() { prometheus.MustRegister(commitDurations) + prometheus.MustRegister(snapshotDurations) }