メトリクスとは、実行時に取得されるサービスの測定値のことです。 測定値を取得した瞬間はメトリックイベントとして知られており、測定値そのものだけでなく、キャプチャした時刻と関連するメタデータから構成されます。
アプリケーションとリクエストのメトリクスは、可用性とパフォーマンスの重要な指標です。 カスタムメトリクスは、可用性指標がユーザー体験やビジネスにどのような影響を与えるかについての洞察を提供できます。 収集したデータを使用して、障害を警告したり、需要が高まったときにデプロイを自動的にスケールアップするスケジューリング決定をトリガーしたりできます。
OpenTelemetryのメトリクスがどのように機能するのかを理解するために、コードの計装の一部を担うコンポーネントのリストを見てみましょう。
メータープロバイダー(MeterProvider
と呼ばれることもあります)は、Meter
のファクトリーです。
ほとんどのアプリケーションでは、メータープロバイダーは一度だけ初期化され、そのライフサイクルはアプリケーションのライフサイクルと一致します。
メータープロバイダーの初期化には、リソースとエクスポータの初期化も含まれます。
これは通常、OpenTelemetryを使った計測の最初のステップです。
いくつかの言語SDKでは、グローバルなメータープロバイダーがすでに初期化されています。
メーターはメトリクス計装を作成し、実行時にサービスに関する測定値を取得します。 メーターはメータープロバイダーから作成されます。
メトリクスエクスポーターはメトリクスデータをコンシューマーに送ります。 このコンシューマーは、開発中のデバッグのための標準出力、OpenTelemetryコレクター、あるいは、あなたが選んだオープンソースやベンダーのバックエンドです。
OpenTelemetryでは、計測は メトリクス計装 によって行われます。メトリクス計装は以下のように定義されます。
名前、単位、説明は、開発者が自分で定義するか、リクエストやプロセスメトリクスのような一般的なものについては、セマンティック規約を介して定義されます。
計装の種類は以下のいずれかです。
同期と非同期の計装、またどの種類の計装があなたのユースケースにもっとも適しているかについては、補足ガイドラインを参照してください。
メトリクス計装に加えて、**集約(アグリゲーション)**という概念も理解すべき重要なものです。 集約とは、多数の測定値を組み合わせて、ある時間ウィンドウの間に発生したメトリクスイベントに関する正確な統計値または推定統計値にする手法です。 OTLPプロトコルは、このような集約されたメトリクスを伝送します。 OpenTelemetry APIは、各計装に対してデフォルトの集約を提供します。これはビューを使ってオーバーライドできます。 OpenTelemetryプロジェクトは、ビジュアライザーやテレメトリーバックエンドでサポートされるデフォルトの集計を提供することを目指しています。
リクエストトレースが、リクエストのライフサイクルを捕捉し、リクエストの個々の部分にコンテキストを提供することを意図しているのとは異なり、メトリクスは、集約された統計情報を提供することを意図しています。 メトリクスの使用例には、次のようなものがあります。
ビューは、SDKによって出力されるメトリクスをカスタマイズする柔軟性をSDKのユーザーに提供します。 どのメトリクス計装を処理するか、または無視するかをカスタマイズできます。 また、集約をカスタマイズしたり、メトリクスにどのような属性をレポートするかをカスタマイズすることもできます。
メトリクスはOpenTelemetry仕様のstableシグナルです。 Metrics APIとSDKの各言語固有の実装については、ステータスは以下の通りです。
Language | Metrics |
---|---|
C++ | Stable |
C#/.NET | Stable |
Erlang/Elixir | Development |
Go | Stable |
Java | Stable |
JavaScript | Stable |
PHP | Stable |
Python | Stable |
Ruby | Development |
Rust | Alpha |
Swift | Development |
OpenTelemetryのメトリクスの詳細については、メトリクス仕様を参照してください。
[i18n] feedback_question
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!