ディメンション
このサイトのコンテキストでは、o11y 空間を 6 つの次元に沿って考えます。各次元を独立して見ることは、合成的な観点から有益です。つまり、特定のワークロードに対して具体的な o11y ソリューションを構築しようとする場合、使用するプログラミング言語などの開発者関連の側面や、コンテナや Lambda 関数などのランタイム環境といった運用トピックにまたがります。

「シグナルとは何ですか?」 ここでシグナルと言う場合、ログエントリ、メトリクス、トレースを含む、あらゆる種類の o11y データおよびメタデータポイントを意味します。より具体的にする必要がある場合や、そうしなければならない場合を除き、「シグナル」という用語を使用します。どのような制限が適用されるかは、文脈から明らかになるはずです。
それでは、6 つのディメンションをそれぞれ見ていきましょう。
送信先
この次元では、長期保存や、シグナルを利用できるグラフィカルインターフェイスを含む、あらゆる種類のシグナルの送信先を考慮します。開発者として、サービスのトラブルシューティングのためにシグナルを検出、検索、相関付けできる UI または API へのアクセスが必要です。インフラストラクチャまたはプラットフォームの役割では、インフラストラクチャの状態を把握するためにシグナルを管理、検出、検索、相関付けできる UI または API へのアクセスが必要です。

最終的に、これは人間の観点から最も興味深い側面です。 ただし、メリットを享受するためには、まず少し作業に投資する必要があります。ソフトウェアと外部依存関係を計装し、シグナルを宛先に取り込む必要があります。
では、シグナルはどのようにして宛先に到達するのでしょうか?良い質問ですね。それは…
エージェント
シグナルがどのように収集され、分析にルーティングされるか。シグナルは 2 つの ソースから取得できます。アプリケーションのソースコード (言語セクションも参照) から取得するか、データストアで管理される状態や VPC などのインフラストラクチャなど、アプリケーションが依存するものから取得します (インフラ & データセクションも参照)。
エージェントは、シグナルを収集して取り込むために使用するテレメトリの一部です。もう一つの部分は、計装されたアプリケーションとデータベースのようなインフラストラクチャ要素です。
言語
この側面は、サービスやアプリケーションの記述に使用するプログラミング言語に関係します。ここでは、X-Ray SDK や OpenTelemetry がインストルメンテーションのコンテキストで提供するものなど、SDK やライブラリを扱います。ログやメトリクスなどの特定のシグナルタイプについて、o11y ソリューションが選択したプログラミング言語をサポートしていることを確認する必要があります。
インフラストラクチャとデータベース
この次元は、サービスが実行されている VPC などのインフラストラクチャ、RDS や DynamoDB などのデータストア、SQS などのキューなど、あらゆる種類のアプリケーション外部の依存関係を意味します。
「共通点」 このディメンションのすべてのソースに共通することの 1 つは、それらがアプリケーションの外部に配置されている(およびアプリが実行されるコンピューティング環境の外部にも配置されている)ことであり、そのため、それらを不透明なボックスとして扱う必要があります。
このディメンションには以下が含まれますが、これらに限定されません。
- AWS インフラストラクチャ、例えば VPC フローログ
- Kubernetes コントロールプレーンログなどのセカンダリ API
- S3、RDS、SQSなどのデータストアからのシグナル
コンピューティングユニット
コードをパッケージ化、スケジュール、実行する方法。例えば、Lambda では関数であり、ECS や EKS では、それぞれタスク (ECS) またはポッド (EKS) で実行されるコンテナがその単位となります。Kubernetes のようなコンテナ化された環境では、テレメトリのデプロイに関して、サイドカーとして、またはノード (インスタンス) ごとのデーモンプロセスとしての 2 つのオプションが用意されていることがよくあります。
コンピューティングエンジン
この次元 は、基盤となるランタイム環境を指します。これは、プロビジョニングとパッチ適用の責任がユーザーにある場合(例:EC2 インスタンス)と、ない場合(Fargate や Lambda などのサーバーレスオファリング)があります。使用するコンピューティングエンジンによっては、テレメトリ部分がすでにオファリングの一部になっている場合があります。例えば、EKS on Fargate では、Fluent Bit 経由のログルーティングが統合されています。