次のチェックリストを使用して、Microsoft Sentinel Data Lake で KQL (Kusto クエリ言語) クエリとジョブを操作するときの一般的な問題を解決します。
クエリまたはジョブを実行する前に、前提条件を確認してください。 詳細については、「 Microsoft Sentinel データ レイクのロールとアクセス許可」を参照してください。
KQL クエリまたはジョブを実行する前に、適切なワークスペースを選択していることを確認します。
参照されているすべてのテーブルとワークスペースが存在し、アクセス可能であることを確認します。
実行エラーを回避するには、サポートされている KQL 演算子とコマンドのみを使用します。
クエリのタイムアウトを回避するために、時間範囲などのフィルターを使用してクエリを調整します。
ジョブ固有の検証:
ジョブを使用して新しいカスタム テーブルを作成するときに、ターゲット ワークスペースに適切なロールがあることを確認します。 詳細については、「 Microsoft Sentinel データ レイクのロールとアクセス許可」を参照してください。
KQL エディターでクエリをテストし、ジョブとして送信する前に構文エラーとロジック エラーをキャッチします。
ノートブック ジョブを含め、テナント内のすべてのジョブでジョブ名が一意であることを確認します。
クエリ出力スキーマが列名とデータ型の変換先テーブルと一致していることを検証します。
ジョブステータスを確認し、進捗状況を追跡します。
特定のエラー メッセージと解決手順については、次のエラー テーブルを参照してください。
注
分析レベルに昇格されたデータは、データのサイズとクエリの複雑さに応じて、Advanced Hunting に表示されるまでに 15 ~ 30 分かかる場合があります。 ジョブのクエリが 1 時間の制限を超えると、部分的な結果がレベル上げされる可能性があります。
KQL クエリのエラー メッセージ
| エラーメッセージ | 根本原因 | 推奨されるアクション |
|---|---|---|
| テーブルが見つからないか、空です。 | 参照先のテーブルが存在しないか、空であるか、ユーザーに必要なアクセス許可がありません。 | テーブル名を確認し、データの可用性を確認し、ユーザーが適切なアクセス権を持っていることを確認します。 詳細については、「 Microsoft Sentinel データ レイクのロールとアクセス許可」を参照してください。 |
| 破棄されたオブジェクトにアクセスできません。 | バックエンド サービスで内部サービス エラーが発生しました。 | 再試行してください。 問題が解決しない場合は、サポート チケットを開きます。 |
| ゲートウェイでのクエリのタイムアウト。 | 時間フィルターのない実行時間の長いクエリ。 | 時間フィルターを適用するか、追加のフィルターを適用します。 |
| 時間範囲が設定されていません。 クエリ コストを制御し、タイムアウトを回避する時間パラメーターを追加します。 | 無制限のルックバックを持つクエリでは、タイムアウトが発生する可能性があります。 | 時間フィルターを適用するか、追加のフィルターを適用します。 |
| サポートされていない関数。 data lake: ingestion_time() でサポートされていない関数を削除するようにクエリを変更します。 | データ レイクに対するクエリでは、 ingestion_time() 関数はサポートされていません。 |
クエリから ingestion_time() を削除してから、やり直してください。 |
| クエリの実行に割り当てられたタイムアウトよりも時間がかかり、中止されました。 | • クエリが過度に複雑であるか、大規模なデータセットを取得しているため、許可された実行時間を超える可能性があります。 • 不要な結合や過剰なフィルター処理などの非効率的なクエリ構造は、パフォーマンスの低下に寄与する可能性があります。 |
クエリを最適化し、もう一度やり直してください。 |
| 401-Unauthorized: これは通常、永続的なエラーを表し、再試行が役立つ可能性はほとんどありません。 エラーの詳細: DataSource={clusterUri}、DatabaseName={databaseName}。 | • データ レイクへのアクセスに使用される認証トークンが無効であるか、有効期限が切れている可能性があります。 • 指定したデータベースに対してクエリを実行するために必要なアクセス許可がありません。 |
アクセス許可を再認証して確認します。 |
| 外部 URL を呼び出したクエリ。 Lake のクエリでは、外部 URL の呼び出しはサポートされていません。 | Data Lake 環境で実行される KQL クエリは、外部エンドポイントの呼び出しをサポートしていません。 | クエリから外部 URL 呼び出しを削除します。 |
| クエリの実行が許可されている制限を超えています。 | データ レイク内の KQL 対話型クエリは、500,000 行に制限されています。 | KQL ジョブでクエリを実行するか、ノートブックを使用します。 |
| テーブルが見つからなかったか、データがない可能性があります。 テーブルが存在するか、データを持っているか、ユーザーがアクセス許可を持っているかを確認してください。 | • 指定されたテーブルがデータベースに存在しない可能性があります。 • テーブルにアクセスするためのアクセス許可がない場合があります。 • テーブルは存在する可能性がありますが、データがないため、意味のある出力は生成されません。 |
テーブルの存在、データの可用性、およびユーザーのアクセス許可を確認します。 |
クエリ テキストが、内部拡張後に許容される最大長を超えました。 これは、 in() 演算子が、項目の大きなリストを含む変数と共に使用される場合に発生する可能性があります。 |
• in() 演算子を大きなリストと共に使用すると、拡張されたクエリがクエリの制限を超える可能性があります。• クエリには、動的に生成されたコンテンツが含まれている可能性があり、その結果、長さが長くなる可能性があります。 |
リストのサイズを小さくするか、クエリを簡略化します。 |
| クエリの実行が許可されている制限を超えています。 | クエリを最適化し、もう一度やり直してください。 | |
セマンティック エラーと構文エラー。次に例を示します。
|
クエリの形式が正しくがなく、存在しないテーブルまたは列を参照しているか、無効なスカラー関数を使用しています。 | クエリを確認して、もう一度やり直してください。 |
| クライアントは、スコープ内のワークスペースまたはクライアントが提供した無効なワークスペースにアクセスできません。 | クエリで無効なワークスペース ID が使用されます。 | 正しいワークスペース ID を入力して、もう一度やり直してください。 |
| 予期しない制御コマンド | 制御コマンド ( show など) の使用は許可されません。 |
対処は必要ありません。 |
KQL ジョブのエラー メッセージ
| エラーメッセージ | 根本原因 | 推奨されるアクション |
|---|---|---|
| 指定したターゲット テーブルは、ターゲット ワークスペースに存在しません。 | テーブル名が正しくないか、削除されているか、まだ作成されていません。 | ジョブを送信する前に、テーブル名を確認し、ターゲット ワークスペースに存在することを確認します。 |
| 指定したソース テーブルが存在しません。 | 指定したワークスペースに 1 つ以上のソース テーブルが存在しないか、ワークスペースから最近削除されました。 | 指定したワークスペースにソース テーブルが存在することを確認します。 |
| クエリで指定されたワークスペースまたはデータベース名が無効であるか、アクセスできません。 | 参照先データベースが存在しないか、ジョブにアクセス許可がありません。 | データベース名が正しく、ジョブ コンテキストからアクセス可能であることを確認します。 |
| 指定したターゲット ワークスペースが Azure サブスクリプションに存在しません。 | ワークスペース ID または名前が無効であるか、テナント内の Azure サブスクリプションに存在しません。 | ワークスペース ID を検証します。 |
| クエリ出力スキーマが、変換先テーブルのスキーマと一致しません。 | クエリ出力内の列の数または名前は、変換先テーブル スキーマとは異なります。 | クエリまたはテーブル スキーマを更新して、それらが揃っていることを確認します。 |
| クエリ出力内の 1 つ以上の列のデータ型が、変換先テーブルスキーマと一致しません。 | クエリ出力とテーブル スキーマの型の不一致 (文字列と datetime など)。 | クエリ出力の各列が、テーブル スキーマ内の予想されるデータ型と一致していることを確認します。 |
| 構文エラーまたはロジック エラーのため、KQL クエリの実行に失敗しました。 | クエリに無効な構文、サポートされていない関数、サポートされていないデータ型、または正しくない参照が含まれています。 | KQL ジョブでクエリを使用する前に、KQL クエリまたは Azure Data Explorer でクエリをテストします。 |
| KQL ジョブ名は一意である必要があります。 | このジョブ名は既にテナントに存在しています。 | ジョブの一意の名前を指定します。 |
| 列名が無効です。 文字で始まり、文字、数字、アンダースコア (_)、_ResourceIdのみを含める必要があります。 | ジョブの出力列にサポートされていない形式が含まれています。 | クエリを更新し、列の名前を変更します。 |