syslog-ng を使用してログを特定のディレクトリに送信する方法はありますか?

syslog-ng を使用してログを特定のディレクトリに送信する方法はありますか?

syslog-ng を使用して各アプリケーションのログをリモート コレクターに送信したいと思います。

Apache を使用している場合は、Apache ログをファイル でリモート コレクターに送信したいと思います/var/log/apache.log

これについては何も見つけられませんでした。rsyslog で可能であることは知っていますが、ここでできることは、すべてのログを一緒に送信することだけです。

destination remote { network("<collector_adress>" transport("udp") port(514)); };

答え1

syslog-ng を使用してファイルからログを収集するには、ファイル ソースを作成し、それをログ ステートメントに追加する必要があります。次のようになります。

source s_apache {
    file("/var/log/apache.log");
};
log {
    source(s_apache); destination(remote);
};

他のファイルからもログを収集するには、追加のソースを定義して、それをログ ステートメントに追加します。複数の異なるログ ファイル (たとえば、タイムスタンプ付きのログ ファイル) にログを記録するアプリケーションがある場合は、ワイルドカード ファイル ソースを使用できます。詳細については、ドキュメントを確認してください。https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.21/管理ガイド/16#TOPIC-1180423

答え2

同じアプローチを使用できると思いますSyslog-ng - クライアントからサーバーにファイル名を送信する

syslog-ngのクライアント側設定 -

file("/var/log/shell.log" log_prefix("shell: "));

syslog-ngのサーバー側設定 -

filter f_shell { match("shell" value("MSGHDR")); };

destination d_shell { file("/var/log/syslog-ng/shell.log"); };

log { source(demo_tls_src); filter(f_shell); destination(d_shell); flags(final); };

関連情報