1// Copyright 2015 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 rafthttp 16 17import "github.com/prometheus/client_golang/prometheus" 18 19var ( 20 activePeers = prometheus.NewGaugeVec(prometheus.GaugeOpts{ 21 Namespace: "etcd", 22 Subsystem: "network", 23 Name: "active_peers", 24 Help: "The current number of active peer connections.", 25 }, 26 []string{"Local", "Remote"}, 27 ) 28 29 disconnectedPeers = prometheus.NewCounterVec(prometheus.CounterOpts{ 30 Namespace: "etcd", 31 Subsystem: "network", 32 Name: "disconnected_peers_total", 33 Help: "The total number of disconnected peers.", 34 }, 35 []string{"Local", "Remote"}, 36 ) 37 38 sentBytes = prometheus.NewCounterVec(prometheus.CounterOpts{ 39 Namespace: "etcd", 40 Subsystem: "network", 41 Name: "peer_sent_bytes_total", 42 Help: "The total number of bytes sent to peers.", 43 }, 44 []string{"To"}, 45 ) 46 47 receivedBytes = prometheus.NewCounterVec(prometheus.CounterOpts{ 48 Namespace: "etcd", 49 Subsystem: "network", 50 Name: "peer_received_bytes_total", 51 Help: "The total number of bytes received from peers.", 52 }, 53 []string{"From"}, 54 ) 55 56 sentFailures = prometheus.NewCounterVec(prometheus.CounterOpts{ 57 Namespace: "etcd", 58 Subsystem: "network", 59 Name: "peer_sent_failures_total", 60 Help: "The total number of send failures from peers.", 61 }, 62 []string{"To"}, 63 ) 64 65 recvFailures = prometheus.NewCounterVec(prometheus.CounterOpts{ 66 Namespace: "etcd", 67 Subsystem: "network", 68 Name: "peer_received_failures_total", 69 Help: "The total number of receive failures from peers.", 70 }, 71 []string{"From"}, 72 ) 73 74 snapshotSend = prometheus.NewCounterVec(prometheus.CounterOpts{ 75 Namespace: "etcd", 76 Subsystem: "network", 77 Name: "snapshot_send_success", 78 Help: "Total number of successful snapshot sends", 79 }, 80 []string{"To"}, 81 ) 82 83 snapshotSendInflights = prometheus.NewGaugeVec(prometheus.GaugeOpts{ 84 Namespace: "etcd", 85 Subsystem: "network", 86 Name: "snapshot_send_inflights_total", 87 Help: "Total number of inflight snapshot sends", 88 }, 89 []string{"To"}, 90 ) 91 92 snapshotSendFailures = prometheus.NewCounterVec(prometheus.CounterOpts{ 93 Namespace: "etcd", 94 Subsystem: "network", 95 Name: "snapshot_send_failures", 96 Help: "Total number of snapshot send failures", 97 }, 98 []string{"To"}, 99 ) 100 101 snapshotSendSeconds = prometheus.NewHistogramVec(prometheus.HistogramOpts{ 102 Namespace: "etcd", 103 Subsystem: "network", 104 Name: "snapshot_send_total_duration_seconds", 105 Help: "Total latency distributions of v3 snapshot sends", 106 107 // lowest bucket start of upper bound 0.1 sec (100 ms) with factor 2 108 // highest bucket start of 0.1 sec * 2^9 == 51.2 sec 109 Buckets: prometheus.ExponentialBuckets(0.1, 2, 10), 110 }, 111 []string{"To"}, 112 ) 113 114 snapshotReceive = prometheus.NewCounterVec(prometheus.CounterOpts{ 115 Namespace: "etcd", 116 Subsystem: "network", 117 Name: "snapshot_receive_success", 118 Help: "Total number of successful snapshot receives", 119 }, 120 []string{"From"}, 121 ) 122 123 snapshotReceiveInflights = prometheus.NewGaugeVec(prometheus.GaugeOpts{ 124 Namespace: "etcd", 125 Subsystem: "network", 126 Name: "snapshot_receive_inflights_total", 127 Help: "Total number of inflight snapshot receives", 128 }, 129 []string{"From"}, 130 ) 131 132 snapshotReceiveFailures = prometheus.NewCounterVec(prometheus.CounterOpts{ 133 Namespace: "etcd", 134 Subsystem: "network", 135 Name: "snapshot_receive_failures", 136 Help: "Total number of snapshot receive failures", 137 }, 138 []string{"From"}, 139 ) 140 141 snapshotReceiveSeconds = prometheus.NewHistogramVec(prometheus.HistogramOpts{ 142 Namespace: "etcd", 143 Subsystem: "network", 144 Name: "snapshot_receive_total_duration_seconds", 145 Help: "Total latency distributions of v3 snapshot receives", 146 147 // lowest bucket start of upper bound 0.1 sec (100 ms) with factor 2 148 // highest bucket start of 0.1 sec * 2^9 == 51.2 sec 149 Buckets: prometheus.ExponentialBuckets(0.1, 2, 10), 150 }, 151 []string{"From"}, 152 ) 153 154 rttSec = prometheus.NewHistogramVec(prometheus.HistogramOpts{ 155 Namespace: "etcd", 156 Subsystem: "network", 157 Name: "peer_round_trip_time_seconds", 158 Help: "Round-Trip-Time histogram between peers", 159 160 // lowest bucket start of upper bound 0.0001 sec (0.1 ms) with factor 2 161 // highest bucket start of 0.0001 sec * 2^15 == 3.2768 sec 162 Buckets: prometheus.ExponentialBuckets(0.0001, 2, 16), 163 }, 164 []string{"To"}, 165 ) 166) 167 168func init() { 169 prometheus.MustRegister(activePeers) 170 prometheus.MustRegister(disconnectedPeers) 171 prometheus.MustRegister(sentBytes) 172 prometheus.MustRegister(receivedBytes) 173 prometheus.MustRegister(sentFailures) 174 prometheus.MustRegister(recvFailures) 175 176 prometheus.MustRegister(snapshotSend) 177 prometheus.MustRegister(snapshotSendInflights) 178 prometheus.MustRegister(snapshotSendFailures) 179 prometheus.MustRegister(snapshotSendSeconds) 180 prometheus.MustRegister(snapshotReceive) 181 prometheus.MustRegister(snapshotReceiveInflights) 182 prometheus.MustRegister(snapshotReceiveFailures) 183 prometheus.MustRegister(snapshotReceiveSeconds) 184 185 prometheus.MustRegister(rttSec) 186} 187