func Start()

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
}