Class CsvMetricExporter

Object
CsvMetricExporter
All Implemented Interfaces:
AggregationTemporalitySelector, DefaultAggregationSelector, MetricExporter, Closeable, AutoCloseable

public final class CsvMetricExporter extends Object implements MetricExporter
Push Metric Exporter to CSV file.

CSV file later can be imported to:

  • ElastiSearch: Kibana - Stack Management - Saved Objects - Import
  • Grafana using CSV plugin

Currently supporter metric types:

  • MetricDataType.LONG_SUM
  • MetricDataType.HISTOGRAM

For each of supported MetricDataType it produces a separate CSV file like:


 counter.csv

 METRIC_NAME  START_TIME  END_TIME    VALUE
 detected_objects_total  2023-02-12T00:53:45.663Z    2023-02-12T00:53:48.662Z    0
 input_tensors_total 2023-02-12T00:53:45.663Z    2023-02-12T00:53:48.662Z    2
 detected_objects_total  2023-02-12T00:53:51.662Z    2023-02-12T00:53:54.662Z    0
 

Usage


 var metricReader = PeriodicMetricReader
   .builder(new CsvMetricExporter(Paths.get("/tmp/mymetrics")))
   .setInterval(Duration.ofSeconds(3))
   .build();
 var sdkMeterProvider = SdkMeterProvider.builder()
   .registerMetricReader(metricReader).build();
 OpenTelemetrySdk.builder()
   .setMeterProvider(sdkMeterProvider)
   .buildAndRegisterGlobal();
 
  • Constructor Details

    • CsvMetricExporter

      public CsvMetricExporter(Path metricsFolder) throws IOException
      Parameters:
      metricsFolder - path to folder where all CSV files are located
      Throws:
      IOException
  • Method Details

    • export

      public CompletableResultCode export(Collection<MetricData> metrics)
      Specified by:
      export in interface MetricExporter
    • flush

      public CompletableResultCode flush()
      Specified by:
      flush in interface MetricExporter
    • shutdown

      public CompletableResultCode shutdown()
      Specified by:
      shutdown in interface MetricExporter
    • getAggregationTemporality

      public AggregationTemporality getAggregationTemporality(InstrumentType instrumentType)
      Specified by:
      getAggregationTemporality in interface AggregationTemporalitySelector