TL;DR
- OpenTelemetry は、トレース、メトリクス、ログの 3 つのシグナルを扱い、トレース、メトリクス、ログの順に重視する。
- トレースは 1 つのトランザクションを表し、ユーザ体験をモデル化するのに最も適したシグナルである。
内容
主要なオブザーバビリティシグナル
OpenTelemetry は、トレース、メトリクス、ログという 3 つの主要なシグナルを対象にしている。重要度はトレース、メトリクス、ログの順である。この順位は、次の目標から来ている。
- 実際の本番データとサービス間の通信を使って、システム内のサービス間の関係を捉える。
- サービスが何をしていて、どこで動いているかを、一貫性のある説明的なメタデータでテレメトリに注釈として付ける。
- システムで起きたイベントを正確に数え、計測する。
- 任意の測定値のグループの間にある関係(「これは、あれと同時に起きた」といった情報)を特定する。
クラウドネイティブなアーキテクチャは複雑で、一時的かつ動的な処理が大量に実行される。そのため、大企業でなくても、サービスの量や重要度を一覧にするような単純な作業にさえ膨大なコストがかかるようになった。OpenTelemetry は、こうした作業に必要な構成要素を提供するように設計されている。つまり、クラウドネイティブなソフトウェアに、意味的に正確な計装を提供することに焦点を当てている。
トレース
トレース(分散トレース)は、分散システムにおける処理をモデル化するシグナルである。トレースは、あるトランザクションに関連するログ(スパン)を集めたものである。構造化ログと比べて、トレースには次のような価値がある。
- 1 つのトレースは、分散システムを通る 1 つのトランザクション、つまり 1 人のユーザの経路を表す。そのため、ユーザ体験をモデル化する最良の方法になる。
- トレースのグループを複数のディメンションで集約すると、見つけにくいパフォーマンスの特性を発見できる。
- メトリクスなど他のシグナルに変換できる。1 つのトレースは、1 リクエスト分のゴールデンシグナルを計算するのに必要な情報を持っている。そのため、主要なパフォーマンス情報を失わずに生データをダウンサンプリングできる。
メトリクス
メトリクスは、システムの状態を数値で計測し記録したシグナルである。デバイスで使われているディスク容量や、VM で利用できる RAM などがこれにあたる。