
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); };