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") # 转发的主机
posted @ 2024-07-12 15:59  little小新  阅读(91)  评论(0编辑  收藏  举报