Skip to content

Commit

Permalink
Add Export method to MetricExporter
Browse files Browse the repository at this point in the history
  • Loading branch information
pkcll committed Feb 7, 2025
1 parent 98714ad commit 74b970e
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
9 changes: 8 additions & 1 deletion pkg/promotel/exporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"go.opentelemetry.io/collector/consumer"
"go.opentelemetry.io/collector/exporter"
"go.opentelemetry.io/collector/exporter/otlpexporter"
"go.opentelemetry.io/collector/pdata/pmetric"

"github.com/smartcontractkit/chainlink-common/pkg/logger"
"github.com/smartcontractkit/chainlink-common/pkg/promotel/internal"
Expand All @@ -15,6 +16,7 @@ import (
type MetricExporter interface {
Runnable
Consumer() consumer.Metrics
Export(ctx context.Context, md pmetric.Metrics) error
}

type metricExporter struct {
Expand All @@ -23,6 +25,8 @@ type metricExporter struct {
exporter exporter.Metrics
}

type NextFunc consumer.ConsumeMetricsFunc

func (me *metricExporter) Start(ctx context.Context) error {
return me.exporter.Start(ctx, me.host)
}
Expand All @@ -32,10 +36,13 @@ func (me *metricExporter) Close() error {
}

func (me *metricExporter) Consumer() consumer.Metrics {
// Writes metrics data to stdout
return me.exporter
}

func (me *metricExporter) Export(ctx context.Context, md pmetric.Metrics) error {
return me.exporter.ConsumeMetrics(ctx, md)
}

func NewMetricExporter(config ExporterConfig, logger logger.Logger) (MetricExporter, error) {
factory := otlpexporter.NewFactory()
// Creates a metrics receiver with the context, settings, config, and consumer
Expand Down
6 changes: 3 additions & 3 deletions pkg/promotel/promotel_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func TestExample(t *testing.T) {
if findMetric(testCounterMetricName, md) {
foundCh <- struct{}{}
}
return exporter.Consumer().ConsumeMetrics(ctx, md)
return exporter.Export(ctx, md)
}
receiver := startMetricReceiver(g, r, logger, nextFunc)

Expand Down Expand Up @@ -116,7 +116,7 @@ func startExporter(ctx context.Context, logger logger.Logger) promotel.MetricExp
return exporter
}

func startMetricReceiver(g prometheus.Gatherer, r prometheus.Registerer, logger logger.Logger, next consumer.ConsumeMetricsFunc) promotel.Runnable {
func startMetricReceiver(g prometheus.Gatherer, r prometheus.Registerer, logger logger.Logger, next promotel.NextFunc) promotel.Runnable {
logger.Info("Starting promotel metric receiver")
config, err := promotel.NewDefaultReceiverConfig()
if err != nil {
Expand All @@ -125,7 +125,7 @@ func startMetricReceiver(g prometheus.Gatherer, r prometheus.Registerer, logger

// Gather metrics via promotel
// MetricReceiver fetches metrics from prometheus.Gatherer, then converts it to OTel format and writes formatted metrics to stdout
receiver, err := promotel.NewMetricReceiver(config, g, r, next, logger)
receiver, err := promotel.NewMetricReceiver(config, g, r, consumer.ConsumeMetricsFunc(next), logger)
if err != nil {
logger.Fatal("Failed to create debug metric receiver", zap.Error(err))
}
Expand Down

0 comments on commit 74b970e

Please sign in to comment.