排查检测规则问题

支持范围:

运行时错误可能会在规则执行期间发生,并导致规则无法成功执行。本文档可帮助您排查一些常见的运行时问题。

  • 您可以在部署前测试规则,以防止出现运行时错误。 在规则编辑器中点击运行测试 - 如果检测到错误,请点击错误链接查看详细信息。

  • 如果规则执行期间发生错误,请点击检测页面上的错误链接,了解详情。

查询语法和逻辑错误

当查询结构无效、过于复杂或使用不兼容的数据类型时,会发生这些错误。

出错提示 根本原因 解决方法
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)组合在一起时,就会出现这种类型约束。该限制适用于 events 和 outcome 部分,包括 sum() 或 max() 聚合内部。如果规则中混合使用了有符号和无符号整数算术,则可能在保存时不会出现语法错误,而仅在运行时或测试规则时失败。如需了解详情,请参阅使用无符号事件字段进行算术运算。

资源限制和性能错误

这些错误表示查询过于繁重,系统无法处理。

出错提示 根本原因 解决方法
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 专业人士的解答。