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
This commit is contained in:
王绍宏
2026-09-15 22:10:46 +08:00
parent 5a86a4f950
commit faa9ffe2d9
19 changed files with 553 additions and 32 deletions
@@ -1,5 +1,6 @@
package com.netty;
import com.haobang.dispatch.DeviceContextResolver;
import com.haobang.wal.SyslogWalService;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
@@ -14,10 +15,15 @@ import java.nio.charset.Charset;
public class SyslogUdpChannelInitializer extends ChannelInitializer<DatagramChannel> {
private final Charset syslogCharset;
private final SyslogWalService walService;
private final DeviceContextResolver deviceResolver;
private final boolean dropInvalidBeforeWal;
SyslogUdpChannelInitializer(Charset syslogCharset, SyslogWalService walService) {
SyslogUdpChannelInitializer(Charset syslogCharset, SyslogWalService walService,
DeviceContextResolver deviceResolver, boolean dropInvalidBeforeWal) {
this.syslogCharset = java.util.Objects.requireNonNull(syslogCharset, "syslogCharset");
this.walService = java.util.Objects.requireNonNull(walService, "walService");
this.deviceResolver = java.util.Objects.requireNonNull(deviceResolver, "deviceResolver");
this.dropInvalidBeforeWal = dropInvalidBeforeWal;
}
@Override
@@ -29,6 +35,7 @@ public class SyslogUdpChannelInitializer extends ChannelInitializer<DatagramChan
pipeline.addLast("encoder", new StringEncoder(syslogCharset));
// 添加业务处理器
pipeline.addLast("handler", new SyslogMessageHandler(syslogCharset, walService));
pipeline.addLast("handler", new SyslogMessageHandler(
syslogCharset, walService, deviceResolver, dropInvalidBeforeWal));
}
}