Rsyslog重启后无法处理pihole.log,提示远程服务器不可达但连接已建立
解决方案:rsyslog重启后PiHole日志无法转发至SIEM的问题
问题根源分析
系统重启时,rsyslog在网络完全就绪前就启动,导致初始转发连接失败并挂起动作。虽然后续网络恢复、连接重建,但imfile监控的PiHole日志可能因状态文件异常或转发队列配置问题,未被纳入后续转发流程。
修复步骤
1. 让rsyslog等待网络就绪后启动
修改rsyslog服务依赖,避免因网络未就绪导致的初始连接失败:
sudo systemctl edit rsyslog.service
在打开的编辑器中添加以下内容:
[Unit] After=network-online.target Wants=network-online.target
保存退出后,重载服务配置并重启rsyslog:
sudo systemctl daemon-reload && sudo systemctl restart rsyslog
2. 重置PiHole日志的监控状态文件
rsyslog通过状态文件记录已读取的日志位置,若状态文件异常会导致监控失效:
sudo systemctl stop rsyslog sudo rm /var/lib/rsyslog/stat-pihole sudo systemctl start rsyslog
此操作会让rsyslog重新从PiHole日志文件开头开始监控转发。
3. 优化转发配置,增强可靠性
在/etc/rsyslog.conf的转发规则前添加队列配置,确保网络中断时日志不会丢失,恢复后自动补发:
# 添加队列配置(放在转发规则之前) $ActionQueueFileName fwd_siem $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1 #This line is to send the logs to SIEM *.* @@192.168.1.75:514
修改后重启rsyslog生效:
sudo systemctl restart rsyslog
4. 验证基础权限与模块加载
- 检查rsyslog用户对PiHole日志的读取权限:
若文件所属组不包含ls -l /var/log/pihole/pihole.logsyslog,执行以下命令修正:sudo chown :syslog /var/log/pihole/pihole.log sudo chmod g+r /var/log/pihole/pihole.log - 确认imfile模块已加载:
rsyslogd -M | grep imfile
验证效果
完成上述步骤后,可通过以下方式确认修复:
- 查看rsyslog状态,确认无连接错误:
sudo systemctl status rsyslog - 手动触发PiHole日志(如访问被拦截的域名),检查SIEM是否收到对应日志
- 再次重启系统,确认重启后PiHole日志仍能正常转发
内容的提问来源于stack exchange,提问作者bullet
相关产品推荐
相关产品推荐

