排查规则运行时错误

支持的平台:

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

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

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

查询语法和逻辑错误

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

错误消息 根本原因 解决方法
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 因尝试在不同整数类型之间执行算术运算(+-*/MOD)而导致。 使用 cast.as_int()cast.as_uint() 转换一个字段,使其与另一个字段相匹配。

资源限制和性能错误

这些错误表明,查询对于系统来说过于繁重,无法处理。

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