Skip to content

Commit ef906de

Browse files
committed
Optionally define beholder metrics
1 parent 54481cb commit ef906de

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

relayer/pkg/chainlink/txm/txm_metrics.go

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ func initPrometheusMetrics() {
6464
})
6565
}
6666

67-
6867
// prometheusMetrics implements TxMetrics using Prometheus
6968
type prometheusMetrics struct {
7069
chainID string
@@ -87,37 +86,49 @@ func (m *prometheusMetrics) attributes(accountAddress string) metric.Measurement
8786

8887
// NewTxmMetrics creates a new TxMetrics instance with Prometheus and Beholder metrics
8988
// meter is the OpenTelemetry meter to use for beholder metrics
89+
// Prometheus metrics are always created; beholder metrics are optional and will be nil if creation fails
9090
func NewTxmMetrics(chainID string, meter metric.Meter) (TxMetrics, error) {
9191
initPrometheusMetrics()
9292

9393
// Create beholder metrics directly from the provided meter (no globals)
94+
// These are optional - if any fail, we set them to nil and Prometheus metrics still work
95+
var numBroadcastedTxs metric.Int64Counter
96+
var numConfirmedTxs metric.Int64Counter
97+
var numNonceGaps metric.Int64Counter
98+
var timeUntilTxConfirmed metric.Float64Histogram
99+
var enqueueFailed metric.Int64Counter
100+
var nonceRebroadcast metric.Int64Counter
101+
var nextNonce metric.Int64Gauge
102+
103+
// Try to create all beholder metrics, but if any fail, explicitly set them to nil
104+
// This ensures Prometheus metrics still work even if beholder is unavailable
94105
numBroadcastedTxs, err := meter.Int64Counter("txm_num_broadcasted_transactions")
95106
if err != nil {
96-
return nil, err
107+
numBroadcastedTxs = nil
97108
}
98-
numConfirmedTxs, err := meter.Int64Counter("txm_num_confirmed_transactions")
109+
numConfirmedTxs, err = meter.Int64Counter("txm_num_confirmed_transactions")
99110
if err != nil {
100-
return nil, err
111+
numConfirmedTxs = nil
101112
}
102-
numNonceGaps, err := meter.Int64Counter("txm_num_nonce_gaps")
113+
numNonceGaps, err = meter.Int64Counter("txm_num_nonce_gaps")
103114
if err != nil {
104-
return nil, err
115+
numNonceGaps = nil
105116
}
106-
timeUntilTxConfirmed, err := meter.Float64Histogram("txm_time_until_tx_confirmed")
117+
timeUntilTxConfirmed, err = meter.Float64Histogram("txm_time_until_tx_confirmed")
107118
if err != nil {
108-
return nil, err
119+
timeUntilTxConfirmed = nil
109120
}
110-
enqueueFailed, err := meter.Int64Counter("txm_enqueue_failed")
121+
enqueueFailed, err = meter.Int64Counter("txm_enqueue_failed")
111122
if err != nil {
112-
return nil, err
123+
enqueueFailed = nil
113124
}
114-
nonceRebroadcast, err := meter.Int64Counter("txm_nonce_rebroadcast")
125+
nonceRebroadcast, err = meter.Int64Counter("txm_nonce_rebroadcast")
115126
if err != nil {
116-
return nil, err
127+
nonceRebroadcast = nil
117128
}
118-
nextNonce, err := meter.Int64Gauge("txm_next_nonce")
129+
nextNonce, err = meter.Int64Gauge("txm_next_nonce")
119130
if err != nil {
120-
return nil, err
131+
nextNonce = nil
121132
}
122133

123134
return &prometheusMetrics{

0 commit comments

Comments
 (0)