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/administration-guide/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); };