rsyslog异地容灾备份核心是传输不丢、落盘不可改、查询可定位、故障可恢复;通过tcp+tls双向认证、模板化存储、worm策略、nginx直送syslog、哈希校验、归档回溯、权限隔离与审计闭环实现可靠轻量监控。

用 Rsyslog 做异地容灾备份的日志监控,核心不是“把日志发过去”,而是让日志在传输中不丢、落盘后不可改、查的时候能快速定位、出问题时能快速恢复。它比单纯拷文件更可靠,比上 ELK 更轻量,适合中小规模生产环境。
一、Rsyslog 远程接收端:稳收 + 分类 + 防篡改
服务端必须做到三点:持续监听、按源隔离、落盘可控。
- 启用 TCP+TLS 双向认证(禁用纯 UDP),避免中间人劫持或伪造日志
- 用模板按 IP 或主机名自动创建目录和文件,例如:$template RemoteByHost,"/var/log/remote/%FROMHOST-IP%/%$YEAR%-%$MONTH%-%$DAY%.log",避免所有日志挤进一个大文件
- 配合 WORM 存储策略(如对象存储开启合规保留+版本锁定)或本地挂载只读分区,防止误删或覆盖
- 开启 $ActionQueueMaxDiskSpace 和 $ActionQueueSaveOnShutdown,网络抖动时不丢日志
二、Nginx 日志直送 Rsyslog:绕过文件落盘,减少单点风险
不依赖 access.log 文件本身,从源头切断本地磁盘故障影响。
- 修改 Nginx 配置,关闭文件写入,改用 syslog 输出:
access_log syslog:server=192.168.50.12:514,facility=local7,tag=nginx_main; - error_log 同理配置,确保错误流也走同一通道
- 客户端 Rsyslog 需配置 @@(TCP)并启用队列缓存,避免 Nginx 进程因网络延迟阻塞
- 测试时用 logger -t nginx_test "hello" 验证链路通断
三、容灾能力落地:可验证、可切换、可回溯
异地备份不是“传完就完事”,要能证明它真能用。
- 每天定时校验关键日志段的 SHA256 哈希值,对比源端缓冲与远端落盘结果
- 保留最近 7 天的压缩归档(如 nginx_main.2026-06-08.log.gz),配合 logrotate 自动清理
- 准备一份最小化恢复脚本:当主服务器宕机时,能快速把远端日志重定向为本地 access_log 源,支撑临时服务诊断
- 在备份服务器上部署轻量查询工具(如 lnav 或自定义 grep + awk 脚本),不依赖外部平台即可查指定 IP、时间段、状态码
四、权限与审计闭环:谁发的?谁改的?谁看的?
日志本身是审计依据,它的管理过程也得可审计。
- Rsyslog 服务运行用户设为专用账号(如 rsyslog-remote),禁止 shell 登录
- /var/log/remote/ 目录属主设为该用户,权限严格限制为 750,组内仅限运维只读
- 记录 Rsyslog 启动、配置变更、证书更新等操作日志到独立审计日志文件,并同步推送到第三台机器
- 对 TLS 客户端证书做有效期监控(如用 cron + openssl 命令检查),提前 30 天告警续签











