exporter/coralogixexporter/factory.go (163 lines of code) (raw):

// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 //go:generate mdatagen metadata.yaml package coralogixexporter // import "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/coralogixexporter" import ( "context" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/configcompression" "go.opentelemetry.io/collector/config/configgrpc" "go.opentelemetry.io/collector/config/configretry" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/exporter" "go.opentelemetry.io/collector/exporter/exporterhelper" "go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper" "go.opentelemetry.io/collector/exporter/xexporter" "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/coralogixexporter/internal/metadata" ) // NewFactory by Coralogix func NewFactory() exporter.Factory { return xexporter.NewFactory( metadata.Type, createDefaultConfig, xexporter.WithTraces(createTraceExporter, metadata.TracesStability), xexporter.WithMetrics(createMetricsExporter, metadata.MetricsStability), xexporter.WithLogs(createLogsExporter, metadata.LogsStability), xexporter.WithProfiles(createProfilesExporter, metadata.ProfilesStability), ) } func createDefaultConfig() component.Config { batcherConfig := exporterhelper.NewDefaultBatcherConfig() //nolint:staticcheck batcherConfig.Enabled = false return &Config{ QueueSettings: exporterhelper.NewDefaultQueueConfig(), BackOffConfig: configretry.NewDefaultBackOffConfig(), TimeoutSettings: exporterhelper.NewDefaultTimeoutConfig(), DomainSettings: configgrpc.ClientConfig{ Compression: configcompression.TypeGzip, }, ClientConfig: configgrpc.ClientConfig{ Endpoint: "https://", }, // Traces GRPC client Traces: configgrpc.ClientConfig{ Endpoint: "https://", Compression: configcompression.TypeGzip, }, Metrics: configgrpc.ClientConfig{ Endpoint: "https://", // Default to gzip compression Compression: configcompression.TypeGzip, WriteBufferSize: 512 * 1024, }, Logs: configgrpc.ClientConfig{ Endpoint: "https://", Compression: configcompression.TypeGzip, }, PrivateKey: "", AppName: "", BatcherConfig: batcherConfig, } } func createTraceExporter( ctx context.Context, set exporter.Settings, config component.Config, ) (exporter.Traces, error) { cfg := config.(*Config) if cfg.BatcherConfig.Enabled { set.Logger.Warn("`batcher` is deprecated, please use `sending_queue` instead") } exporter, err := newTracesExporter(cfg, set) if err != nil { return nil, err } return exporterhelper.NewTraces( ctx, set, config, exporter.pushTraces, exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: true}), exporterhelper.WithTimeout(cfg.TimeoutSettings), exporterhelper.WithRetry(cfg.BackOffConfig), exporterhelper.WithQueue(cfg.QueueSettings), exporterhelper.WithStart(exporter.start), exporterhelper.WithShutdown(exporter.shutdown), exporterhelper.WithBatcher(cfg.BatcherConfig), //nolint:staticcheck ) } func createMetricsExporter( ctx context.Context, set exporter.Settings, config component.Config, ) (exporter.Metrics, error) { cfg := config.(*Config) if cfg.BatcherConfig.Enabled { set.Logger.Warn("`batcher` is deprecated, please use `sending_queue` instead") } oce, err := newMetricsExporter(cfg, set) if err != nil { return nil, err } return exporterhelper.NewMetrics( ctx, set, cfg, oce.pushMetrics, exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: true}), exporterhelper.WithTimeout(cfg.TimeoutSettings), exporterhelper.WithRetry(cfg.BackOffConfig), exporterhelper.WithQueue(cfg.QueueSettings), exporterhelper.WithStart(oce.start), exporterhelper.WithShutdown(oce.shutdown), exporterhelper.WithBatcher(cfg.BatcherConfig), //nolint:staticcheck ) } func createLogsExporter( ctx context.Context, set exporter.Settings, config component.Config, ) (exporter.Logs, error) { cfg := config.(*Config) if cfg.BatcherConfig.Enabled { set.Logger.Warn("`batcher` is deprecated, please use `sending_queue` instead") } oce, err := newLogsExporter(cfg, set) if err != nil { return nil, err } return exporterhelper.NewLogs( ctx, set, cfg, oce.pushLogs, exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: true}), exporterhelper.WithTimeout(cfg.TimeoutSettings), exporterhelper.WithRetry(cfg.BackOffConfig), exporterhelper.WithQueue(cfg.QueueSettings), exporterhelper.WithStart(oce.start), exporterhelper.WithShutdown(oce.shutdown), exporterhelper.WithBatcher(cfg.BatcherConfig), //nolint:staticcheck ) } func createProfilesExporter( ctx context.Context, set exporter.Settings, config component.Config, ) (xexporter.Profiles, error) { cfg := config.(*Config) if cfg.BatcherConfig.Enabled { set.Logger.Warn("`batcher` is deprecated, please use `sending_queue` instead") } oce, err := newProfilesExporter(cfg, set) if err != nil { return nil, err } return xexporterhelper.NewProfilesExporter( ctx, set, cfg, oce.pushProfiles, exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: true}), exporterhelper.WithTimeout(cfg.TimeoutSettings), exporterhelper.WithRetry(cfg.BackOffConfig), exporterhelper.WithQueue(cfg.QueueSettings), exporterhelper.WithStart(oce.start), exporterhelper.WithShutdown(oce.shutdown), exporterhelper.WithBatcher(cfg.BatcherConfig), //nolint:staticcheck ) }