王绍宏
|
8f1a8b6283
|
feat(syslog): 增加 WAL 与分 IP 接入诊断
- 每分钟保存 WAL 全局状态和分 IP 接收统计,历史保留 7 天
- 记录接收、WAL 落盘、Kafka ACK、过滤、背压及丢弃数量
- 增加 wal_max_pending_bytes 和 wal_admission_unavailable 指标
- 增加 TCP pending 当前值及进程内峰值统计
- 网络异常后同一 IP 恢复接收时打印恢复日志
- 提供当前状态及按日期查询诊断历史的接口
- 连接关闭时清理 TCP pending 计数并停止无效重试
- 增加相关单元测试和现场排查文档
|
2026-09-16 17:32:08 +08:00 |
|
王绍宏
|
faa9ffe2d9
|
feat(syslog): 优化WAL配置并在入站阶段丢弃无效设备日志
- 默认在进入WAL前丢弃未注册、重复或未分配到当前探针的Syslog日志
- 使用后台设备内存快照,避免Netty网络线程访问Redis或达梦
- 增加Terminal审计开关,允许恢复原有逐条审计文件模式
- 历史WAL中的无效设备记录直接推进checkpoint
- 增加无效设备丢弃、快照状态及刷新失败监控指标
- 生产WAL队列调整为20000条
- WAL待写预算和分段大小调整为2GiB
- 同步生产配置、Docker Compose及升级文档
- 增加无效设备前置过滤和Terminal开关测试
chore(syslog): 统一生产环境 WAL 挂载目录
- 将生产环境 WAL 默认目录调整为 /app/logs/syslog-wal
- Docker Compose 显式设置 SYSLOG_WAL_DIRECTORY
- WAL 与应用日志共用 /app/logs 宿主机挂载
- 移除旧的 /data/syslog-archive 独立挂载
- 宿主机 WAL 路径统一为 /home/syslog/logs/syslog-wal
|
2026-09-15 22:10:46 +08:00 |
|
王绍宏
|
1c07acc01d
|
feat(syslog-consumer-rule): 增加多节点原始日志采集并修复天眼/微步JSON规则匹配
一、增加现场原始日志采集功能
1. 新增按设备采集原始日志的API:
- 指定设备ID;
- 采集时长最长10分钟;
- 单次最多返回50条样本。
2. 样本选择策略:
- 优先保留时间窗口内最早到达的N条日志;
- 后续出现JSON解析异常、非标、规则执行异常、InfluxDB/达梦写入异常或Retry/DLT时,
使用异常日志逐条替换最早的正常样本;
- 异常样本同样遵循先到先得。
3. 支持三个syslog-consumer-rule实例联合采集:
- 采集请求只需发送到任意一个实例;
- 三个实例通过公共Redis同步采集任务并汇总候选样本;
- 不需要配置其他实例IP;
- Redis只保存有界候选集,不保存时间窗口内的全部日志。
4. 生命周期和资源控制:
- 采集到期后自动停止接收新日志;
- 默认进入30秒DRAINING阶段,等待异步处理异常完成样本替换;
- 最终结果默认保留30分钟,之后自动删除;
- 单实例、单会话最多保留“前N条+前N条异常”;
- Redis故障不阻断Kafka主消费链路。
5. 返回规则解析和非标表截断之前的完整原始报文,不受
HB_XDR_TRUNCATED字段截断影响。
6. 原始日志采集和多实例汇聚默认启用:
SYSLOG_RAW_CAPTURE_ENABLED=true
SYSLOG_RAW_CAPTURE_CLUSTER_ENABLED=true
二、修复天眼/微步JSON规则匹配问题
1. JSON规则配置了cropper时,先判断原始报文是否包含对应head_key;
不匹配的规则不再将当前报文误判为非法JSON。
2. 同一设备绑定多条规则时,单条不适用或解析失败的JSON规则不再立即终止整个规则链,
程序会继续匹配后续适用规则。
3. 只有全部适用JSON规则均解析失败、且没有其他规则成功处理时,才写入
“JSON解析异常”非标记录。
4. 对cropper截取后仍包含Syslog或设备前缀的内容,在JSON专用路径中重新收敛到
第一个“{”至最后一个“}”,确保交给Jackson的是完整外层JSON。
5. 修复以下现场场景:
- 天眼规则129截取结果仍带有alarm前缀;
- 微步设备同时绑定固定偏移规则和Threatbook/TDP JSON规则;
- 不适用的固定偏移规则抢先产生JSON解析异常;
- Syslog头加JSON正文不能继续匹配后续适用规则。
三、增加现场采集工具及运维说明
新增upgrade-doc/v5:
- README.md:升级、配置、生命周期和故障排查说明;
- capture-device-raw-logs.sh:一键创建采集会话、等待完成并自动落盘。
脚本输出:
- result.json:完整采集结果;
- samples.jsonl:每行一条样本及处理状态;
- raw/*.log:每条未截断原始报文;
- summary.txt:采集数量、异常数量和替换数量;
- latest.json:中断或超时时的最后有效快照。
四、兼容性与升级范围
- 兼容JDK 8;
- 无需新增或修改达梦数据库表;
- 无需创建新的Kafka Topic;
- 需要滚动升级全部syslog-consumer-rule实例;
- 三个实例必须连接相同的Redis;
- 本次提交不包含syslog-serve的高内存、WAL或JVM参数调整。
|
2026-09-14 23:11:45 +08:00 |
|
王绍宏
|
7e6b2fc4dc
|
feat(syslog): 提升RAW消费及达梦批量写入上限
- 将普通RAW基础处理批量调整为3000条
- 将RAW自适应拉取上限调整为5000条
- 将普通、告警及非标达梦批量写入上限调整为2000条
- 启动日志增加达梦实际批量配置输出
- 补充自适应分块和达梦批量写入测试
- 更新v4吞吐优化升级说明
|
2026-09-13 11:19:35 +08:00 |
|
王绍宏
|
e393350c8b
|
feat(syslog): 增加普通通道字段截断并完善慢写诊断
- 新增普通通道字段上限配置,默认2048个UTF-8字节,截断尾部保留标记
- 规则计算后执行截断,告警不应用新增2KB限制,原有256KB策略不变
- 非标原文、头部及详细原因应用新增限制,大日志通道和InfluxDB策略不变
- Retry/Replay按原始Topic识别通道,启动日志输出生效上限
- 补充达梦实际写入内容大小、最大行及最大字段诊断
- 慢日志默认阈值统一调整为1000毫秒,异常和失败仍记录
- 更新v4配置说明及回归测试
验证:JDK 8构建成功,250项测试通过
升级:替换JAR并重启,无需数据库或Kafka脚本
|
2026-09-13 08:00:08 +08:00 |
|
王绍宏
|
8173c2ff3f
|
perf(syslog): 统计异步化并按采样保留率自适应调整业务批量
- 入口统计改用独立 Kafka 消费组,移除主消费同步统计写库
- DIRECT 模式入库计数改为事务提交后异步投递,取消事实事务内统计 Outbox 写入
- 采样审计、告警分钟桶通知改为后台处理,异常不阻断主消费或回滚告警
- RAW 基础业务批量默认 500,按保留率动态扩大,上限 3000
- 限制业务块字节数及规则任务数量,保留告警全量处理和整次 poll 完成后提交
- 细化 SLOW_SYSLOG_BATCH,补充批次关联、线程排队、数据库执行及提交耗时
- 更新 v4 升级说明,明确异步统计损失风险及现场验证方法
验证:JDK 8 构建成功,232 项测试通过。
升级:复用现有表和 Kafka Topic,无新增建表或建 Topic 脚本要求。
|
2026-09-13 06:11:12 +08:00 |
|
王绍宏
|
87fee6fe69
|
feat(syslog): 增加积压采样免采样窗口
- 新增 start-lag-ms 配置,默认15分钟内全量保留
- 在15分钟至1小时之间按10级逐步降低保留率
- 延迟达到1小时后使用普通10%、非标20%的最低保留率
- 校验起始延迟必须小于最低保留率阈值
- 状态接口新增 start_lag_ms 配置展示
- 将采样策略版本升级为 v2
- 更新 Docker Compose 和 v4 升级配置说明
- 补充采样时间边界及非法配置单元测试
|
2026-09-12 23:43:56 +08:00 |
|
王绍宏
|
c868e3befd
|
feat(syslog): 优化大日志通道并增加异常连续消费兜底
- 128 KiB 及以上日志默认进入大日志 Topic
- InfluxDB 原文及达梦大字段超过 256 KiB 时截断保存
- 截断内容追加 HB_XDR_TRUNCATED 标记
- InfluxDB 写入失败时继续执行规则解析和达梦写入
- 未知或系统性异常优先写入普通/大日志 DLT
- DLT 写入失败时记录特殊告警并提交 offset,避免阻塞后续消息
- DLT 失败等待时间默认限制为 1 秒
- 增加连续性放行、DLT 成功及失败监控指标
- 更新 Docker Compose、v3 升级文档及相关测试
|
2026-09-12 19:24:58 +08:00 |
|
王绍宏
|
0e9e6656db
|
feat(syslog): 优化大日志通道并增加异常连续消费兜底
- 128 KiB 及以上日志默认进入大日志 Topic
- InfluxDB 原文及达梦大字段超过 256 KiB 时截断保存
- 截断内容追加 HB_XDR_TRUNCATED 标记
- InfluxDB 写入失败时继续执行规则解析和达梦写入
- 未知或系统性异常优先写入普通/大日志 DLT
- DLT 写入失败时记录特殊告警并提交 offset,避免阻塞后续消息
- DLT 失败等待时间默认限制为 1 秒
- 增加连续性放行、DLT 成功及失败监控指标
- 更新 Docker Compose、v3 升级文档及相关测试
|
2026-09-12 19:22:52 +08:00 |
|
王绍宏
|
3b6c9e4714
|
fix(syslog-consumer-rule): 修复现场日志解析并补充升级工具
- 支持设备头字段值包含空格,避免 WAF 等名称被误拆为无效键值对
- 将空字符串 cropper offset 按未配置处理,兼容历史标准化规则
- 增加设备头解析和空 offset 回归测试
- 增加统计物化 Topic 创建脚本
- 增加容器内 JAR 热替换脚本及操作说明
|
2026-09-12 11:40:57 +08:00 |
|
王绍宏
|
c1472b9a95
|
fix(syslog-consumer-rule): 解耦统计物化并解决多实例达梦死锁
- 将设备、规则和采集任务业务统计改为专用 Kafka Topic 异步物化
- 使用维度 ID 作为 Kafka key,保证同一统计维度串行更新
- 物化过程读取小型统计表精确值,确保重复消费不会重复计数
- 增加提交后发布、失败重试及定时小表对账补偿
- 固定日统计聚合键写入顺序,完善达梦死锁识别和事务重试
- JSON 解析失败直接转为非标日志,避免进入 DLT 重试链路
- 非标日志使用独立异步队列,不再阻塞正常消息 Kafka ACK
- Kafka 升级脚本新增 STATS.MATERIALIZE Topic
- 增加统计物化状态指标、配置示例及单元测试
|
2026-09-11 20:42:22 +08:00 |
|
王绍宏
|
ce473b2c7d
|
perf(syslog-consumer-rule): 非标日志改为单线程异步批量写入
- 非标写库结果不再参与 Kafka ACK
- 使用独立单线程和有界队列处理非标日志
- 非标数据按固定大小分批写入达梦
- 增加异步成功、失败和队列拒绝指标
- 补充异步解耦及批量写入测试
perf(syslog-consumer-rule): 按批次字段并集优化达梦批量写入
- 普通日志和告警日志按非空字段并集生成批写模板
- 为同批记录补齐缺失字段并绑定 NULL
- 使用 MyBatis ExecutorType.BATCH 复用 PreparedStatement
- 避免固定写入全部 373 个候选字段
- 非标日志保留固定 24 列多行批量写入
- 批量大小和非标队列容量默认调整为 500
- 补充字段并集与动态 SQL 一致性测试
|
2026-09-11 15:44:48 +08:00 |
|
王绍宏
|
00c0a1fb7f
|
feat: 新增设备 API 拉取采集及配套处理能力
- 接入 NDRServer 告警和流量日志,支持凭据与任务管理
- 支持分页拉取、窗口拆分、调度优先级及 WAL 持久化后推进断点
- 增加迟到告警规则重放,优化多条泛化规则选择和事件时间处理
- 补充回归测试、数据库升级脚本及部署文档
|
2026-09-06 16:46:21 +08:00 |
|
王绍宏
|
f53661931f
|
feat(upgrade): 增加 升级脚本和部署说明
- 新增达梦数据库结构、幂等索引、统计基线及校验脚本
- 新增 Docker Kafka Retry、DLT、Replay Topic 升级脚本
- 更新生产 Compose,启用 DIRECT 并关闭旧增量捕获和投影
- 补充数据库、Kafka、应用启动及验证说明
- 增加日志和本地生成文件忽略规则
|
2026-08-24 15:09:36 +08:00 |
|