web-dev-qa-db-ja.com

rsyslog-アクションとアクション

facilityからファイル[〜#〜]および[〜#〜]からMySQLにデータを送信するルールを作成したいデータベース。

どうすれば実現できますか?次のような2行目を追加するだけです。

syslog.*                         /var/log/syslog.log
syslog.*                         :ommysql:localhost,database,user,password

または、もっと正しい方法がありますか?

6
setevoy

または、もっと正しい方法がありますか?

私はthinkそれはrsyslog固有の機能である(そしてそれはかもしれない)ので、それがより正しいと見なされるかどうかはわかりません可能な限りsyslog互換の方法で物事を行うには「より正しい」と見なされます...またはそうでない場合もあります)が、アンパサンドがあります。

syslog.*      /var/log/syslog.log
&             :ommysql:localhost,database,user,password

ページで「アンパサンド」を検索すると、文書化されます ここ 。そこでの「レガシー記述」は、「syslog互換」動作ではなく、ルールを作成するために RainerScript と呼ばれるものを実装するrsyslogのレガシー動作を指すと思います。この場合、それが本当に簡単なのか、それとも正しいのかについては、私には言えません。

5
goldilocks

編集:これは、最初に質問で与えられた例で有効でした。それ以来編集されており、TAFKAの「goldilocks」による答えは正しいものです。

あなたはそれを正しくやっています。別のログエントリのセットを選択する場合は、同じように別の行で指定する必要があります。 2つの選択がたまたま同じ機能を持っているという事実は関係ありません。

同じログエントリのセットに対して2つのことを実行したい場合は、代わりにアンパサンド(&)2行目。例えば。 all Syslogメッセージをファイルとデータベースの両方に保存したい場合:

syslog.*      /var/log/syslog.log
&             :ommysql:localhost,database,user,password

フィルタの評価に使用されるCPUの量を減らすため。しかし、ここではそうではないので、あなたの解決策は正しいものです。

4
Jenny D