2023-07-03 11:46:47 -07:00
|
|
|
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.
|
2023-07-04 11:23:26 -07:00
|
|
|
func NewPrometheusMetrics(environment string) *PrometheusMetrics {
|
2023-07-03 11:46:47 -07:00
|
|
|
vaaParseCount := promauto.NewCounterVec(
|
|
|
|
prometheus.CounterOpts{
|
|
|
|
Name: "parse_vaa_count_by_chain",
|
|
|
|
Help: "Total number of vaa parser by chain",
|
|
|
|
ConstLabels: map[string]string{
|
2023-07-04 11:23:26 -07:00
|
|
|
"environment": environment,
|
2023-07-03 11:46:47 -07:00
|
|
|
"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{
|
2023-07-04 11:23:26 -07:00
|
|
|
"environment": environment,
|
2023-07-03 11:46:47 -07:00
|
|
|
"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{
|
2023-07-04 11:23:26 -07:00
|
|
|
"environment": environment,
|
2023-07-03 11:46:47 -07:00
|
|
|
"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()
|
|
|
|
}
|