feat: 新增设备 API 拉取采集及配套处理能力

- 接入 NDRServer 告警和流量日志,支持凭据与任务管理
- 支持分页拉取、窗口拆分、调度优先级及 WAL 持久化后推进断点
- 增加迟到告警规则重放,优化多条泛化规则选择和事件时间处理
- 补充回归测试、数据库升级脚本及部署文档
This commit is contained in:
王绍宏
2026-09-06 16:46:21 +08:00
parent b61ec2e37c
commit 00c0a1fb7f
141 changed files with 11318 additions and 467 deletions
@@ -0,0 +1,61 @@
-- =============================================================================
-- 脚本:06-fairness-late-replay-verify.sql
-- 用途:验证公平调度和迟到告警重放的数据库升级结果。
-- 性质:只读脚本,不会修改表结构和业务数据,可以重复执行。
-- 执行时机:05 执行完成后、启动三个新版服务之前。
--
-- 成功标准:
-- 1. 第 1 组包含 SCHEDULER_PRIORITY 字段和两张 ANALYSIS_* 表的字段;
-- 2. 第 2 组所有约束的 STATUS 都是 ENABLED;
-- 3. 第 3 组返回三个索引,STATUS 都是 VALID;
-- 4. 第 4 组中 NDR_ALERT 优先级为 100,NDR_FLOW_LOG 优先级为 10;
-- 5. 首次升级时,第 5、6 组可以返回 0 行,因为还没有产生迟到数据和重放任务。
-- =============================================================================
-- 第 1 组:检查新增字段和两张新表的字段结构。
SELECT table_name,column_name,data_type,nullable,data_default
FROM user_tab_columns
WHERE (table_name='DEVICE_COLLECT_API_CONFIG' AND column_name='SCHEDULER_PRIORITY')
OR table_name IN ('ANALYSIS_LATE_ALARM_BUCKET','ANALYSIS_RULE_REPLAY_WINDOW')
ORDER BY table_name,column_id;
-- 第 2 组:检查新增检查约束、主键、外键和唯一约束是否启用。
SELECT table_name,constraint_name,constraint_type,status
FROM user_constraints
WHERE table_name IN (
'DEVICE_COLLECT_API_CONFIG',
'ANALYSIS_LATE_ALARM_BUCKET',
'ANALYSIS_RULE_REPLAY_WINDOW'
)
AND (table_name<>'DEVICE_COLLECT_API_CONFIG'
OR constraint_name='CK_DC_API_CFG_PRIORITY')
ORDER BY table_name,constraint_name;
-- 第 3 组:检查三个新增索引是否有效。
SELECT table_name,index_name,uniqueness,status
FROM user_indexes
WHERE index_name IN (
'IDX_DC_API_CFG_PRIORITY_DUE',
'IDX_ANALYSIS_LATE_BUCKET_DUE',
'IDX_ANALYSIS_RULE_REPLAY_DUE'
)
ORDER BY index_name;
-- 第 4 组:核对现有 API 拉取任务的调度优先级和启停状态。
SELECT collect_task_id,stream_key,scheduler_priority,enabled,next_run_at
FROM device_collect_api_config
ORDER BY scheduler_priority DESC,collect_task_id;
-- 第 5 组:按状态统计迟到告警分钟桶。刚升级完成时返回 0 行属于正常情况。
SELECT status,COUNT(*) AS bucket_count
FROM analysis_late_alarm_bucket
GROUP BY status
ORDER BY status;
-- 第 6 组:按状态统计规则重放窗口及输入、输出数量。
-- 刚升级完成时返回 0 行属于正常情况;运行后可据此观察积压和处理结果。
SELECT status,COUNT(*) AS replay_count,
SUM(input_count) AS input_count,SUM(output_count) AS output_count
FROM analysis_rule_replay_window
GROUP BY status
ORDER BY status;