搭建中心服务端
1,编辑文件/etc/rsyslog.conf,找到以下内容,将前面的#注释符合去除
#$ModLoad imtcp
#$InputTCPServerRun 514
2,在/etc/rsyslog.conf文件中GLOBAL DIRECTIVE块前增加如下内容
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *
*.info,mail.none,authpriv.none,cron.none ?RemoteLogs
& ~
说明:
$template RemoteLogs(这里“RemoteLogs” 字符串可以为任何其他的描述性的名称)指令使rsyslog后台进程将日志消息写到/var/log下的单独的本地日志文件中,其中日志文件的名称是基于远程日志发送机器的主机名以及生成该日志的应用程序名进行定义的。其中第二行暗示了我们将RemoteLogs模板应用到所有接收到的日志上。
符号"&
第二行表示将所有系统进程中除开mail、用户验证和cron消息之外的进程产生的消息级别的日志指定为RemoteLogs模板:
~"表示了一个重定向规则,被用来告知rsyslog守护进程停止对日志消息的进一步处理,并且不要在本地写入。如果没有使用该重定向规则,那么所有的远程消息都会在写入上述描述的日志文件之外同时被写入到本地日志文件,这就意味着日志消息实际上被写了两次。使用该规则的另外一个结果就是syslog服务器本身的日志消息只会被以该机器主机名命名的专有文件中
如果我们想要将所有从远程客户端接受到的消息写入到一个以它们的IP地址命名的单个文件中,可以使用以下的模板
$template RemoteLogs,"/var/log/%FROMHOST-IP%.log"
*.* ?RemoteLogs
& ~
3,编辑保存后,重启服务
systemctl restart rsyslog
验证守护进程是否工作:netstat -tulpn | grep rsyslog
///////////////////////////////////////////////////////////////////
搭建客户端,主要用于用于发送指定日志文件
1,编辑文件/etc/rsyslog.conf,在底部增加以下内容
module(load="imfile" PollingInterval="5")
input(type="imfile"
File="/var/log/esage-audit.log"
Tag="esage-audit"
Severity="info"
Facility="local7")
input(type="imfile"
File="/var/log/esage-alarm.log"
Tag="esage-alarm"
Severity="info"
Facility="local7")
local7.* @@192.168.2.130:514
说明:module中加载imfile模块,input中file指定文件名称,tag定义的是在远程syslog服务端中的将显示日志名称,Severity定义的日志级别(暂时没看出定义其他的有何区别,默认info即可,Facility:local0 - local7表示用户自定义的消息,我这里采用local7);最下面一行配置表示将何种日志发送到配置的远程syslog服务端,514是默认syslog端口
2,编辑保存后,重启服务
systemctl restart rsyslog
接下来可以往指定的日志中写入一些内容,在syslog服务器的/var/log下面可以找到对应的服务器目录,里面可以看到发送过去的日志信息
如下,就是我这边测试server上接收到的客户端发送过来的日志文件
[root@syslogserver log]# ls crh_node/
cloud-eka.log esage-alarm.log esage-audit.log rsyslogd.log systemd.log