OpenTelemetryのメトリクス

この記事は英語の原文を日本語に翻訳したものです。原文: https://opentelemetry.io/docs/specs/otel/metrics/

翻訳元: open-telemetry/opentelemetry-specification v1.60.0(コミット 29ae8c7

概要

設計目標

今日、多くの確立されたメトリクスソリューションが存在することを踏まえると、OpenTelemetryのメトリクスへの取り組みの目標を理解することが重要です。

  • メトリクスを他のシグナルへ結び付けられるようにすること。例えば、メトリクスとトレースはエグゼンプラーを介して関連付けられ、メトリクスの属性はバゲージコンテキストによってエンリッチされます。さらに、リソースは、ログメトリクストレースに一貫した形で適用できます。

  • OpenCensusのユーザーがOpenTelemetryへ移行するための道筋を提供すること。これはOpenTelemetryの元々の目標であり、OpenCensusとOpenTracingを収束させることでした。私たちは、APIの1対1のマッピングを行うのではなく、セマンティクスと能力を提供することに焦点を当てます。

  • 既存のメトリクス計装プロトコルや標準と連携すること。ここでは最低限の目標を挙げます。

    • Prometheusを完全にサポートすること。ユーザーはOpenTelemetryのクライアントとCollectorを使って、Prometheusネイティブのクライアントと同じ機能を実現しつつ、メトリクスを収集・エクスポートできるべきです。
    • OpenTelemetry Collectorを使ってStatsDのメトリクスを収集できるようにすること。

概念

API

OpenTelemetry Metrics API(以下「API」)は2つの目的を果たします。

  • 生の測定値を効率的かつ同時に捕捉すること。
  • 計装をSDKから分離し、アプリケーションでSDKを指定・組み込めるようにすること。

アプリケーションに明示的なSDKが組み込まれていない、あるいは有効化されていない場合、テレメトリーデータは収集されません。詳細は、全体的なOpenTelemetry APIの概念と、APIと最小限の実装を参照してください。

SDK

OpenTelemetry Metrics SDK(以下「SDK」)はAPIを実装し、設定、集約、プロセッサー、エクスポーターなどの機能性と拡張性を提供します。

OpenTelemetryはAPIとSDKの分離を要求しており、これにより異なるSDKを実行時に設定できます。詳細は、全体的なOpenTelemetry SDKの概念を参照してください。

プログラミングモデル

+------------------+
| MeterProvider    |                 +-----------------+             +--------------+
|   Meter A        | Measurements... |                 | Metrics...  |              |
|     Instrument X +-----------------> In-memory state +-------------> MetricReader |
|     Instrument Y |                 |                 |             |              |
|   Meter B        |                 +-----------------+             +--------------+
|     Instrument Z |
|     ...          |                 +-----------------+             +--------------+
|     ...          | Measurements... |                 | Metrics...  |              |
|     ...          +-----------------> In-memory state +-------------> MetricReader |
|     ...          |                 |                 |             |              |
|     ...          |                 +-----------------+             +--------------+
+------------------+

仕様

参考文献

  • メトリクスAPI/SDKプロトタイピングのシナリオ(OTEP 146