package metrics import ( "time" "github.com/prometheus/client_golang/prometheus" ) type shardMetrics struct { shardOperationDuration *prometheus.HistogramVec } func newShardMetrics() shardMetrics { return shardMetrics{ shardOperationDuration: prometheus.NewHistogramVec(prometheus.HistogramOpts{ Namespace: namespace, Subsystem: "shard", Name: "operation_duration_seconds", Help: "Accumulated shard operations duration", }, []string{"id", "operation"}), } } func (s *shardMetrics) register() { prometheus.MustRegister(s.shardOperationDuration) } func (s *shardMetrics) AddShardOperationDuration(shardID string, operation string, d time.Duration) { s.shardOperationDuration.WithLabelValues(shardID, operation).Observe(d.Seconds()) }