You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.log
    
    若文件所属组不包含syslog,执行以下命令修正:
    sudo chown :syslog /var/log/pihole/pihole.log
    sudo chmod g+r /var/log/pihole/pihole.log
    
  • 确认imfile模块已加载:
    rsyslogd -M | grep imfile
    

验证效果

完成上述步骤后,可通过以下方式确认修复:

  1. 查看rsyslog状态,确认无连接错误:sudo systemctl status rsyslog
  2. 手动触发PiHole日志(如访问被拦截的域名),检查SIEM是否收到对应日志
  3. 再次重启系统,确认重启后PiHole日志仍能正常转发

内容的提问来源于stack exchange,提问作者bullet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:20:26