検索クエリ
すべての検索パラメーターは、ページの URL に含まれているので、ビューを共有するのに便利です。
検索構文
クエリは条件と演算子で構成されます。
条件には 2 種類あります。
- スパン属性: アプリケーション内で自動または手動のインスツルメントによって収集されたスパンの内容を指します。
- スパンタグ: スパンに関連するコンテキストを拡張するためのタグです。たとえば、サービスが稼働しているインフラストラクチャーを示すホストやコンテナタグなどが含まれます。
複合クエリで複数の条件を組み合わせるには、以下のブール演算子のいずれかを使用します。
| 演算子 | 説明 | 例 |
|---|
AND | 積: 両方の条件を含むイベントが選択されます (何も追加しなければ、AND がデフォルト) | 認証 AND 失敗 |
OR | 和: いずれかの条件を含むイベントが選択されます。 | 認証 OR パスワード |
- | 排他: 指定した条件を含まないイベントが選択されます | 認証 AND パスワード |
属性検索
スパン属性を検索するには、属性キーの先頭に @ を追加する必要があります。
たとえば、以下の属性を持つスパンにアクセスしたい場合は、次のクエリを使用します。
@git.commit.sha:12345
"git": {
"commit": {
"sha": "12345"
},
"repository": {
"id": "github.com/datadog/datadog"
}
}
スパン属性はトレースサイドパネルの [Overview] (概要) タブに表示されます。
注: 予約属性 (env、operation_name、resource_name、service、status、span_id、timestamp、trace_id、type、link) については、@ を使用する必要はありません。
スパンは、それらを生成するホストやインテグレーションからタグを継承します。
たとえば、次のとおりです。
| クエリ | 一致 |
|---|
(hostname:web-server OR env:prod) | インフラストラクチャータグ hostname:web-server または予約済み属性 env:prod |
(availability-zone:us-east OR container_name:api-frontend) | これらのインフラストラクチャータグのいずれかが付与されたすべてのトレース |
(service:api AND -kube_deployment:canary) | api サービスで、canary デプロイメントにデプロイされていないすべてのトレース |
スパンタグはトレースサイドパネルの [Infrastructure] (インフラストラクチャー) タブに表示されます。
タグが タグのベストプラクティス に従っていない場合は、key:value 構文を使用しないでください。代わりに、次の検索クエリを使用してください。
tags:<MY_TAG>
たとえば、次のタグはベストプラクティスに従っていません:
auto-discovery.cluster-autoscaler.k8s.io/daffy
このタグを検索するには、次のクエリを使用します:
tags:"auto-discovery.cluster-autoscaler.k8s.io/daffy"
ワイルドカード
複数文字のワイルドカード検索を実行するには、* 記号を次のように使用します。
service:web* は、web で始まるサービスを持つすべてのトレースに一致します。@url:data* は、data で始まる url を持つすべてのトレースに一致します。
数値
数値属性の検索を実行するには、<、>、<=、または >= を使用します。たとえば、応答時間が 100ms を超えるすべてのトレースを取得するには、次のように指定します。
@http.response_time:>100
特定の範囲内にある数値属性を検索することもできます。たとえば、すべての 4xx エラーを取得するには、次のように指定します。
@http.status_code:[400 TO 499]
オートコンプリート
複雑なクエリを入力するには手間がかかることがあります。検索バーのオートコンプリート機能を使用すると、既存の値を使用してクエリを完成させることができます。
特殊文字のエスケープ
?、>、<、:、=、"、~、/、および \ は特殊属性と見なされ、エスケープする必要があります。
たとえば、url に user=JaneDoe を含むトレースを検索するには、次の検索条件を入力する必要があります。
@url:*user\=JaneDoe*
同じロジックはトレース属性内のスペースにも適用する必要があります。トレース属性にスペースを含めることはお勧めしませんが、含まれている場合は、スペースをエスケープする必要があります。
属性の名前が user.first name の場合、スペースをエスケープしてこの属性で検索を実行します。
@user.first\ name:myvalue
保存された検索
同じビューを毎日作成するのは時間を無駄にすることはありません。保存された検索には、使用した検索クエリ、列、期間が保存されます。検索名やクエリにかかわらず、これらの情報がオートコンプリート機能によって検出され、検索バーで使用できるようになります。
保存された検索を削除するには、[トレース検索] ドロップダウンメニューの下にあるごみ箱のアイコンをクリックします。
サービスおよびエンティティの検索
サービスを検索するには、service 属性を使用します。別の エンティティタイプ (たとえば、データベース、キュー、サードパーティプロバイダーなど) を検索する場合は、Datadog が APM でインスツルメントされていない依存関係を表すために使用するその他の ピア属性 を利用します。たとえば、Postgres データベースの users テーブルへの呼び出しを表すスパンを見つけるには、次のクエリを使用します: @peer.db.name:users @peer.db.system:postgres
注: グローバルサービスネーミング へ移行し、DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAME_ENABLED=true を設定している場合、スパンの service タグはそのスパンを発行しているサービスを表します。
タイムレンジ
タイムレンジを使用すると、特定の期間内のトレースを表示できます。タイムレンジをすばやく変更するには、プリセットされたレンジをドロップダウンメニューから選択します (または カスタムタイムフレームを入力します)。
Span テーブル
Span テーブルは、選択されたコンテキストに一致するスパンのリストです。コンテキストは、検索バーフィルターおよび時間範囲によって定義されます。
Service 列
デフォルトでは、Service 列はスパンの service 予約属性を表示します。
スパンがインスツルメント済みサービスから推論されたサービスへのクライアント呼び出しを表す場合、Service 列には以下が表示されます。
サービス名がベースサービス名からオーバーライドされている場合、Service 列には以下が表示されます。
完全なトレースの表示
任意のスパンをクリックすると、関連するトレースの詳細を確認できます。
列
リストにほかの スパンタグや属性 を列として追加するには、[Options] (オプション) ボタンをクリックして、追加する任意のディメンションを選択します。
トレースグループ
任意のスパンタグまたは属性でクエリをグループ化し、リクエスト数、エラーレート、レイテンシー分布をリストビューで確認できます。Group by 句では、最大 4 つのディメンションを選択できます。
高度な「Group By」クエリ
グループ化するディメンションを選択したら、[from] (取得元) ドロップダウンを使用して、ディメンションの値の取得元を指定できます。
- Span (スパン): クエリ対象のスパンのディメンションでグループ化します (デフォルト)。たとえば、
a です。 - Parent of span (スパンの親): クエリに一致するスパンの親スパンから、指定したディメンションの値を取得してグループ化します。たとえば、API エンドポイントのパフォーマンスを呼び出し元のサービスを基準に視覚化するには、
parent(a) から service でグループ化します。 - Root span (ルートスパン): トレースのルートスパンから、指定したディメンションでグループ化します。たとえば、リクエストの発生元であるフロントエンドページを基準にバックエンドのリクエストパターンを分析するには、
root から @view.name でグループ化します。
グループリストでトレースグループを表示する
トレースグループは、選択したディメンションの一意の値として表示されます。各グループは、次の 3 つの主要なメトリクスと共に表示されます。
- REQUESTS (リクエスト): グループ内のスパンの数。
- ERRORS (エラー): エラーレートとエラー数。
- P95 Latency (P95 レイテンシー): スパンの p95 レイテンシー。
これらのメトリクスを、クエリ対象のスパンではなく親スパンまたはルートスパンに集約して表示するには、Show metrics from 文で parent(a) または root を選択します。
また、Latency Breakdown により、各グループからのリクエスト内で、異なるサービス間でどのように時間が費やされるかが表示されるため、指定したグループについてレイテンシーのボトルネックを視覚的に見つけることができます。
より詳細な分析を行うには、任意のグループをクリックして、集計されたメトリクスを構成する個々のスパンイベントを調べます。
ファセット
ファセットは、1 つの属性またはタグの個別値をすべて表示すると共に、示されたトレースの量などのいくつかの基本分析も提供します。また、データを絞り込むためのスイッチにもなります。
ファセットを使用すると、特定の属性に基づいてデータセットを絞り込んだり、データセットの切り口を変えたりすることができます。ファセットには、ユーザーやサービスなどがあります。
メジャー
メジャー (Measures) は定量的な値に対応する特定のファセットです。
次が必要な場合は、メジャーを使用します。
- 複数のトレースから値を集計します。たとえば、Cassandra の行数にメジャーを作成し、リクエストされたファイルサイズの合計ごとに最上位の参照元または P95 を表示します。
- ショッピングカートの値が $1000 を超えるサービスの最もレイテンシーの高いものを数値的に計算します。
- 連続する値をフィルタリングします。たとえば、ビデオストリームの各ペイロードチャンクのサイズ (バイト単位)。
タイプ
メジャーには、同等の機能のために、(長) 整数またはダブル値が付属しています。
単位
メジャーは、クエリ時間と表示時間の桁数を処理するための単位 (秒単位の時間またはバイト単位のサイズ) をサポートします。単位は、フィールドではなく、メジャー自体のプロパティです。たとえば、ナノ秒単位の duration メジャーを考えてみます。duration:1000 が 1000 milliseconds を表す service:A からのスパンタグと、duration:500 が 500 microseconds を表す service:B からの別のスパンタグがあるとします。
算術演算プロセッサーで流入するすべてのスパンタグの期間をナノ秒にスケーリングします。service:A からのスパンタグには *1000000 乗数を使用し、service:B からのスパンタグには *1000 乗数を使用します。
duration:>20ms (検索構文を参照) を使用して、両方のサービスから一度に一貫してスパンタグにクエリを実行し、最大 1 分の集計結果を確認します。
ファセットの作成
属性をファセットとして使用したり、検索で使用したりするには、属性をクリックしてファセットとして追加します。
新しいファセットを作成すると、フィルタリングや基本分析のために、そのファセットがファセットパネルで利用可能になります。
ファセットパネル
ファセットを使用して、トレースをフィルタリングします。検索バーと URL には、選択内容が自動的に反映されます。
可視化
分析セレクターを使用して、Analytics の可視化タイプを選択します。
時系列
選択したタイムフレーム内での Duration メトリクス (またはファセットのユニーク値数) の動きを可視化し、必要に応じて、使用可能なファセットで分割します。
次の時系列 Analytics は、各サービスにおける pc99 の 5 分ごとの 継続時間の動きを示しています。
トップリスト
Duration (またはファセットのユニーク値数) に基づいて、ファセットの上位の値を可視化します。
以下の Analytics トップリストは、pc99 のサービスの継続時間を上位のものから順に示しています。
テーブル
選択した メジャー (リストで選択した最初のメジャー) に基づいてファセットから上位の値を可視化し、このトップリストに示される要素のほかのメジャーの値を表示します。検索クエリを更新したり、いずれかのディメンションに対応するログを調査したりすることができます。
- 複数のディメンションがある場合、上位の値は最初のディメンションに基づき決定されます。その後最初のディメンション内の上位値内の 2 番目のディメンション、次に 2 番目のディメンション内の上位値内の 3 番目のディメンションに基づき決定されます。
- メジャーが複数ある場合、最初のメジャーに応じて上位または下位のリストが決定されます。
- サブセット (上位または下位) のみが表示されるため、小計がグループ内の実際の合計値とは異なる場合があります。このディメンションの値が null または空のイベントは、サブグループとして表示されません。
注: 単一のメジャーと単一のディメンションで使用されるテーブルの可視化は、表示は異なりますが、トップリストと同じです。
次のテーブルログ分析は、スループットに基づいて、過去 15 分間の上位ステータスコードの動きをユニーククライアント IP の数と共に示しています。
グラフの一部を選択またはクリックすると、グラフをズームインしたり、選択範囲に対応する トレース のリストを表示したりすることができます。
エクスポート
クエリのエクスポート先:
また、このクエリから新たなメトリクスを生成することも可能です。
注: ダッシュボードおよびノートブック内の APM クエリは、すべての インデックス化されたスパン に基づいています。モニター内の APM クエリは、カスタム保持フィルター でインデックス化されたスパンにのみ基づきます。
参考資料