概要

ログ検索の結果をさらに絞り込みたい場合は、サブクエリ を使用して結果を第 2 のログ グループと比較するか、参照テーブル のデータを使ってログをフィルタリングします。

サブクエリでログをフィルタリング

第 2 のクエリの結果に基づいてメイン クエリの結果を絞り込みたい場合にサブクエリを使用します。2 つのシナリオ例は サブクエリの例 を参照してください。

サブクエリ フィルターを追加するには:

  1. Log Explorer に移動します。
  2. 検索バーにクエリを入力してログをフィルタリングします。これがメイン クエリです。
  3. + Add をクリックします。
  4. Add Query Filter セクションで Logs を選択します。

これにより、クエリ エディタに新しい要素が追加されます:

メイン検索クエリの下にあるサブクエリ エディタ
  1. where フィールドで、ドロップダウン メニューを使用して相関させたい属性を選択します。選択可能な属性は、メイン クエリで返されたログに含まれるものです。
  2. from フィールドでサブクエリ フィルターを定義します。
  3. サブクエリ フィルターの前にある Select Column ドロップダウン メニューで、サブクエリの結果をグループ化およびソートするための属性を選択します。
  4. IN または NOT IN 演算子のどちらを使用するかを選択します:
    • IN 演算子の結果には、その属性値がサブクエリの結果にも含まれているログのみが含まれます。例: service:a によって生成されたログのうち、service:b のトップ ユーザーの 1 人でもあるユーザーに紐づくものだけを表示したい場合。
    • NOT IN 演算子の結果では、属性値がサブクエリの結果に含まれているログを除外します。例: status:error ログのみを見たいが、最終的に status:success ログに至ったユーザーに紐づく status:error ログは除外したい場合。詳細な例は 古いまたは置換済みのログをフィルタリング を参照してください。
  5. 必要に応じて、照合対象とするサブクエリの属性値の数を減らします。デフォルト値および最大値は 1000 です。頻度が高い値の top、または頻度が低い値の bottom から選択します。

サブクエリの例

以下は、ログから必要な情報を得るためにサブクエリを使用する必要があるシナリオです。

古いまたは置換済みのログをフィルタリング

あなたが e コマース プラットフォームを運用していると仮定します。顧客が注文を試みるたびにログが生成されます。ウェブサイトの継続的な問題により失われた潜在的な購入額の合計を把握するために、ログを分析したいとします。

ただし、注文は成功するまでに複数回失敗することがあると気付きます。つまり、特定の注文 ID については、検索結果に status:error ログと status:success ログの両方のエントリが存在します。2 つのクエリから一意の注文 ID のリストを抽出した場合、この注文 ID は両方に現れます。サブクエリを使えば、相互排他的なリストを取得できます。

この例では、最終的に成功しなかった注文のログのみに関心があります。サブクエリ機能を使用して、最終的に成功した注文を除外するには:

  1. status:success ログ向けのサブクエリを定義します。
  2. NOT IN 演算子を選択して、サブクエリの結果セットから注文を除外します。
最終的に成功した注文を除外する設定を示すクエリ エディタ

異なるログ ソース間で相関付ける

あなたが network_directory という名前のサービスを持ち、組織内のすべての内部 ネットワーク リソースとそれらへのアクセスを監視していると仮定します。このサービスによって生成されるログ イベントには、標準の属性 (例えば hostservicesource) に加えて、クライアントの IP アドレスのようなカスタム属性が含まれます。

さらに、すべての内部アセット (インフラストラクチャー、従業員のデバイスなど) を追跡する別のサービス、device-manager もあります。

継続中の攻撃を調査しており、ほぼすべてのエンドポイントで API リクエストが大幅に増加していることを観測しています。まず、異常なリクエスト ボリュームに関連する IP アドレスを特定し、ファイアウォール レベルでブロックできるようにしたいと考えています。ただし、社内の内部 サービスはこれらのエンドポイントの最大級の利用者でもあるため、誤ってブロックしないように、クエリ結果からそれらを除外する必要があります。

この例では、service:network_directory をメインのクエリとして使用し、次に device-manager サービス用のサブクエリフィルターを定義して、認識されたデバイスからの結果を除外します。

既知のデバイスの結果を除外する設定を示すクエリ エディタ

リファレンステーブルに基づくログのフィルター

Reference Tables containing over 1,000,000 rows cannot be used to filter events. See Add Custom Metadata with Reference Tables for more information on how to create and manage Reference Tables.

Reference Tables allow you to combine metadata with logs, providing more information to resolve application issues. Add a query filter based on a Reference Table to perform lookup queries. For more information on creating and managing this feature, see the Reference Tables guide.

To apply a query filter with Reference Tables, click the Add button next to the query editor and select Join with Reference Table.

  1. Select your reference table in the dropdown menu.
  2. Select the log field to join on.
  3. Select the IN or NOT IN operator to filter in or out matching logs.
  4. Select the Reference Table column to join on.
  5. (Optional) Select Reference Table columns used to enrich logs.
  6. (Optional) Filter logs by directly querying data in Reference Table columns.

In the following example, a Reference Table containing product information is used to filter and enrich logs:

参照テーブルの検索オプションが強調表示された Datadog Log Explorer。前述の手順に対応する番号付きステップを含む

参考資料