All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.opentelemetry.sdk.metrics.export.MetricReader Maven / Gradle / Ivy

/*
 * Copyright The OpenTelemetry Authors
 * SPDX-License-Identifier: Apache-2.0
 */

package io.opentelemetry.sdk.metrics.export;

import static io.opentelemetry.sdk.common.export.MemoryMode.IMMUTABLE_DATA;

import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.common.export.MemoryMode;
import io.opentelemetry.sdk.metrics.Aggregation;
import io.opentelemetry.sdk.metrics.InstrumentType;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import java.io.Closeable;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

/**
 * A metric reader reads metrics from an {@link SdkMeterProvider}.
 *
 * @since 1.14.0
 */
public interface MetricReader
    extends AggregationTemporalitySelector, DefaultAggregationSelector, Closeable {

  /**
   * Called by {@link SdkMeterProvider} on initialization to supply the {@link MetricReader} with
   * {@link MetricProducer}s used to collect metrics. {@link MetricReader} implementations call
   * {@link CollectionRegistration#collectAllMetrics()} to read metrics.
   */
  void register(CollectionRegistration registration);

  /**
   * Return the default aggregation for the {@link InstrumentType}.
   *
   * @see DefaultAggregationSelector#getDefaultAggregation(InstrumentType)
   * @since 1.16.0
   */
  @Override
  default Aggregation getDefaultAggregation(InstrumentType instrumentType) {
    return Aggregation.defaultAggregation();
  }

  /**
   * Returns the memory mode used by this reader.
   *
   * @return The {@link MemoryMode} used by this instance
   * @since 1.31.0
   */
  default MemoryMode getMemoryMode() {
    return IMMUTABLE_DATA;
  }

  /**
   * Read and export the metrics.
   *
   * 

Called when {@link SdkMeterProvider#forceFlush()} is called. * * @return the result of the flush. */ CompletableResultCode forceFlush(); /** * Shuts down the metric reader. * *

Called when {@link SdkMeterProvider#shutdown()} is called. * *

For pull based readers like prometheus, this should shut down the metric hosting endpoint or * server doing such a job. * *

For push based readers like {@link MetricExporter}, this should shut down any scheduler * threads. * * @return the result of the shutdown. */ CompletableResultCode shutdown(); /** Close this {@link MetricReader}, releasing any resources. */ @Override default void close() throws IOException { shutdown().join(10, TimeUnit.SECONDS); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy