APM 用語集とチュートリアル
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

APM 用語集とチュートリアル

APM UI には、アプリケーションのパフォーマンスをトラブルシューティングし、これを製品全体で関連付けるための多くのツールが用意されています。これは、高度に分散されたシステムの問題を見つけて解決するのに役立ちます。

コンセプト説明
サービスサービスは、最新のマイクロサービスアーキテクチャの構成要素です。サービスは、アプリケーションを構築する目的で、エンドポイント、クエリ、またはジョブを広くグループ化します。
Resourceリソースは、顧客アプリケーションの特定のドメインを表します。通常、これはインスツルメントされたウェブエンドポイント、データベースクエリ、またはバックグラウンドジョブです。
モニターAPM メトリクスモニターは、通常のメトリクスモニターと同様に機能しますが、APM 専用に調整されたコントロールを備えています。このモニターを使用して、ヒット、エラー、さまざまなレイテンシー測定に関するサービスレベルでアラートを受信します。
トレーストレースは、アプリケーションがリクエストを処理するのにかかった時間とこのリクエストのステータスを追跡するために使用されます。各トレースは、1 つ以上のスパンで構成されます。
スパンスパンは、特定の期間における分散システムの論理的な作業単位を表します。複数のスパンでトレースが構成されます。
トレースメトリクストレースメトリクスは自動的に収集され、他の Datadog メトリクスと同様の 15 か月の保持ポリシーで保持されます。これを使用して、ヒット、エラー、またはレイテンシーを特定し、アラートを発信することができます。
App AnalyticsApp Analytics は、ユーザー定義のタグ(customer_id、error_type、app_name など)またはインフラストラクチャータグで Analyzed Span をフィルターするために使用されます。
Analyzed SpanAnalyzed Span は、リクエストの 100% のスループットを表し、App Analytics での検索、クエリ、監視に使用できます。
スパンタグTrace View でリクエストを関連付けたり、App Analytics でフィルターしたりするためのキーと値のペアの形式のタグスパン。

サービス

アプリケーションのインスツルメンテーションの後、サービス一覧画面が APM データのメインランディングページになります。

サービスは、最新のマイクロサービスアーキテクチャの構成要素です。サービスは、インスタンスをスケーリングする目的で、エンドポイント、クエリ、またはジョブを広くグループ化します。以下はその例です。

  • URL エンドポイントのグループは、API サービスの下でグループ化できます。
  • 1 つのデータベースサービス内でグループ化された DB クエリのグループ。
  • crond サービスで構成された定期的なジョブのグループ。

以下のスクリーンショットは、e コマースサイトビルダー向けのマイクロサービス分散システムです。web-storead-serverpayment-dbauth-service はすべて、APM のサービスとして表されます。

すべてのサービスはサービス一覧画面にあり、サービスマップに視覚的に表示されます。各サービスには独自のサービス詳細画面があり、スループット、レイテンシー、エラー率などのトレースメトリクスを表示および検査できます。これらのメトリクスを使用して、ダッシュボードウィジェットの作成、モニターの作成、およびサービスに属するウェブエンドポイントやデータベースクエリなどのすべてのリソースのパフォーマンスの確認を行います。

サービス詳細画面に期待していた HTTP エンドポイントが表示されませんか?APM では、エンドポイントはサービス名以上でサービスに接続されます。また、トレースのエントリポイントスパンの `span.name` を使用して行われます。たとえば、上記のウェブストアサービスでは、`web.request` がエントリポイントスパンです。詳細についてはこちらをご覧ください。

リソース

リソースは、顧客アプリケーションの特定のドメインを表します。通常は、インスツルメントされたウェブエンドポイント、データベースクエリ、またはバックグラウンドジョブです。ウェブサービスの場合、これらのリソースは、静的なスパン名 web.request でグループ化された動的なウェブエンドポイントの場合があります。データベースサービスでは、スパン名が db.query のデータベースクエリになります。たとえば、web-store サービスには、チェックアウト、updateing_carts、add_item などを処理するリソース(ウェブエンドポイント)が自動的にインスツルメントされています。各リソースには、特定のエンドポイントにスコープされたトレースメトリクスを持つ独自のリソースステータス画面があります。トレースメトリクスは、他の Datadog メトリクスと同様に使用できます。ダッシュボードにエクスポートしたり、モニター作成に使用したりできます。リソースステータス画面には、すべてのトレーススパンの集約ビュー、リクエストのレイテンシー分布、およびこのエンドポイントに対して行われたリクエストを示すトレースを含むスパンサマリーウィジェットも表示されます。

トレース

トレースは、アプリケーションがリクエストを処理するのにかかった時間とこのリクエストのステータスを追跡するために使用されます。各トレースは、1 つ以上のスパンで構成されます。リクエストの存続期間中、サービス全体の分散呼び出し(HTTP ヘッダーを介して trace-id が挿入/抽出されるため)、自動的にインスツルメントされたライブラリOpenTracing などのオープンソースツールを使用した手動インスツルメンテーションをフレームグラフビューで見ることができます。トレースビューページで、各トレースは、ログをトレースに接続するタグをスパンに追加するランタイムメトリクスを収集するなど、プラットフォームの他の部分に接続する情報を収集します。

スパン

スパンは、特定の期間におけるシステム内の論理的な作業単位を表します。各スパンは、span.name、開始時間、期間、およびスパンタグで構成されます。たとえば、スパンは、別のマシンでの分散呼び出しに費やされた時間、または大きなリクエスト内の小さなコンポーネントに費やされた時間を表すことができます。スパンは相互にネストでき、これによりスパン間に親子関係が作られます。

以下の例では、スパン rack.request はトレースのエントリポイントスパンです。これは、ウェブストアサービス詳細画面が、rack.request という名前のエントリポイントスパンを持つトレースで構成されるリソースを表示していることを意味します。この例では、アプリケーション側に追加されたタグ(merchant.namemerchant.tier など)も示されています。これらのユーザー定義のタグは、App Analytics で APM データを検索、分析するために使用できます。

トレースメトリクス

トレースメトリクスは自動的に収集され、他の Datadog メトリクスと同様の 15 か月の保持ポリシーで保持されます。これを使用して、ヒット、エラー、またはレイテンシーを特定し、アラートを発信することができます。トレースメトリクスは、サービスまたはリソースとともにトレースを受信するホストによってタグ付けされます。たとえば、ウェブサービスをインスツルメントした後、Metric Summary のエントリポイントスパン web.request のトレースメトリクスが収集されます。

ダッシュボード

トレースメトリクスは、Service または Resource ページからダッシュボードにエクスポートできます。さらに、既存のダッシュボードからトレースメトリクスを照会できます。

モニタリング

トレースメトリクスは、監視に役立ちます。APM モニターは、New MonitorsService、または Resource ページで設定できます。推奨されるモニターのセットは、Service または Resource ページで利用できます。

App Analytics

App Analytics は、ユーザー定義のタグ(customer_id、error_type、app_name など)またはインフラストラクチャータグで Analyzed Span をフィルターするために使用されます。これにより、ヒット、エラー、レイテンシーの 100% スループットで検索、グラフ化、監視できるとともに、サービスを流れるウェブリクエストを詳細に調べることができます。この機能は、自動構成で有効にできます。

Analyzed Span

Analyzed Span は、リクエストの 100% のスループットを表し、スパンに含まれるタグによる App Analytics の検索、クエリ、監視に使用できます。App Analytics を有効にすると、トレースクライアントは、デフォルトでウェブサービスのエントリポイントスパンを分析し、アプリケーションで追加のサービスを構成できるようになります。たとえば、100 個のリクエストを持つ Java サービスは、servlet.request スパンから 100 個の Analyzed Span を生成します。DD_TRACE_ANALYTICS_ENABLED=true を設定すると、web-store サービスはすべての rack.request スパンを分析し、App Analytics で利用できるようにします。この例では、99 パーセンタイルでレイテンシーが最も高い上位 10 マーチャントをグラフ化できます。merchant_name は、アプリケーションのスパンに適用されたユーザー定義のタグです。

Analyzed Span Estimator を使用して、サービスから生成される Analyzed Span の数を見積もることができます。取り込み後、APM 設定のサービス別レベルで、Analyzed Span を 100% からそれより低いパーセンテージまでフィルターできます。これにより、課金対象の Analyzed Span が減少します。

スパンタグ

Trace View でリクエストを関連付けたり、App Analytics でフィルターしたりするためのキーと値のペアの形式のタグスパン。タグは、単一のスパンに追加することも、すべてのスパンにグローバルに追加することもできます。以下の例では、リクエスト(merchant.store_namemerchant.tier など)がタグとしてスパンに追加されています。

アプリケーションのスパンをタグ付けするには、このチュートリアルをご覧ください。

タグがスパンに追加されたら、タグをクリックしてファセットとして追加し、App Analytics でタグを検索およびクエリします。これが完了すると、このタグの値はすべての新しいトレースに保存され、検索バー、ファセットパネル、トレースグラフクエリで使用できます。

その他の参考資料