linux-Rsyslog自定义配置json模板
配置日志接收模板和转发
参考:https://www.cnblogs.com/xwupiaomiao/p/17565418.html
服务端(接收端)
自定义模板配置文件
在主配置文件中添加(rsyslog.conf)
include(file=“/etc/rsyslog.d/*.conf” mode=“optional”)
方案一
在/etc/rsyslog.d/下创建一个配置文件 ct3a1.conf
#日志模板
#type类型有:list,subtree,string,plugin四种、list最常用,string也可以
#string="%jsonmesg% -->接收的日志转为json格式(系统自带)
template(name="tpl_remote" type="string"
string="%jsonmesg%\n"
)
#日志规则设置、规则名(模板名):remote
ruleset(name="remote"){
#action动作:数据处理 -->type定义了处理数据所使用的模块 omfile模块、file=日志写入的文件路径
action(type="omfile" file="/var/log/remote.log" template="tpl_remote") #接收的日志统一存储在/var/log/remote.log \手动创建文件
#type="omfwd":类型转发、将接收的日志(tpl_remote模板)转发到target=主机、port=端口、protocol=协议
action(type="omfwd" target="192.168.1.100" port="10052" protocol="tcp" template="tpl_remote") #转发到主机192.168.1.100
stop #相当于&~:表示到这里就停不往下执行了,在老版本语法里写为“&~”
}
#开启端口监听
# udp 514
module(load="imudp") # needs to be done just once
input(type="imudp" port="514" ruleset="remote" )
# tcp 514
module(load="imtcp" MaxSessions="1000" )
input(type="imtcp" port="514" ruleset="remote" )
# relp 2514 #需要安装组件
module(load="imrelp")
input(type="imrelp" port="2514" ruleset="remote")
方案二:
接收指定ip过来的日志
这个日志模板再本机监听514和2514端口的报文、将接收的信息以json格式保存在/var/log/remote/%FROMHOST-IP%/%YEAR%-%MONTH%-%DAY%/%HOUR%-%MINUTE%.log
#日志类型模板
#数据格式化:template(自定义路径/文件名也是这个)
#type类型有:list,subtree,string,plugin四种、list最常用,string也可以
#string="%jsonmesg% -->接收的日志转为json格式(系统自带)
template(name="tpl_remote" type="string"
string="%jsonmesg%\n"
)
#定义日志路径模板:日志文件保存的路径名、注意 $ 不能少
$template DIRPATH, "/var/log/remote/%$FROMHOST-IP%/%$YEAR%-%$MONTH%-%$DAY%/%$HOUR%-%$MINUTE%.log"
#template前不能有注释
$template RSYSLOG, "/var/log/rsyslog/%$FROMHOST-IP%/%$YEAR%-%$MONTH%-%$DAY%/%$HOUR%-%$MINUTE%.log"
# 定义规则集
ruleset(name="remote") {
# 只接收来自特定IP地址的日志
if ($fromhost-ip == '192.168.1.10') then {
# 接下来的动作只针对匹配的日志
action(
type="omfile"
FileOwner="eapp" #改变日志文件权限属主
FileGroup="eapp" #改变日志文件权限属组
FileCreateMode="0644" # 创建文件时的权限
DirCreateMode="0755" # 创建目录时的权限
dynaFile="DIRPATH" #日志文件路径、使用名为DIRPATH 的模板template
template="tpl_remote"
)
# 如果需要,可以在这里添加其他动作,比如转发日志等
# ...
}
# 如果不匹配,停止处理并丢弃或保存到其它目录
else {
action(
type="omfile"
FileOwner="eapp" #改变日志文件权限属主
FileGroup="eapp" #改变日志文件权限属组
FileCreateMode="0644" # 创建文件时的权限
DirCreateMode="0755" # 创建目录时的权限
dynaFile="RSYSLOG" #日志文件路径、使用名为DIRPATH 的模板template
template="tpl_remote"
)
}
stop
}
#开启端口监听
# udp 514
module(load="imudp") # needs to be done just once
input(type="imudp" port="514" ruleset="remote" )
# tcp 514
module(load="imtcp" MaxSessions="1000" )
input(type="imtcp" port="514" ruleset="remote" )
# relp 2514 #需要安装组件
module(load="imrelp")
input(type="imrelp" port="2514" ruleset="remote")
方案三:
接收全部
template(name="tpl_remote" type="string"
string="%jsonmesg%\n"
)
#日志文件保存的路径名、注意 $ 不能少
$template DIRPATH, "/var/log/remote/%$FROMHOST-IP%/%$YEAR%-%$MONTH%-%$DAY%/%$HOUR%-%$MINUTE%.log"
# 日志规则设置、规则名(模板名):remote
ruleset(name="remote"){
# action动作:数据处理 -->type定义了处理数据所使用的模块 omfile模块
# 使用dynaFile特性来按分钟和日期切割日志文件
action(
type="omfile"
FileOwner="eapp" #改变日志文件权限属主
FileGroup="eapp" #改变日志文件权限属组
FileCreateMode="0644" # 创建文件时的权限
DirCreateMode="0755" # 创建目录时的权限
dynaFile="DIRPATH" #日志文件路径、使用名为DIRPATH 的模板template
template="tpl_remote"
)
# type="omfwd":类型转发、将接收的日志(tpl_remote模板)转发到target=主机、port=端口、protocol=协议
#action(type="omfwd" target="127.0.0.1" port="10052" protocol="tcp" template="tpl_remote") # 转发到三区A网接收程序
stop # 相当于&~:代表抛弃数据不进行下一步处理,在老版本语法里写为“&~”
}
客户端(发送端)
在/etc/rsyslog.d/下创建 clinet.conf配置文件
内容如下:
module(load="imfile" mode="inotify")
module(load="omrelp")
#下面这两行是配置日志文件转发到哪里的,主机搭建了tcp(514) udp(514) relp(2514) 三种接受日志的渠道。因为交换机目前只支持udp(514),tcp(514)虽然可靠,但是官方说relp(2514)更可靠,不会丢失日志
*.* :omrelp:127.0.0.1:2514 #如不必要可注释
ruleset(name="forward_yxgk"){
action(type="omrelp" target="192.168.1.100" port="2514")
stop
}
# 审计日志
input(type="imfile"
File="/var/log/audit/audit.log"
Tag="audit"
Ruleset="forward_yxgk") # 转发的主机、对应上面的ruleset(name="forward_yxgk")
# 示例关键日志文件1,可以多次配置
input(type="imfile" #不可修改
File="/root/analog/logs/*" #填写关键日志文件绝对路径
Tag="testp1" #填写日志的标签,随意,尽量具有一定意义.
Severity="error"
Ruleset="forward_yxgk") # 转发的主机