游乐游手机版
首页/系统平台/文章详情

Linux中配置日志远程发送的方法与步骤

时间:2026-08-15 06:51
想把 rsyslog 远程日志发送配置正确,核心要抓住四个关键点:客户端配置中,@ 表示 UDP,@@ 表示 TCP,两者必须严格区分,不能写错;服务端则要正确加载对应模块、开启端口监听、定义并调用模板,而且后面必须紧跟 &~;此外,在生产环境中一定要启用磁盘队列,否则最危险的不是配置报错,而是日志

想把 rsyslog 远程日志发送配置正确,核心要抓住四个关键点:客户端配置中,@ 表示 UDP,@@ 表示 TCP,两者必须严格区分,不能写错;服务端则要正确加载对应模块、开启端口监听、定义并调用模板,而且后面必须紧跟 &~;此外,在生产环境中一定要启用磁盘队列,否则最危险的不是配置报错,而是日志在无提示的情况下悄悄丢失。

如何在Linux中配置日志远程发送

rsyslog 默认不会主动发送远程日志,只要配置时写错一个符号、少加载一个模块,或者漏掉一个 &~,日志就会停留在本地不再转发——表面看似正常,实际上属于静默失败。

@ 和 @@ 必须严格区分,写错协议等于远程日志配置无效

在客户端 rsyslog 配置中,@ 代表 UDP,@@ 代表 TCP,这是固定语法,不能多写、少写,也不能混着用。

  • *.* @192.168.1.100:514:使用 UDP 发送日志,开销小但没有确认机制,适合内网短距离传输;同时防火墙必须放行 514/udp
  • *.* @@192.168.1.100:514:使用 TCP 转发日志,具备连接、重传和队列缓存能力,更适合生产环境,也是实际部署中更推荐的方式;服务端必须加载 imtcp 模块并监听 514/tcp
  • 如果服务端只启用了 imudp,却接收到了 @@ 的 TCP 转发请求,日志会被直接丢弃——此时用 ss -tlnp | grep :514 看不到 TCP 监听,用 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/messages,造成重复记录

生产环境必须启用磁盘队列,否则网络中断就可能丢失日志

虽然 TCP 本身更可靠,但 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,说明 rsyslog 仅监听本地回环地址,无法接收外部主机发来的日志

真正难处理的,往往不是多写几行 rsyslog 配置,而是后续这些容易被忽视的检查细节:每一台客户端,都要逐一确认磁盘队列是否真的生效;每一台日志服务端,也都要核实 imtcp 模块的加载顺序是否正确,以及 &~ 是否紧贴在模板调用之后。只要其中任意一个环节遗漏,Linux 远程日志传输就很容易中途卡住,最终导致日志收集失败。

来源:https://www.php.cn/faq/2962588.html
上一篇Mac版OneDrive同步发热严重怎么解决与降温优化 下一篇Linux如何查看哪些进程磁盘读写最多
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
VMware安装Ubuntu完整教程:创建虚拟机与启动验证
系统平台 · 2026-09-01

VMware安装Ubuntu完整教程:创建虚拟机与启动验证

本教程详细演示如何在VMware中创建Ubuntu虚拟机,涵盖ISO挂载、硬件配置、安装向导及启动验证。通过清晰的步骤与验证命令,帮助新手快速搭建可用的Linux学习环境。

Win10专业版U盘安装教程:制作启动盘与完整安装步骤
系统平台 · 2026-09-01

Win10专业版U盘安装教程:制作启动盘与完整安装步骤

本文提供Win10专业版U盘安装完整流程:准备8GB以上U盘与官方镜像,制作启动盘并核对盘符;通过F12 F11 Esc等快捷键或BIOS设置U盘为第一启动项;安装时选择专业版并谨慎分区;完成后在“设置—系统—关于”验证版本与激活状态。操作前务必备份数据。

Windows10系统字体太小怎么调大
系统平台 · 2026-08-27

Windows10系统字体太小怎么调大

Windows10系统字体太小怎么调大?只需两步:首先打开设置中的显示选项,将缩放比例调整为125%或150%;随后运行ClearType文本调谐器优化字体清晰度。此方法适用于高分屏及普通屏幕,无需修改注册表即可解决界面拥挤问题。

Win10磁盘占用100%基础排查:从监控到清理的完整步骤
系统平台 · 2026-08-27

Win10磁盘占用100%基础排查:从监控到清理的完整步骤

Windows 10系统出现磁盘占用100%会导致电脑卡顿、程序响应缓慢。本文提供基础排查方案:首先通过任务管理器确认是否为磁盘高负载,随后进入系统存储页面分析C盘占用类别,最后针对性清理临时文件。遵循此流程可有效缓解磁盘压力,避免盲目重装系统。

Windows10系统怎么显示此电脑和控制面板
系统平台 · 2026-08-27

Windows10系统怎么显示此电脑和控制面板

Windows10默认可能不显示桌面图标,导致找不到“此电脑”和“控制面板”。只需进入个性化设置,在“桌面图标设置”中勾选对应选项即可恢复。本文提供详细图文步骤,帮助快速找回系统入口。