1// Copyright 2016 The etcd Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package backend
16
17import "github.com/prometheus/client_golang/prometheus"
18
19var (
20	commitDurations = prometheus.NewHistogram(prometheus.HistogramOpts{
21		Namespace: "etcd",
22		Subsystem: "disk",
23		Name:      "backend_commit_duration_seconds",
24		Help:      "The latency distributions of commit called by backend.",
25
26		// lowest bucket start of upper bound 0.001 sec (1 ms) with factor 2
27		// highest bucket start of 0.001 sec * 2^13 == 8.192 sec
28		Buckets: prometheus.ExponentialBuckets(0.001, 2, 14),
29	})
30
31	defragDurations = prometheus.NewHistogram(prometheus.HistogramOpts{
32		Namespace: "etcd",
33		Subsystem: "disk",
34		Name:      "backend_defrag_duration_seconds",
35		Help:      "The latency distribution of backend defragmentation.",
36
37		// 100 MB usually takes 1 sec, so start with 10 MB of 100 ms
38		// lowest bucket start of upper bound 0.1 sec (100 ms) with factor 2
39		// highest bucket start of 0.1 sec * 2^12 == 409.6 sec
40		Buckets: prometheus.ExponentialBuckets(.1, 2, 13),
41	})
42
43	snapshotDurations = prometheus.NewHistogram(prometheus.HistogramOpts{
44		Namespace: "etcd",
45		Subsystem: "disk",
46		Name:      "backend_snapshot_duration_seconds",
47		Help:      "The latency distribution of backend snapshots.",
48
49		// lowest bucket start of upper bound 0.01 sec (10 ms) with factor 2
50		// highest bucket start of 0.01 sec * 2^16 == 655.36 sec
51		Buckets: prometheus.ExponentialBuckets(.01, 2, 17),
52	})
53)
54
55func init() {
56	prometheus.MustRegister(commitDurations)
57	prometheus.MustRegister(defragDurations)
58	prometheus.MustRegister(snapshotDurations)
59}
60