データベースにログインするために rsyslog を設定したいと思います。プログラム名には特定の構造があります。
something.{ホスト名}.{dbname}.{テーブル}
これを後で使用できる変数に分割する機会はありますか? つまり、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
}
もう 1 つの質問は、上記が完了した場合、どうすれば $msg を動的 SQL に分割できるかということです。つまり、SQL スクリプトで列名を指定したくない場合は、値のみを指定します。値の数は、ログによって異なる場合があります。
ご協力ありがとうございました!