您的位置:首页 >如何在Linux中配置具体的日志远程同步转发
发布于2026-08-11 阅读(0)
扫一扫,手机访问
大多数情况下,rsyslog 日志发不出去,根子都在这几类问题上:默认没有启用 UDP/TCP 模块,或者被防火墙、SELinux 直接拦住了。更稳妥的做法是,先执行 rsyslogd -N1,确认 imudp、imtcp 是否已经加载;如果没加载,就在配置文件开头补上 module(load="imudp") 和 module(load="imtcp"),同时把对应的 input 规则一并配好。

绝大多数情况是 rsyslog 默认没启用 UDP/TCP 网络模块,或防火墙/SELinux 拦截了连接。确认配置前先检查模块是否加载:
rsyslogd -N1,若报错 imudp 或 imtcp not found,说明对应模块未加载/etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf 开头添加:module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
@@ 前缀),但需确保接收端也监听 TCP不能只靠全局 *.* @@remote:514,否则所有日志混在一起。要用规则匹配 + 模板 + 动作分离:
template(name="RemoteFormat" type="string" string="%protocol-version% %timestamp:::date-rfc3339% %hostname% %app-name% %procid% %msg%n")
if $syslogfacility-text == 'auth' then {
action(type="omfwd" target="192.168.10.20" port="514" protocol="tcp" template="RemoteFormat")
}$syslogfacility-text 是字符串值(如 auth、daemon),不是数字;用 == 比较,不要用 =~ 正则除非必要不能直接转发,systemd-journald 不提供原生网络输出。必须通过 rsyslog 或 syslog-ng 接入:
/etc/rsyslog.conf 中有 $ModLoad imjournal(rsyslog v8+)rsyslog 后,journal 日志会自动注入 rsyslog 流程,再按前述规则转发imjournal 是否启用,以及 /run/systemd/journal/dev-log 权限是否为 srw-rw---- systemd-journal_HOSTNAME 和 SYSLOG_IDENTIFIER 字段会被映射为 rsyslog 的 $hostname 和 $programname,可用于过滤别只盯着 rsyslog 配置,分层验证更省时间:
logger -p auth.info "test msg" 发一条日志,然后 tail -f /var/log/syslog 看是否生成 → 排除应用层问题nc -u -l -p 514(UDP)或 nc -l -p 514(TCP),再发日志看能否收到 → 判断 rsyslog 输出是否生效telnet 192.168.10.20 514(TCP)或 nc -u 192.168.10.20 514(UDP)测端口 → 确认防火墙和路由ss -tuln | grep :514,确认监听的是 0.0.0.0:514 而非 127.0.0.1:514最容易被忽略的是接收端的 bind 地址和 SELinux 的 syslogd_port_t 上下文——哪怕端口开着,SELinux 也可能静默丢包。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9