Linux | rsyslog收集网络日志示例

Apr 16, 2025

服务端

#安装
apt-get install rsyslog

配置 rsyslog 接收网络日志

vim /etc/rsyslog.conf

找到以下行,并取消注释或添加

module(load="imudp")
input(type="imudp" port="514")

module(load="imtcp")
input(type="imtcp" port="514")

配置日志文件存储规则,指定如何处理接收到的日志,添加以下行到 /etc/rsyslog.conf 末尾。

# 提供一个模板以指定日志存储的格式和位置
template(name="RemoteLog" type="string" string="/var/log/%HOSTNAME%/%PROGRAMNAME%.log")
#或者使用ip
template(name="RemoteLog" type="string" string="/var/log/%fromhost-ip%/%PROGRAMNAME%.log")
# 使用模板处理所有远程日志
if $fromhost-ip != '127.0.0.1' then -?RemoteLog
& stop

重启 rsyslog 服务

systemctl restart rsyslog

测试,在其他机器上执行命令

logger -n your-syslog-server-ip -P 514 -T -i "Test message"

客户端

修改 rsyslog 配置以转发日志

vim /etc/rsyslog.conf

配置转发规则,确保以下模块加载行是启用的

module(load="imuxsock")  # provides support for local system logging
module(load="imklog")    # provides kernel logging support

添加转发规则来指定远程 Syslog 服务器的地址

# 将 /var/log 下的所有日志级别和设施的消息转发到指定的远程 Syslog 服务器
*.* @@remote-syslog-server-ip:514;RSYSLOG_SyslogProtocol23Format
  • *.* 表示所有的日志级别和设施
    • 第一个星号代表所有的日志设施(如 auth, cron, daemon, kern, mail 等)
    • 第二个星号代表所有的优先级(如 emerg, alert, crit, err, warning, notice, info, debug
  • @@ 表示使用 TCP 协议发送(如果只想用 UDP,使用单个 @
  • remote-syslog-server-ip 是你的 Syslog 服务器的 IP 地址
  • 514Syslog 服务监听的端口
  • RSYSLOG_SyslogProtocol23Format 是使用的日志格式

所有这些规则都应该被添加到 /etc/rsyslog.conf 或分散在 /etc/rsyslog.d/ 目录下的文件中。

重启 rsyslog 服务

systemctl restart rsyslog

测试,在客户端上测试

logger "This is a test message from the client machine"
https://inasa.dev/posts/rss.xml