远端副本是留存的底线
把日志集中转发到远端服务器,是应对本地日志被清除、磁盘写满或主机被重建的基本手段。生产环境应使用 TCP 传输并启用磁盘队列:链路中断时日志先写入本地队列,恢复后自动补发,关键记录不会因短暂断网而丢失。UDP 没有重传机制,网络一抖就丢包,只适合内网临时排查场景,不适合作为合规留存方案。
基本信息
| 适用平台 | Linux(rsyslog 8.x 及以上) |
|---|---|
| 配置片段 | /etc/rsyslog.d/ 下的独立 .conf 文件 |
| 动作模块 | omfwd(配合 queue.type 与 queue.filename) |
| 默认端口 | 514/tcp 或自定义端口,接收端须放行 |
| 基线 | 关键日志有远端副本且链路可验证 |
典型使用场景
- 合规要求:等保对日志集中存储与留存期有明确条款
- 入侵取证:主机被清理后仍有远端记录可用
- 多机统一检索:在集中平台跨主机排查同一事件
- 容量减负:本地留存期可适度缩短,远端长期保存
- 故障关联:多台主机的日志时间线对齐分析
转发配置与验证
转发配置与验证
# /etc/rsyslog.d/90-forward.conf
# *.* action(type="omfwd" target="10.0.0.10" port="514" protocol="tcp"
# action.resumeRetryCount="-1" queue.type="linkedList" queue.filename="fwdq")
rsyslogd -N1 && sudo systemctl restart rsyslog
ss -tn | grep :514 # 确认与接收端已建立连接
logger -p local0.info "rsyslog-forward-test" # 写入测试日志
# 在接收端确认:
# sudo tail -5 /var/log/messages | grep rsyslog-forward-test配置项读法
| 配置项 | 含义 | 注意点 |
|---|---|---|
| target/port | 接收端地址与端口 | 需与接收侧监听配置一致 |
| protocol | tcp 或 udp | 留存场景应选 tcp |
| queue.type | 队列类型 | linkedList 适合磁盘队列 |
| queue.filename | 队列文件前缀 | 所在目录必须有可写空间 |
| resumeRetryCount | 断线重试次数 | -1 表示持续重试 |
UDP 无重传机制:网络抖动就会丢日志。转发链路与接收端防火墙必须成对验收,只配一端等于没配。
落地要点
- 队列目录要有足够空间,写满后队列失效会开始丢日志
- 接收端未监听时发送端会静默重试:联调先看双方连接状态
- 转发通道建议加密或走专用管理网络,避免日志内容被窃听
- 用一条带特征的测试日志做端到端验证,而不是只看连接建立
- 把接收端的留存期与容量纳入同一套监控
转发成功后本地日志仍要保留:本地用于实时排障,远端用于长期留存与取证,两者的作用不可互相替代。