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

105 lines
3.9 KiB
Go

package metrics
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
"github.com/wormhole-foundation/wormhole/sdk/vaa"
)
// PrometheusMetrics is a Prometheus implementation of Metric interface.
type PrometheusMetrics struct {
vaaParseCount *prometheus.CounterVec
vaaPayloadParserRequest *prometheus.CounterVec
vaaPayloadParserResponseCount *prometheus.CounterVec
}
// NewPrometheusMetrics returns a new instance of PrometheusMetrics.
func NewPrometheusMetrics(environment string) *PrometheusMetrics {
vaaParseCount := promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "parse_vaa_count_by_chain",
Help: "Total number of vaa parser by chain",
ConstLabels: map[string]string{
"environment": environment,
"service": serviceName,
},
}, []string{"chain", "type"})
vaaPayloadParserRequestCount := promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "parse_vaa_payload_request_count_by_chain",
Help: "Total number of request to payload parser component by chain",
ConstLabels: map[string]string{
"environment": environment,
"service": serviceName,
},
}, []string{"chain"})
vaaPayloadParserResponseCount := promauto.NewCounterVec(
prometheus.CounterOpts{
Name: "parse_vaa_payload_response_count_by_chain",
Help: "Total number of response from payload parser component by chain",
ConstLabels: map[string]string{
"environment": environment,
"service": serviceName,
},
}, []string{"chain", "status"})
return &PrometheusMetrics{
vaaParseCount: vaaParseCount,
vaaPayloadParserRequest: vaaPayloadParserRequestCount,
vaaPayloadParserResponseCount: vaaPayloadParserResponseCount,
}
}
// IncVaaConsumedQueue increments the number of consumed VAA.
func (m *PrometheusMetrics) IncVaaConsumedQueue(chainID uint16) {
chain := vaa.ChainID(chainID).String()
m.vaaParseCount.WithLabelValues(chain, "consumed").Inc()
}
// IncVaaUnfiltered increments the number of unfiltered VAA.
func (m *PrometheusMetrics) IncVaaUnfiltered(chainID uint16) {
chain := vaa.ChainID(chainID).String()
m.vaaParseCount.WithLabelValues(chain, "unfiltered").Inc()
}
// IncVaaUnexpired increments the number of unexpired VAA.
func (m *PrometheusMetrics) IncVaaUnexpired(chainID uint16) {
chain := vaa.ChainID(chainID).String()
m.vaaParseCount.WithLabelValues(chain, "unexpired").Inc()
}
// IncVaaParsed increments the number of parsed VAA.
func (m *PrometheusMetrics) IncVaaParsed(chainID uint16) {
chain := vaa.ChainID(chainID).String()
m.vaaParseCount.WithLabelValues(chain, "parsed").Inc()
}
// IncVaaParsedInserted increments the number of parsed VAA inserted into database.
func (m *PrometheusMetrics) IncVaaParsedInserted(chainID uint16) {
chain := vaa.ChainID(chainID).String()
m.vaaParseCount.WithLabelValues(chain, "inserted").Inc()
}
// IncVaaPayloadParserRequestCount increments the number of vaa payload parser request.
func (m *PrometheusMetrics) IncVaaPayloadParserRequestCount(chainID uint16) {
chain := vaa.ChainID(chainID).String()
m.vaaPayloadParserRequest.WithLabelValues(chain).Inc()
}
// IncVaaPayloadParserErrorCount increments the number of vaa payload parser error.
func (m *PrometheusMetrics) IncVaaPayloadParserErrorCount(chainID uint16) {
chain := vaa.ChainID(chainID).String()
m.vaaPayloadParserResponseCount.WithLabelValues(chain, "failed").Inc()
}
// IncVaaPayloadParserSuccessCount increments the number of vaa payload parser success.
func (m *PrometheusMetrics) IncVaaPayloadParserSuccessCount(chainID uint16) {
chain := vaa.ChainID(chainID).String()
m.vaaPayloadParserResponseCount.WithLabelValues(chain, "success").Inc()
}
// IncVaaPayloadParserSuccessCount increments the number of vaa payload parser not found.
func (m *PrometheusMetrics) IncVaaPayloadParserNotFoundCount(chainID uint16) {
chain := vaa.ChainID(chainID).String()
m.vaaPayloadParserResponseCount.WithLabelValues(chain, "not_found").Inc()
}