#4506·crowdsec

MySQL: 在 O2M 边缘链接上插入 AppSec 警报失败 (alert_metas / alert_events)

作者: pepordev创建于 2026年6月10日更新于 2026年9月14日
标签kind/bugneeds/triage

说明 AppSec WAF警报在使用外置的MySQL时无法持续到LAPI. AppSec sock的每个POST /v1/备战器都返回了HTTP 500. AppSec 客户端在循环(~1s)中重试.

失败在 pkg/database/aerts.go 中 – CreateAlertBatch (): 预创建的儿童行(Event.CreateBulk,Meta.CreateBulk),并通过Alert将其连接. 创建 (). AddEvents (. AddMetas (). 保存( 或 Areaty. Create Bulk) 触发了 MySQL 上的 ent O2M 约束错误 。

同样的有效载荷在SQLite上工作(默认为LAPI DB有数据PVC).

这在v1.7.8上复制(包括用#4438交易固定来构建),在一个新鲜/空的MySQL数据库上. 插入失败后退; 提醒 / 事件 / meta 保留为空, 直到应用工作环绕 。

相關:#4432,#4438 (PG僵局/FlushOrphans race-被固定在1.7.8中,但这是单独的MySQL + O2M边缘连接问题).

msg="在向 api 推进时 : 向 LAPI 发送提醒失败 : API 错误 :\" crowdsec-appsec-676887bbd7-rvqn4\" : 保存提醒 : 批量生成提醒 : ent: 强制失败 : [55823 55824 55825 55826 555827 55822] 已经连接到不同的提醒 metas : 无法插入批量" 。

环境 构成部分QQ 数值


平台 QKubernetes (AKS) (原始内容存档于2019-09-21) (英语). Helm chart QQ 众筹0.24. 图片(被破坏) QQ人群安全/人群:v1.7.8-63227459 LAPI 1 复制版, 外部 MySQL AppSec 已启用, : 7422, Traefik 保镖插件 特务 QQ Traefik 日志获取

  • 复制步骤
  1. 在外接MySQL(v1.7.8)上部署CrowdSec Helm 02.4.0与AppSec + LAPI.
  2. 确认LAPI以cscli版本报告db mysql.
  3. Trigger AppSec,例如Get http:///.env
  4. 央视LAPI POST /v1/aerts → 500和AppSec出错循环.
  5. 可选性:将所有 CrowdSec 表格截取,重新启动 LAPI ——失败仍然复制.
  6. 将 LAPI 切换到 SQLite (omit db config, 启用数据 PVC) — 相同的触发器 – 201, 提醒持续

内容来源: crowdsecurity/crowdsec