欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

rsyslog输出自定义格式日志

程序员文章站 2024-03-26 11:23:59
...

一.安装

yum install -y rsyslog

二.发送端LOG的机器配置

记录到本地文件

$template rsys_alert,"iCatch|%PRI%|%timereported:::date-rfc3339%|%msg%\n"
local1.*                                                /var/log/alert.log;rsys_alert

日志转发规则-全部转发

#$WorkDirectory /var/spppl/rsyslog # where to place spool files
#$ActionQueueFileName fwdRule1   #unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on   #save messages to disk on shutdown
#$ActionQueueType LinkedList     #run asynchronously
#$ActionResumeRetryCount -1      #infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.*    @@remote-host:514        #@@表示通过tcp协议发送 @表示通过udp进行转发
#local1.info @@localhost :514
#local1.*                        #@@192.168.56.7:514

日志转发规则-指定文件转发

#定义从指定的设备文件中读取日志
$AddUnixListenSocket /var/log/alert.log
#使用一个已定义的模板(rsys_alert);
$ActionFileDefaultTemplate rsys_alert
 
#摘取$msg(消息)变量内容,判断如果有keyboard就进行远程传送,没有的就不传送;
if $msg contains "keyboard"  then
action()
#这里不用判断都发送
action(type="omfwd" Target="172.18.20.60"\
       Port="8594"\
       Protocol="udp"\
       queue.type="LinkedList"\
       queue.spoolDirectory="/var/spool/rsyslog"\
       queue.filename="test2"\
       queue.size="100000"\
       queue.maxdiskspace="2g"\
       queue.highwatermark="60000"\
       queue.lowwatermark="2000"\
       queue.discardmark="80000"\
       queue.timeoutenqueue="3000"\
       queue.maxfilesize="200m"\
       queue.dequeuebatchsize="1000"\
       )
& stop

最后重启下发送端主机的firewalld服务

systemctl restart firewalld


三.接收LOG机器配置

配置启用udp.tcp协议,监听514端口

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

接收日志的存放目录和文件命名规则

#将所有从远程客户端接受到的消息写入指定目录下以它们的IP地址命名和日期命名的的文件中
$template RemoteLogs,"/var/log/devicelog/%$YEAR%-%$MONTH%/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
*.* ?RemoteLogs
& ~

修改配置之后重启机器

systemctl stop rsyslog.service && systemctl start rsyslog.service && systemctl status rsyslog.service

参考

http://www.rsyslog.com

https://www.rsyslog.com/doc/v8-stable/configuration/templates.html

https://www.linuxprobe.com/linux-rsyslog-system.html