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
参考
https://www.rsyslog.com/doc/v8-stable/configuration/templates.html
下一篇: 基于AOP的日志输出自定义注解