cmd/otelinmemexporter/factory.go (47 lines of code) (raw):

// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one // or more contributor license agreements. Licensed under the Elastic License 2.0; // you may not use this file except in compliance with the Elastic License 2.0. package otelinmemexporter import ( "context" "fmt" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/configretry" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exporterhelper" ) func NewFactory() exporter.Factory { return exporter.NewFactory( component.MustNewType(componentID), createDefaultConfig, exporter.WithMetrics( createMetricsExporter, component.StabilityLevelDevelopment, ), ) } func createDefaultConfig() component.Config { return &Config{ Server: serverConfig{Endpoint: ":8081"}, } } func createMetricsExporter( ctx context.Context, settings exporter.Settings, rawCfg component.Config, ) (exporter.Metrics, error) { cfg := rawCfg.(*Config) logger := settings.TelemetrySettings.Logger // create in memory metrics store store, err := NewStore(cfg.Aggregations, logger) if err != nil { return nil, fmt.Errorf("failed to create in-memory metrics store: %w", err) } // Start http server newServer(store, cfg.Server.Endpoint, logger).Start() exp := newInMemExporter(*cfg, store, logger) return exporterhelper.NewMetrics( ctx, settings, cfg, exp.consumeMetrics, exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: false}), // Disable Timeout/RetryOnFailure and SendingQueue exporterhelper.WithTimeout(exporterhelper.TimeoutConfig{Timeout: 0}), exporterhelper.WithRetry(configretry.BackOffConfig{Enabled: false}), exporterhelper.WithQueue(exporterhelper.QueueConfig{Enabled: false}), ) }