一、说明
syslog是Linux自带安装的日志收集工具,分为服务端和客户端,可以将日志集中的收到到一台机器上,支持UDP和TCP协议
二、配置服务端
1. 配置
vi /etc/rsyslog.conf
# rsyslog configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
# The imjournal module bellow is now used as a message source instead of imuxsoc k.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger c ommand)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark # provides --MARK-- message capability
# Provides UDP syslog reception 这两行打开通过 udp 514 端口 来接收日志服务 udp和tcp 可以同时监听同一个端口
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception 这两行打开通过 tcp 514 端口 来接收日志服务 udp和tcp 可以同时监听同一个端口
$ModLoad imtcp
$InputTCPServerRun 514
......
#### GLOBAL DIRECTIVES #### 定义日志模板
# 该模板名称为 RemoteLogs 存放目录为 /data/log/日志来源主机名/日志来源进程.log"
$template RemoteLogs,"/data/log/%HOSTNAME%/%PROGRAMNAME%.log" *
# 该模板名称为 ipTemp 存放目录为 /data/log/日志来源IP/日志来源进程.log"
$template ipTemp,"/data/log/%FROMHOST-IP%/%PROGRAMNAME%.log" *
# 所有日志都采用ipTemp 模板
*.* ?ipTemp
#"& ~"表示了一个重定向规则,用来告知rsyslog守护进程停止对日志消息的进一步处理,并且不要在本地写入。如果没有使用该重规则,那么所有的远程消息都会在写入上述描述的日志文件之外同时被写入到本地日志文件,这就意味着日志消息实际上被写了两次。使用该规则的另外一个结果就是syslog服务器本身的日志消息只会被以该机器主机名命名的专有文件中。
& ~
# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog
mkdir /data/log
2. 重启服务
systemctl restart rsyslog
三、客户端测试
vi + /etc/rsyslog.conf
底部追加
*.* @@[服务端IP]:514
**参考文章:**https://blog.csdn.net/zhangxm_qz/article/details/122116341