1c07acc01d
一、增加现场原始日志采集功能
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参数调整。
46 lines
1.2 KiB
Markdown
46 lines
1.2 KiB
Markdown
# 查询 Kafka 当前积压
|
||
|
||
在 Kafka 的 `bin` 目录执行。查询操作只读,不会修改消息或消费组 offset。
|
||
|
||
## 查询主日志消费积压
|
||
|
||
```bash
|
||
./kafka-consumer-groups.sh \
|
||
--bootstrap-server 10.141.121.35:9092 \
|
||
--group agent-01-syslog-group-dm \
|
||
--describe
|
||
```
|
||
|
||
如果现场主消费组仍使用旧名称,将组名改为 `agent-01-syslog-group`。
|
||
|
||
## 查询所有消费组的总积压
|
||
|
||
```bash
|
||
./kafka-consumer-groups.sh \
|
||
--bootstrap-server 10.141.121.35:9092 \
|
||
--all-groups \
|
||
--describe \
|
||
| awk '$6 ~ /^[0-9]+$/ {lag[$1]+=$6} END {for (g in lag) print lag[g], g}' \
|
||
| sort -nr
|
||
```
|
||
|
||
输出第一列是总积压条数,第二列是消费组名称,积压最多的排在最前面。
|
||
|
||
需要查看某个消费组各分区的明细时执行:
|
||
|
||
```bash
|
||
./kafka-consumer-groups.sh \
|
||
--bootstrap-server 10.141.121.35:9092 \
|
||
--group 消费组名称 \
|
||
--describe
|
||
```
|
||
|
||
重点查看:
|
||
|
||
- `CURRENT-OFFSET`:已经消费并提交的位置;
|
||
- `LOG-END-OFFSET`:Kafka 当前最新位置;
|
||
- `LAG`:该分区积压条数。
|
||
|
||
间隔一分钟查询两次:`LAG` 下降表示正在追赶;`LAG` 上升表示消费速度低于数据进入速度;
|
||
`CURRENT-OFFSET` 不变且 `LAG` 大于零,表示消费没有进展。
|