概要
APM UI には、アプリケーションのパフォーマンスをトラブルシューティングし、これを製品全体で関連付けるための多くのツールが用意されています。これにより、分散されたシステムの問題を見つけて解決することができます。
_スパン_や_インデックス化_など、APM の重要な用語の定義や説明については、主な用語集を参照してください。
| 概念 | 説明 |
|---|
| サービス | サービスは、最新のマイクロサービスアーキテクチャの構成要素です。サービスは、アプリケーションを構築する目的で、エンドポイント、クエリ、またはジョブを広くグループ化します。 |
| リソース | リソースは、顧客アプリケーションの特定のドメインを表します。通常、これはインスツルメントされた Web エンドポイント、データベースクエリ、またはバックグラウンドジョブです。 |
| モニター | APM メトリクスモニターは、通常のメトリクスモニターと同様に機能しますが、APM 専用に調整されたコントロールを備えています。このモニターを使用して、ヒット、エラー、さまざまなレイテンシー測定に関するアラートをサービスレベルで受信します。 |
| トレース | トレースは、アプリケーションがリクエストを処理する際の所要時間とそのリクエストのステータスを追跡するために使用されます。各トレースは、1 つ以上のスパンで構成されます。 |
| トレースコンテキスト伝搬 | サービス間でトレース識別子を受け渡す方法です。これにより、Datadog が個々のスパンを 1 つの分散トレースに結合できます。 |
| 保持フィルター | 保持フィルターは、Datadog UI 内に設定されたタグベースのコントロールで、15 日間にわたって Datadog でインデックスするスパンの種類を決定します。 |
| Ingestion Control | Ingestion Control は Datadog に最大 100% のトレースを送信し、15 分間の Live Search および分析を行う際に使用されます。 |
| インスツルメンテーション | インスツルメンテーションとは、可観測性データをキャプチャしてレポートするために、アプリケーションにコードを追加するプロセスです。 |
| Baggage | Baggage は、トレース、メトリクス、ログの間で受け渡されるコンテキスト情報で、キーと値のペアの形式で表されます。 |
サービス
アプリケーションのインスツルメンテーションを行った後、カタログが APM データのメインランディングページになります。
サービスは、最新のマイクロサービスアーキテクチャの構成要素です。サービスは、インスタンスをスケーリングする目的で、エンドポイント、クエリ、またはジョブを広くグループ化します。以下はその例です。
- URL エンドポイントのグループは、API サービスの下でグループ化できます。
- 1 つのデータベースサービス内でグループ化された DB クエリのグループ。
- crond サービスで構成された定期的なジョブのグループ。
以下のスクリーンショットは、e コマースサイトビルダー向けのマイクロサービス分散システムです。web-store、ad-server、payment-db、auth-service はすべて、APM のサービスとして表されます。
すべてのサービスはカタログにあり、Service Map に視覚的に表示されます。各サービスには独自のサービス詳細画面があり、スループット、レイテンシー、エラー率などのトレースメトリクスを表示および検査できます。これらのメトリクスを使用して、ダッシュボードウィジェットの作成、モニターの作成、およびサービスに属する Web エンドポイントやデータベースクエリなどのすべてのリソースのパフォーマンスの確認を行います。
期待していた HTTP エンドポイントがサービス詳細画面に表示されませんか?APM では、エンドポイントはサービス名だけでサービスに接続されるわけではありません。トレースのエントリポイントスパンの `span.name` も接続に使用されます。たとえば、上記の web-store サービスでは `web.request` がエントリポイントスパンです。詳細については、
こちらを参照してください。
リソース
リソースは、顧客アプリケーションの特定のドメインを表します。通常は、インスツルメントされた Web エンドポイント、データベースクエリ、またはバックグラウンドジョブです。Web サービスの場合、これらのリソースは、静的なスパン名 web.request でグループ化された動的な Web エンドポイントの場合があります。データベースサービスでは、スパン名が db.query のデータベースクエリになります。たとえば web-store サービスには、自動的にインスツルメントされるリソースとして、チェックアウト、カートの更新、アイテムの追加などを処理する Web エンドポイントがあります。リソース名には HTTP メソッドと HTTP ルートを指定することができます (例: GET /productpage、ShoppingCartController#checkout)。
各リソースには、特定のエンドポイントにスコープされたトレースメトリクスを持つ独自のリソースステータス画面があります。トレースメトリクスは、他の Datadog メトリクスと同様に、ダッシュボードにエクスポートしたり、モニターを作成するために使用したりすることができます。リソースステータス画面には、すべてのトレースのスパン、リクエストのレイテンシー分布、およびそのエンドポイントへのリクエストを示すトレースの集計を表示するスパンサマリーウィジェットもあります。
トレース
トレースは、アプリケーションがリクエストを処理する際の所要時間とそのリクエストのステータスを追跡するために使用されます。各トレースは、1 つ以上のスパンで構成されます。リクエストの存続期間中、サービス間の分散呼び出し (HTTP ヘッダーを介してトレース ID が挿入/抽出されるため)、自動的にインスツルメントされたライブラリ、OpenTracing などのオープンソースツールを使用した手動インスツルメンテーションをフレームグラフビューで見ることができます。トレースビューページでは、各トレースが、ログをトレースに接続する、タグをスパンに追加する、ランタイムメトリクスを収集するなど、プラットフォームの他の部分に接続する情報を収集します。
トレースコンテキスト伝搬
トレースコンテキスト伝搬は、分散システム内のサービス間でトレース識別子を受け渡す方法です。これにより、Datadog が異なるサービスからの個々のスパンを 1 つの分散トレースに結合できます。トレースコンテキスト伝搬は、リクエストがシステムを流れる際に、トレース ID や親スパン ID などの識別子を HTTP ヘッダーに挿入することによって機能します。下流のサービスは、それらの識別子を抽出して、トレースを続行します。これにより、Datadog は複数のサービスにわたるリクエストの完全なパスを再構築できます。
詳細については、アプリケーションの言語に応じたトレースコンテキストの伝搬を参照してください。
保持フィルター
UI でタグベースのフィルターを設定して 15 日間のスパンをインデックスし、トレース検索と分析で使用できるようにします。
Ingestion Control
サービスから Datadog にトレースの 100% を送信し、タグベースの保持フィルターと組み合わせて、ビジネスにとって重要なトレースを 15 日間保持します。
インスツルメンテーション
インスツルメンテーションとは、トレース、メトリクス、ログなどの可観測性データをキャプチャして Datadog にレポートするために、アプリケーションにコードを追加するプロセスです。Datadog は、さまざまなプログラミング言語やフレームワーク用のインスツルメンテーションライブラリを提供しています。
シングルステップインスツルメンテーションで Datadog Agent をインストールしたとき、またはコードに Datadog SDK を手動で追加したときに、アプリケーションを自動的にインスツルメントすることができます。
アプリケーションコードに直接トレースコードを埋め込むことで、カスタムインスツルメンテーションを使用することができます。これにより、Datadog に送信するトレースをプログラムで作成、変更、削除することができます。
詳しくは、アプリケーションインスツルメンテーションをお読みください。
Baggage
Baggage を使用すると、分散システム内のサービス境界を越えてキーと値のペア (Baggage アイテムとも呼ばれる) を伝播させることができます。トレース識別子に焦点を当てたトレースコンテキストとは異なり、ビジネスデータやその他のコンテキスト情報をトレースと一緒に送信できます。
詳細については、アプリケーションの言語に対応している伝搬形式を参照してください。
参考資料