2

我想设置一个 rsyslog 来登录数据库。程序名称将具有特定的结构:

某事。{主机名}.{dbname}.{table}

有没有机会将其拆分为我以后可以使用的变量?我的意思是我在指定 INSERT 时需要知道表名。

所以我的问题是我该怎么做?这就是我到目前为止所拥有的:):

# Only if we sent the log
if ($syslogfacility-text == 'local7' and $programname startswith 'something.') then {
    #############
    # Templates #
    #############

    # I need something like this but with variables
    # $template gw1,"insert into gateway (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (\'%msg%\', %syslogfacility%, \'%HOSTNAME%\', %syslogpriority%, \'%timereported:::date-mysql%\', \'%timegenerated:::date-mysql%\', %iut%, \'%syslogtag%\')",SQL

    # *.* :ommysql:127.0.0.1,Syslog,rsyslog,passwordhere;gw1
}

另一个问题是,如果完成了上述操作,那么如何将 $msg 拆分为动态 SQL?我的意思是,如果我不想在 SQL 脚本中指定列名,只需指定值。不同日志中的值的数量可能不同。

谢谢您的帮助!

4

0 回答 0