在v8-stable以上rsyslog.conf中将下述内容转化成新语法 $template NetworkDeviceLog,"/var/log/%fromhost-ip%/%PROGRAMNAME%.log" if $fromhost-ip == '192.168.1.1' and $syslogfacility-text == 'local7' then ?NetworkDeviceLog;RSYSLOG_MYSQL_1 if $fromhost-ip == '192.168.1.2' and $syslogfacility-text == 'local7' then ?NetworkDeviceLog;RSYSLOG_MYSQL_2 $template NetworkDeviceLog,"/var/log/%fromhost-ip%/%PROGRAMNAME%-%$year%-%$month%-%$day%.log"
时间: 2024-03-22 09:43:00 浏览: 136
rsyslog-openssl-8.2102.0-5.el8.aarch64.rpm
在 v8-stable 以上的 rsyslog.conf 中,可以将上述内容转化成新语法,具体如下:
```
template(name="NetworkDeviceLog" type="string" string="/var/log/%fromhost-ip%/%PROGRAMNAME%.log")
if $fromhost-ip == '192.168.1.1' and $syslogfacility-text == 'local7' then {
action(type="omfile" template="NetworkDeviceLog" fileCreateMode="0644" fileOwner="root" fileGroup="root" dirCreateMode="0755" dirOwner="root" dirGroup="root" dirOwnerFromFilename="on" dirGroupFromFilename="on" dirCreateModeFromFilename="on" fileCreateModeFromFilename="on" fileDiscardInterval="10" flushOnTXEnd="on" flushInterval="30" flushOnTXEndTimeout="5000" dirGroup="root" dirGroupFromFilename="on" dirCreateModeFromFilename="on" fileDiscardInterval="10" flushOnTXEnd="on" flushInterval="30" flushOnTXEndTimeout="5000")
action(type="ommysql" server="localhost" serverport="3306" db="RSYSLOG_MYSQL_1" dbuser="root" dbpassword="password" template="RSYSLOG_MYSQL_1" sql="INSERT INTO NetworkDeviceLog (timegenerated, fromhost, programname, message) VALUES (FROM_UNIXTIME(:timegenerated), :fromhost-ip, :programname, :msg)")
}
if $fromhost-ip == '192.168.1.2' and $syslogfacility-text == 'local7' then {
action(type="omfile" template="NetworkDeviceLog" fileCreateMode="0644" fileOwner="root" fileGroup="root" dirCreateMode="0755" dirOwner="root" dirGroup="root" dirOwnerFromFilename="on" dirGroupFromFilename="on" dirCreateModeFromFilename="on" fileCreateModeFromFilename="on" fileDiscardInterval="10" flushOnTXEnd="on" flushInterval="30" flushOnTXEndTimeout="5000" dirGroup="root" dirGroupFromFilename="on" dirCreateModeFromFilename="on" fileDiscardInterval="10" flushOnTXEnd="on" flushInterval="30" flushOnTXEndTimeout="5000")
action(type="ommysql" server="localhost" serverport="3306" db="RSYSLOG_MYSQL_2" dbuser="root" dbpassword="password" template="RSYSLOG_MYSQL_2" sql="INSERT INTO NetworkDeviceLog (timegenerated, fromhost, programname, message) VALUES (FROM_UNIXTIME(:timegenerated), :fromhost-ip, :programname, :msg)")
}
template(name="NetworkDeviceLog" type="string" string="/var/log/%fromhost-ip%/%PROGRAMNAME%-%$year%-%$month%-%$day%.log")
```
上述配置中,我们使用了 template 指令来定义模板,分别命名为 NetworkDeviceLog,并使用 type 和 string 参数来指定模板类型和模板字符串。
然后,我们使用 if 指令来进行条件过滤,根据来源 IP 和 syslog facility 过滤出需要处理的日志,并使用 action 指令将日志保存到指定的文件和 mysql 数据库中的指定库和表中。
在保存日志到文件时,我们使用了 action 指令的 type 参数指定为 omfile,并使用 template 参数来指定使用的模板名称,同时还可以设置文件权限、拥有者、组等信息,以及自动创建目录和文件、自动清理文件等功能。
在保存日志到 mysql 数据库时,我们使用了 action 指令的 type 参数指定为 ommysql,并设置了 mysql 服务器的地址、端口、数据库名称、用户名和密码,以及要执行的 SQL 语句,并使用 template 参数指定了模板名称。
最后,我们再次使用 template 指令来定义模板 NetworkDeviceLog,使用 type 和 string 参数指定模板类型和模板字符串,以实现按日保存日志的功能。
阅读全文