func Start()

in image/resources/knfsd-fsidd/internal/metrics/provider.go [48:80]


func Start(ctx context.Context, cfg Config) Provider {
	var err error = nil
	if !cfg.Enabled {
		return empty{}
	}

	res, err := resource.New(ctx,
		resource.WithFromEnv(),
		resource.WithHost(),
		resource.WithTelemetrySDK(),
		resource.WithAttributes(
			semconv.ServiceName("knfsd-fsidd"),
		),
	)
	if err != nil {
		log.Warn.Printf("could not load all otel resources: %v", err)
	}

	exporter, err := newExporter(ctx, cfg)
	if err != nil {
		log.Warn.Printf("could not initialize metric exporter: %v", err)
		return empty{}
	}

	reader := metric.NewPeriodicReader(exporter, metric.WithInterval(cfg.Interval))
	provider := metric.NewMeterProvider(
		metric.WithResource(res),
		metric.WithReader(reader),
	)

	global.SetMeterProvider(provider)
	return provider
}