検出ルールのトラブルシューティング

以下でサポートされています。

ランタイム エラーはルールの実行中に発生し、ルールが正常に実行されないことがあります。このドキュメントでは、一般的なランタイムの問題のトラブルシューティングについて説明します。

  • デプロイ前にルールをテストすることで、ランタイム エラーを防止できます。ルールエディタで [Run Test] をクリックします。エラーが検出された場合は、エラーリンクをクリックして詳細を確認します。

  • ルールの実行中にエラーが発生した場合は、[検出] ページのエラーリンクをクリックして詳細を確認します。

クエリの構文エラーとロジックエラー

これらのエラーは、クエリ構造が無効であるか、複雑すぎるか、互換性のないデータ型を使用している場合に発生します。

エラー メッセージ 根本的な原因 解決策
Too many `OR` and `AND` operations クエリに、スタック スペースの上限を超える深くネストされた式またはロジックが含まれています。

ルールの条件を簡素化します。

複雑なロジックを小さな部分に分割する。

Query is too long クエリの処理に必要なスタック スペースが大きすぎます。 ロジックを複数のルールに分割します。
Accessing a new field that did not exist for this time range ルールは、スキーマに最近追加されたフィールドを参照していますが、ルールは、そのフィールドが存在しなかった期間にわたって実行されています。

フィールドが存在した後に開始するように期間を調整します。

フィールドが null または欠落しているケースを処理するようにルールを変更します。

Invalid subnet CIDR 一部の関数で、解析できないクラスレス ドメイン間ルーティング(CIDR)範囲が検出されました。 ルールの CIDR の範囲の形式を確認します。
Invalid IP address 一部の関数で、形式が正しくない IP アドレスが検出されました。 フィールド値に有効な IP アドレス形式が含まれていることを確認します。
Map access for reading label does not support duplicate map keys 一部の関数が、重複するキーが存在するマップのような構造(追加フィールドなど)から要素にアクセスしようとしました(このオペレーションでは許可されていません)。

データソースで重複するキーを調査します。

このデータの特性を処理するようにルールロジックを調整します。

Invalid regular expression re.regex() などの関数で使用されている正規表現の形式が正しくありません。

正規表現の構文を修正します。

Invalid re.replace() re.regex() の誤った使用。多くの場合、置換文字列内の括弧で囲まれた部分式と参照の不一致が原因です。 re.regex() の書き換えスキーマが、正規表現内の括弧で囲まれた部分式と一致していることを確認します。
Integer overflow in sum() aggregation 値の合計が標準整数の上限を超えています。 合計する前に、フィールドを浮動小数点型にキャストします(たとえば、sum(0.0 + $e.field) を使用します)。
Cannot complete [arithmetic/mod] operation between unsigned and signed integer このルールは、異なる整数型間で算術演算(+、-、*)またはモジュロ演算(%)を試みます。

cast.as_int() または cast.as_uint() を使用して、一方のオペランドをもう一方のオペランドに一致するように変換します。モジュロ(%)演算子には明示的なキャストが必要です。この演算子は整数のみを受け入れます。+、-、* の演算では、2.0 や 100.0 などの浮動小数点リテラル、または (2/1) などの除算強制を使用して、整数定数を浮動小数点数として強制的に動作させることもできます。同じ行に他の / 演算子がない式で使用します。

この型制約は、式で符号付き整数(INT64)リテラルと符号なし整数(UINT64)統合データモデル(UDM)フィールド(network.received_bytes、network.sent_bytes、principal.file.size など)を組み合わせた場合に発生します。この制約は、sum() または max() 集計内を含む、events セクションと outcome セクションの両方に適用されます。符号付き整数演算と符号なし整数演算が混在するルールは、構文エラーなしで保存され、実行時またはルールのテスト時にのみ失敗することがあります。詳細については、符号なしイベント フィールドを使用した算術演算をご覧ください。

リソースの上限とパフォーマンス エラー

これらのエラーは、クエリが重すぎてシステムで処理できないことを示しています。

エラー メッセージ 根本的な原因 解決策
Request was throttled, please try again later ルールに割り当てられたメモリまたは処理能力が不足しています(多くの場合、複雑な結合、大規模な集計、不十分なフィルタリングが原因です)。 イベント セクションに、より具体的なフィルタを追加します。
Not enough memory for aggregation aggregate_memory_limit を超えました。 「match」セクションのキーの数を減らして、集計を最適化します。
Spilled bytes exceed limit クエリが処理しようとしているイベントが多すぎます。 metadata.log_type などのフィルタを追加してクエリを最適化します。
Your query resource usage is exceeding its allocation クエリで使用するリソースの数が多すぎたため、リソース マネージャーによってクエリがキャンセルされました。 metadata.log_type などのフィルタを追加してクエリを最適化します。

データアクセスとシステムエラー

これらのエラーは一時的なものであるか、バックエンド データ ストレージに関連していることがよくあります。

エラー メッセージ 根本的な原因 解決策
Error reading files 基になるデータへのアクセスに関する一時的な問題。 しばらくしてからもう一度お試しください。問題が解決しない場合は、サポートまでお問い合わせください。
Error reading database 基になるデータへのアクセスに関する一時的な問題。 しばらくしてからもう一度お試しください。問題が解決しない場合は、サポートまでお問い合わせください。
Internal error システム内の一時的な問題。 しばらくしてからもう一度お試しください。問題が解決しない場合は、サポートまでお問い合わせください。
Unknown error 特定の内部エラーコードが定義されていない場合のデフォルトのエラー メッセージ。 しばらくしてからもう一度お試しください。問題が解決しない場合は、サポートまでお問い合わせください。
Request was throttled, please try again later システムに高負荷がかかっている。 しばらくしてからもう一度お試しください。

不明なランタイム エラー

説明のない不明なランタイム エラーが発生することがあります。この場合は、Google SecOps サポートにお問い合わせください。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。