システムログの情報を別のファイルにリダイレクトする

システムログの情報を別のファイルにリダイレクトする

Ubuntu 18.04.3システムに着信したすべてのTCP接続を記録したいと思います。これはうまく機能し、紹介として問題ではありません。私はcrontabで次のコマンドを使用します。

@reboot /sbin/iptables -I INPUT -p tcp --syn -j LOG --log-prefix='[tcpconnections] '

(これはあまり良いアプローチではないことを知っていますが、セキュリティ上の問題ではないので、この単純なアプローチに満足しています。繰り返しますが、それは問題ではありません。)

もちろん、これによりシステムログに多数のログ行が生成されます。したがって、情報を別のログファイルに再ルーティングしたいと思います。

/var/log/tcpconnections.log

新しいファイルを作成して、ログ情報をこの別々のファイルに入れることができました。

/etc/rsyslog.d/tcpconnections.conf

内容がある

if $msg contains "[tcpconnections]" then {
        /var/log/tcpconnections.log
        stop
}

その後、rsyslogサービスおよび/またはシステム全体を再起動します。

ただし、ログエントリはシステムログと別々のログファイルの両方に表示されます。 私が知っている限り、「停止」はこれが起こらないようにする必要があります。

私が試したことも成功しませんでした。

〜停止するのではなく、使用されなくなったことがわかりました。

:msg,contains,"[tcpconnections] " /var/log/tcpconnections.log
   & ~

上記とそのトピックについてGoogleで検索できるすべてのアイテムのほぼすべての組み合わせです。

私のエラーがどこにあるのか知っている人はいますか?これにご協力いただきありがとうございます。みんなありがとうございます。

答え1

私も同じ問題があり、注文を処理するのを忘れました。/etc/rsyslog.d/00_tcpconnections.confにするには、ファイル名を次のように指定する必要があります/etc/rsyslog.d/。以下はocragentスクリプトの例です。

# copy to /etc/rsyslog.d/00_ocragent.conf
if ( $programname == "ocragent" ) then {
    action(type="omfile" file="/var/log/ocragent.log" flushOnTXEnd="on")
    stop
}

関連情報