Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions metrics/logpoller.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,18 @@ var (
Name: "log_poller_blocks_inserted",
Help: "Counter to track number of blocks inserted by Log Poller",
}, []string{"chainFamily", "chainID"})
PromLpDiscoveryLatency = promauto.NewHistogramVec(prometheus.HistogramOpts{
Name: "logpoller_log_discovery_latency",
Help: "Measures duration between block insertion time and block timestamp",
}, []string{"chainFamily", "chainID"})
)

type GenericLogPollerMetrics interface {
RecordQueryDuration(ctx context.Context, queryName string, queryType QueryType, duration float64)
RecordQueryDatasetSize(ctx context.Context, queryName string, queryType QueryType, size int64)
IncrementLogsInserted(ctx context.Context, numLogs int64)
IncrementBlocksInserted(ctx context.Context, numBlocks int64)
RecordLogDiscoveryLatency(ctx context.Context, latency float64)
}

var _ GenericLogPollerMetrics = &logPollerMetrics{}
Expand All @@ -79,6 +84,7 @@ type logPollerMetrics struct {
queryDatasetsSize metric.Int64Gauge
logsInserted metric.Int64Counter
blocksInserted metric.Int64Counter
discoveryLatency metric.Float64Histogram
}

func NewGenericLogPollerMetrics(chainID string, chainFamily string) (GenericLogPollerMetrics, error) {
Expand All @@ -102,13 +108,19 @@ func NewGenericLogPollerMetrics(chainID string, chainFamily string) (GenericLogP
return nil, fmt.Errorf("failed to register blocks inserted metric: %w", err)
}

discoveryLatency, err := beholder.GetMeter().Float64Histogram("logpoller_log_discovery_latency")
if err != nil {
return nil, fmt.Errorf("failed to register logpoller discovery latency metric: %w", err)
}

return &logPollerMetrics{
chainID: chainID,
chainFamily: chainFamily,
queryDuration: queryDuration,
queryDatasetsSize: queryDatasetSize,
logsInserted: logsInserted,
blocksInserted: blocksInserted,
discoveryLatency: discoveryLatency,
}, nil
}

Expand Down Expand Up @@ -143,3 +155,11 @@ func (m *logPollerMetrics) IncrementBlocksInserted(ctx context.Context, numBlock
attribute.String("chainFamily", m.chainFamily),
attribute.String("chainID", m.chainID)))
}

func (m *logPollerMetrics) RecordLogDiscoveryLatency(ctx context.Context, latency float64) {
PromLpDiscoveryLatency.WithLabelValues(m.chainFamily, m.chainID).Observe(latency)
m.discoveryLatency.Record(ctx, latency, metric.WithAttributes(
attribute.String("chainFamily", m.chainFamily),
attribute.String("chainID", m.chainID),
))
}
7 changes: 7 additions & 0 deletions metrics/logpoller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,10 @@ func TestLogPollerMetrics_IncrementBlocksInserted(t *testing.T) {
0.001,
)
}

func TestLogPollerMetrics_RecordLogDiscoveryLatency(t *testing.T) {
m := setupTestLogPollerMetrics(t)

m.RecordLogDiscoveryLatency(t.Context(), 0.5)
require.Positive(t, testutil.CollectAndCount(PromLpDiscoveryLatency))
}
Loading