@@ -17,6 +17,7 @@ limitations under the License.
17
17
package metrics
18
18
19
19
import (
20
+ "strconv"
20
21
"time"
21
22
22
23
"github.com/prometheus/client_golang/prometheus"
@@ -45,18 +46,20 @@ var (
45
46
46
47
// ServerMetrics includes all the metrics of the proxy server.
47
48
type ServerMetrics struct {
48
- endpointLatencies * prometheus.HistogramVec
49
- frontendLatencies * prometheus.HistogramVec
50
- grpcConnections * prometheus.GaugeVec
51
- httpConnections prometheus.Gauge
52
- backend * prometheus.GaugeVec
53
- pendingDials * prometheus.GaugeVec
54
- establishedConns * prometheus.GaugeVec
55
- fullRecvChannels * prometheus.GaugeVec
56
- dialFailures * prometheus.CounterVec
57
- streamPackets * prometheus.CounterVec
58
- streamErrors * prometheus.CounterVec
59
- culledLeases prometheus.Counter
49
+ endpointLatencies * prometheus.HistogramVec
50
+ frontendLatencies * prometheus.HistogramVec
51
+ grpcConnections * prometheus.GaugeVec
52
+ httpConnections prometheus.Gauge
53
+ backend * prometheus.GaugeVec
54
+ pendingDials * prometheus.GaugeVec
55
+ establishedConns * prometheus.GaugeVec
56
+ fullRecvChannels * prometheus.GaugeVec
57
+ dialFailures * prometheus.CounterVec
58
+ streamPackets * prometheus.CounterVec
59
+ streamErrors * prometheus.CounterVec
60
+ culledLeases prometheus.Counter
61
+ leaseDeleteLatencies * prometheus.HistogramVec
62
+ leaseDeletes * prometheus.CounterVec
60
63
}
61
64
62
65
// newServerMetrics create a new ServerMetrics, configured with default metric names.
@@ -155,6 +158,24 @@ func newServerMetrics() *ServerMetrics {
155
158
Name : "culled_leases_count" ,
156
159
Help : "Count of expired leases that the lease garbage collection controller has culled." ,
157
160
})
161
+ leaseDeleteLatencies := prometheus .NewHistogramVec (
162
+ prometheus.HistogramOpts {
163
+ Namespace : Namespace ,
164
+ Subsystem : Subsystem ,
165
+ Name : "lease_delete_latency_seconds" ,
166
+ Help : "Latency of lease deletion calls by the garbage collection controller in seconds." ,
167
+ },
168
+ []string {"http_status_code" },
169
+ )
170
+ leaseDeletes := prometheus .NewCounterVec (
171
+ prometheus.CounterOpts {
172
+ Namespace : Namespace ,
173
+ Subsystem : Subsystem ,
174
+ Name : "lease_delete_total" ,
175
+ Help : "Count of lease delection calls by the garbage collection controller. Labeled by HTTP status code and reason." ,
176
+ },
177
+ []string {"http_status_code" , "reason" },
178
+ )
158
179
streamPackets := commonmetrics .MakeStreamPacketsTotalMetric (Namespace , Subsystem )
159
180
streamErrors := commonmetrics .MakeStreamErrorsTotalMetric (Namespace , Subsystem )
160
181
prometheus .MustRegister (endpointLatencies )
@@ -169,19 +190,23 @@ func newServerMetrics() *ServerMetrics {
169
190
prometheus .MustRegister (streamPackets )
170
191
prometheus .MustRegister (streamErrors )
171
192
prometheus .MustRegister (culledLeases )
193
+ prometheus .MustRegister (leaseDeleteLatencies )
194
+ prometheus .MustRegister (leaseDeletes )
172
195
return & ServerMetrics {
173
- endpointLatencies : endpointLatencies ,
174
- frontendLatencies : frontendLatencies ,
175
- grpcConnections : grpcConnections ,
176
- httpConnections : httpConnections ,
177
- backend : backend ,
178
- pendingDials : pendingDials ,
179
- establishedConns : establishedConns ,
180
- fullRecvChannels : fullRecvChannels ,
181
- dialFailures : dialFailures ,
182
- streamPackets : streamPackets ,
183
- streamErrors : streamErrors ,
184
- culledLeases : culledLeases ,
196
+ endpointLatencies : endpointLatencies ,
197
+ frontendLatencies : frontendLatencies ,
198
+ grpcConnections : grpcConnections ,
199
+ httpConnections : httpConnections ,
200
+ backend : backend ,
201
+ pendingDials : pendingDials ,
202
+ establishedConns : establishedConns ,
203
+ fullRecvChannels : fullRecvChannels ,
204
+ dialFailures : dialFailures ,
205
+ streamPackets : streamPackets ,
206
+ streamErrors : streamErrors ,
207
+ culledLeases : culledLeases ,
208
+ leaseDeleteLatencies : leaseDeleteLatencies ,
209
+ leaseDeletes : leaseDeletes ,
185
210
}
186
211
}
187
212
@@ -276,3 +301,11 @@ func (s *ServerMetrics) ObserveStreamErrorNoPacket(segment commonmetrics.Segment
276
301
func (s * ServerMetrics ) ObserveStreamError (segment commonmetrics.Segment , err error , packetType client.PacketType ) {
277
302
commonmetrics .ObserveStreamError (s .streamErrors , segment , err , packetType )
278
303
}
304
+
305
+ func (s * ServerMetrics ) ObserveLeaseDeleteLatency (httpCode int , latency time.Duration ) {
306
+ s .leaseDeleteLatencies .WithLabelValues (strconv .Itoa (httpCode )).Observe (latency .Seconds ())
307
+ }
308
+
309
+ func (s * ServerMetrics ) ObserveLeaseDelete (httpCode int , reason string ) {
310
+ s .leaseDeletes .WithLabelValues (strconv .Itoa (httpCode ), reason ).Inc ()
311
+ }
0 commit comments