github.com/MetalBlockchain/metalgo@v1.11.9/snow/networking/handler/metrics.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package handler 5 6 import ( 7 "errors" 8 9 "github.com/prometheus/client_golang/prometheus" 10 ) 11 12 type metrics struct { 13 expired *prometheus.CounterVec // op 14 messages *prometheus.CounterVec // op 15 lockingTime prometheus.Gauge 16 messageHandlingTime *prometheus.GaugeVec // op 17 } 18 19 func newMetrics(reg prometheus.Registerer) (*metrics, error) { 20 m := &metrics{ 21 expired: prometheus.NewCounterVec( 22 prometheus.CounterOpts{ 23 Name: "expired", 24 Help: "messages dropped because the deadline expired", 25 }, 26 opLabels, 27 ), 28 messages: prometheus.NewCounterVec( 29 prometheus.CounterOpts{ 30 Name: "messages", 31 Help: "messages handled", 32 }, 33 opLabels, 34 ), 35 messageHandlingTime: prometheus.NewGaugeVec( 36 prometheus.GaugeOpts{ 37 Name: "message_handling_time", 38 Help: "time spent handling messages", 39 }, 40 opLabels, 41 ), 42 lockingTime: prometheus.NewGauge(prometheus.GaugeOpts{ 43 Name: "locking_time", 44 Help: "time spent acquiring the context lock", 45 }), 46 } 47 return m, errors.Join( 48 reg.Register(m.expired), 49 reg.Register(m.messages), 50 reg.Register(m.messageHandlingTime), 51 reg.Register(m.lockingTime), 52 ) 53 }