
私は を初めて使用しておりsyslog-ng
、 を設定しています。ここでは、 、および のログを受信しています。 とのsyslog-ng
ログを取得できましたが、ログを別のファイルに書き込むことができず、と の両方のログ ファイルに書き込まれています。 サーバーの構成ファイルは次のとおりです。syslog
auth.log
dpkg.log
syslog
auth.log
dpkg
dpkg
syslog
options {
create_dirs(yes);
owner(root);
group(root);
perm(0640);
dir_owner(root);
dir_group(root);
dir_perm(0750);
};
source s_dl {
network (
transport("tcp")
port(3993)
);
};
filter f_dpkg{
tags("dpkg");
};
destination d_host-specific {
file("/var/log/servers/$HOST/$YEAR/$MONTH/$HOST-$YEAR-$MONTH-$DAY.log");
};
destination d_syslog {
file("/var/log/servers/$HOST/$YEAR/$MONTH/$HOST-$YEAR-$MONTH-$DAY-syslog.log");
};
destination d_dpkg {
file("/var/log/servers/$HOST/$YEAR/$MONTH/$HOST-$YEAR-$MONTH-$DAY-dpkg.log");
};
log {
source(s_dl);
filter(f_auth);
destination(d_host-specific);
};
log {
source(s_dl);
filter(f_syslog3);
destination(d_syslog);
};
log{
source(s_dl);
filter(f_dpkg);
destination(d_dpkg);
};
syslog-ng クライアントの設定ファイルは次のとおりです。
source s_dpkg {
file('/var/log/dpkg.log'); tags('dpkg'));
};
destination d_net { tcp("192.168.48.15" port(3993)); };
filter f_tag { tags("dpkg"); };
log { source(s_src); filter(f_auth); destination(d_net);};
log { source(s_src); filter(f_syslog3); destination(d_net);};
log { source(s_dpkg); filter(f_test); destination(d_net);};
どなたか、私の間違いがどこにあるか、または詳細を取得する適切な方法は何か、教えていただけませんか。注: 同じマシンから異なるログを受け入れるために新しいポートを追加し続けることはできないため、単一のホストのすべてのログを受け入れるために同じポートを使用する必要があります。
答え1
問題は、クライアントが dpkg メッセージに追加するタグがサーバー側に転送されないことです (元のメッセージの一部ではないため)。
また、元の dpkg ログでは syslog メッセージの PROGRAM フィールドが埋められないため、このタグ付け全体が必要であるように思われます。したがって、私見では、この問題を解決する最も簡単な方法は次のとおりです。
- クライアント上のソースs_dpkgでprogram-override("dpkg")オプションを使用します(syslog-ng-ose の最新ガイド)を使用して、dpkgメッセージのPROGRAMフィールドを適切に設定します。
- サーバーでは、タグ フィルターの代わりにプログラム ("dpkg") フィルターを使用します。
HTH