New to Opentelemetry and Prometheus.
In the following code, I get 20 point showing up in grafana explore, do you know why?
I was expecting only one as I am only calling "counter.Add(ctx, 1)" once and I am using NewManualReader.
Is the reason that all measurements are "time series" of values?
func GenManuel(ctx context.Context) {
otlpExporter, err := otlpmetricgrpc.New(ctx,
otlpmetricgrpc.WithEndpoint("localhost:4317"),
otlpmetricgrpc.WithInsecure(),
)
if err != nil {
log.Fatalf("Failed to create OTLP exporter: %v", err)
}
defer func() {
if err := otlpExporter.Shutdown(ctx); err != nil {
log.Fatalf("Failed to flush exporter: %v", err)
}
}()
manualReader := sdkmetric.NewManualReader(
sdkmetric.WithTemporalitySelector(sdkmetric.DefaultTemporalitySelector),
)
res, err := resource.New(ctx,
resource.WithAttributes(
semconv.ServiceNameKey.String("example-service"),
),
)
if err != nil {
log.Fatalf("Failed to create resource: %v", err)
}
meterProvider := sdkmetric.NewMeterProvider(
sdkmetric.WithReader(manualReader),
sdkmetric.WithResource(res),
)
defer func() {
if err := meterProvider.Shutdown(ctx); err != nil {
log.Fatalf("Failed to shutdown MeterProvider: %v", err)
}
}()
meter := meterProvider.Meter("example-service")
counter, _ := meter.Int64Counter("example_counter")
counter.Add(ctx, 1)
time.Sleep(500 * time.Millisecond)
collectOnce.Do(func() {
var resourceMetrics metricdata.ResourceMetrics
err = manualReader.Collect(ctx, &resourceMetrics)
if err != nil {
log.Fatalf("Failed to collect metrics: %v", err)
}
err = otlpExporter.Export(ctx, &resourceMetrics)
if err != nil {
log.Fatalf("Failed to export metrics: %v", err)
}
log.Println("Successfully sent metrics to OpenTelemetry Collector once!")
})
}