# メトリクスエクスポーター - OTLP

> Source: https://www.ymotongpoo.com/works/otel-specs-ja/spec/metrics/sdk_exporters/otlp/


**ステータス**: [Stable](../../../document-status/)

## 概要

OTLPメトリクスエクスポーターは[Push Metric Exporter](../../sdk/#push-metric-exporter)であり、[OpenTelemetry Protocol](/works/otel-specs-ja/spec/protocol/)を介してメトリクスを送信します。

OTLPメトリクスエクスポーターは、[MetricReader](../../sdk/#metricreader)の出力`temporality`をInstrument種別の関数として左右する設定をMUST提供するものとします。このオプションは`temporality`と名付けてもかまいません（MAY）が、デフォルトではすべてのInstrument種別についてtemporalityの優先設定をCumulativeにMUST設定するものとします。

OTLPメトリクスエクスポーターは、[MetricReader](../../sdk/#metricreader)のデフォルトの`aggregation`をInstrument種別の関数として左右する設定をMUST提供するものとします。このオプションは`default_aggregation`と名付けてもかまいません（MAY）が、デフォルトではすべてのInstrument種別について[デフォルトの集約](../../sdk/#default-aggregation)をMUST設定するものとします。

エクスポーターは、[OpenTelemetry Protocol Exporter](/works/otel-specs-ja/spec/protocol/exporter/)仕様に従った設定をMUST提供するものとします。

言語が、関連するエクスポーターと組み合わせる[MetricReader](../../sdk/#metricreader)を自動的に設定する仕組み（例えば[`OTEL_METRICS_EXPORTER`環境変数](/works/otel-specs-ja/spec/configuration/sdk-environment-variables/#エクスポーターの選択)を使うなど）を提供している場合、デフォルトでは次のようになります。

* エクスポーターは[periodic exporting MetricReader](../../sdk/#periodic-exporting-metricreader)とMUST組み合わされるものとします。
* エクスポーターは、以下で説明する`OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE`変数を使って、Instrument種別に基づいたデフォルトの集約temporalityをMUST設定するものとします。
* エクスポーターは、それが実装されている場合、以下で説明する`OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION`変数を使って、Instrument種別に基づいたデフォルトの集約をMUST設定するものとします。

## 追加の環境変数設定

| 名前                                                         | 説明                                                                                            | デフォルト                     | 型     |
|------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|-----------------------------|----------|
| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE`        | エクスポーターの集約`temporality`オプション（上記参照）をInstrument種別に基づいて設定します。 | `cumulative`                | [Enum][] |
| `OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION` | エクスポーターの`default_aggregation`オプション（上記参照）をHistogram Instrument種別について設定します。       | `explicit_bucket_histogram` | [Enum][] |

`OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE`について認識される値（大文字小文字を区別しない）は以下の通りです。

* `Cumulative`: すべてのInstrument種別についてCumulative集約temporalityを選択します。
* `Delta`: Counter、Asynchronous Counter、Histogramの各Instrument種別についてDelta集約temporalityを選択し、UpDownCounterとAsynchronous UpDownCounterの各Instrument種別についてCumulative集約を選択します。
* `LowMemory`: この設定は、同期Counterと同期Histogramに対してDelta集約temporalityを使い、同期UpDownCounter、非同期Counter、非同期UpDownCounterの各Instrument種別に対してCumulative集約temporalityを使います。

「LowMemory」という選択肢は、特定の条件下でSDKが他の選択肢よりも少ないメモリを使えることからこのように名付けられています。比較すると、「cumulative」の選択肢はSDKに対して同期Counterと同期Histogramのdelta-to-cumulative変換の維持を強制し、一方「delta」の選択肢はSDKに対して非同期Counter Instrumentのcumulative-to-delta変換の維持を強制します。

`OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION`について認識される値（大文字小文字を区別しない）は以下の通りです。

* `explicit_bucket_histogram`：
  [Explicit Bucket Histogram Aggregation](../../sdk/#explicit-bucket-histogram-aggregation)を使います。
* `base2_exponential_bucket_histogram`：
  [Base2 Exponential Bucket Histogram Aggregation](../../sdk/#base2-exponential-bucket-histogram-aggregation)を使います。

## 参考文献

- [OTEP0131 OTLP Exporters Configurable Export Behavior](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.60.0/oteps/metrics/0131-otlp-export-behavior.md)

[Enum]: /works/otel-specs-ja/spec/configuration/common/#enum

