in internal/telemetrygen/metrics/metrics.go [32:79]
func Start(cfg *Config) error {
logger := cfg.Logger
if logger == nil {
newLogger, err := common.CreateLogger(cfg.SkipSettingGRPCLogger)
if err != nil {
return err
}
logger = newLogger
}
logger.Info("starting the metrics generator with configuration", zap.Any("config", cfg))
expFunc := func() (sdkmetric.Exporter, error) {
var exp sdkmetric.Exporter
if cfg.UseHTTP {
var exporterOpts []otlpmetrichttp.Option
logger.Info("starting HTTP exporter")
exporterOpts, err := httpExporterOptions(cfg)
if err != nil {
return nil, err
}
exp, err = otlpmetrichttp.New(context.Background(), exporterOpts...)
if err != nil {
return nil, fmt.Errorf("failed to obtain OTLP HTTP exporter: %w", err)
}
} else {
var exporterOpts []otlpmetricgrpc.Option
logger.Info("starting gRPC exporter")
exporterOpts, err := grpcExporterOptions(cfg)
if err != nil {
return nil, err
}
exp, err = otlpmetricgrpc.New(context.Background(), exporterOpts...)
if err != nil {
return nil, fmt.Errorf("failed to obtain OTLP gRPC exporter: %w", err)
}
}
return exp, nil
}
if err := Run(cfg, expFunc, logger); err != nil {
logger.Error("failed to stop the exporter", zap.Error(err))
return err
}
return nil
}