wormhole-explorer/analytics/internal/metrics/prometheus.go

77 lines
2.2 KiB
Go

package metrics
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
type PrometheusMetrics struct {
measurementCount *prometheus.CounterVec
notionalCount *prometheus.CounterVec
tokenRequestsCount *prometheus.CounterVec
}
// NewPrometheusMetrics returns a new instance of PrometheusMetrics.
func NewPrometheusMetrics(environment string) *PrometheusMetrics {
constLabels := map[string]string{
"environment": environment,
"service": serviceName,
}
measurementCount := promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "measurement_count",
Help: "Total number of measurement",
ConstLabels: constLabels,
}, []string{"measurement", "status"})
notionalRequestsCount := promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "notional_requests_count_by_symbol",
Help: "Total number requests of notional by symbol",
ConstLabels: constLabels,
},
[]string{"symbol", "status"},
)
tokenRequestsCount := promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "token_requests_count",
Help: "Total number of missing notional by symbol",
ConstLabels: constLabels,
},
[]string{"chain", "token", "status"},
)
return &PrometheusMetrics{
measurementCount: measurementCount,
notionalCount: notionalRequestsCount,
tokenRequestsCount: tokenRequestsCount,
}
}
func (p *PrometheusMetrics) IncFailedMeasurement(measurement string) {
p.measurementCount.WithLabelValues(measurement, "failed").Inc()
}
func (p *PrometheusMetrics) IncSuccessfulMeasurement(measurement string) {
p.measurementCount.WithLabelValues(measurement, "successful").Inc()
}
func (p *PrometheusMetrics) IncMissingNotional(symbol string) {
p.notionalCount.WithLabelValues(symbol, "missing").Inc()
}
func (p *PrometheusMetrics) IncFoundNotional(symbol string) {
p.notionalCount.WithLabelValues(symbol, "found").Inc()
}
func (p *PrometheusMetrics) IncMissingToken(chain, token string) {
p.tokenRequestsCount.WithLabelValues(chain, token, "missing").Inc()
}
func (p *PrometheusMetrics) IncFoundToken(chain, token string) {
p.tokenRequestsCount.WithLabelValues(chain, token, "found").Inc()
}