您的位置:首页 >如何在Linux中配置日志远程发送
发布于2026-08-11 阅读(0)
扫一扫,手机访问
把 rsyslog 的远程日志配好,关键就盯住这四个要点:客户端这边,@ 代表 UDP,@@ 代表 TCP,千万别混;服务端则要把对应模块加载上、监听好端口、把模板定义清楚,并且后面紧跟 &~;另外,生产环境里磁盘队列一定要启用,不然最麻烦的不是报错,而是日志悄无声息地丢掉。

rsyslog 默认不发远程日志,配错一个符号、漏加一个模块、少写一个 &~,日志就卡在本地不动——不是没生效,是静默失败。
客户端配置里 @ 表示 UDP,@@ 表示 TCP,语法硬性,不能多写、少写、混用。
*.* @192.168.1.100:514:走 UDP,轻量但无确认,适合内网短距;防火墙必须放行 514/udp*.* @@192.168.1.100:514:走 TCP,有连接、重传、队列缓存,生产环境唯一推荐;服务端必须加载 imtcp 模块并监听 514/tcpimudp 却收到 @@ 请求,日志直接丢弃——ss -tlnp | grep :514 看不到监听,tcpdump -i any port 514 也抓不到包只写 input(type="imtcp" port="514") 不够,四个要素必须全齐,否则日志要么不进、要么重复落盘。
module(load="imtcp")(TCP)或 module(load="imudp")(UDP),放在 /etc/rsyslog.conf 开头或 /etc/rsyslog.d/*.conf 文件里input(type="imtcp" port="514"),注意不要写成 port="514/tcp" —— rsyslogd -N1 会报错*.* ?RemoteLogs,模板名大小写敏感,?remotelogs ≠ ?RemoteLogs&~ 必须紧跟在 ?RemoteLogs 后面,中间不能换行、不能空格,否则日志既写进远程目录,又继续落到 /var/log/messagesTCP 可靠,但 rsyslog 默认不启用磁盘队列。没配 $ActionQueue 参数,服务端宕机或网络抖动时,日志照样丢。
$ActionQueueFileName fwdRule1$ActionQueueMaxDiskSpace 1g$ActionQueueSa veOnShutdown on/etc/rsyslog.d/50-remote.conf 里不能把队列写在文件末尾、规则写在开头rsyslogd -N1 输出里要有 omfwd 和 action queue 字样;systemctl status rsyslog 里不能有 queue full 或 disk full 报错日志没到服务端,90% 是卡在这三处之一,每步都有对应验证命令,别靠猜。
tcpdump -i any port 514 -c 3,看到 UDP 包或 TCP SYN 就说明 rsyslog 已触发;没包就回头查 rsyslogd -N1 和模块加载nc -zv 192.168.1.100 514 测 TCP,nc -u -zv 192.168.1.100 514 测 UDP(部分 nc 版本不支持 -u,换 echo test | socat - udp:192.168.1.100:514)ss -tuln | grep :514,看输出里有没有 0.0.0.0:514 或 [::]:514;只有 127.0.0.1:514 说明只监听本地回环,收不到外网日志真正棘手的,从来都不是多写那几行配置,而是后面这一连串细活:每一台客户端,都得单独核对队列到底有没有生效;每一台服务端,也都要确认 imtcp 模块的加载顺序是否正确,以及 &~ 有没有紧贴在模板调用后面。只要其中任何一环漏掉,日志基本就会卡在传输中途。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9