web-dev-qa-db-ja.com

rsyslogからsyslog-ngへの転送TCP機能していません(パケットはサーバーに到達していますが)

中央のsyslogサーバーでsyslog-ngを使用します(CentOS 5.9ではsyslog-ng-2.1.4-9.el5)。 LinuxとSolarisの混合ホストからUDPを介してsyslogdとrsyslogを使用してログを送信していましたが、昨日、かなりの数のエントリが失われていることがようやく明らかになりました(はい、すべての警告に注意する必要がありました)。

TCPを使用するように変更しようとしています。私は(現時点では)中央のsyslog-ngと送信者のrsyslogに固執することに熱心であり、これが機能するはずだと理解しています。中央のsyslogサーバーには、ログのセットを機能ごとにセグメント化するために使用される複数の仮想インターフェイスがあります(これが、udp()およびtcp()ステートメントがバインドするIPアドレスを指定する理由です)。

TCP syslog-ng側のリスナー(以下の構成ファイルからの抜粋を参照)を有効にしました)-netstat -lは、ポート514のリスナーを表示します。テストとして、1つのホスト(CentOS)の転送句を変更しました。 6.4 with rsyslog-5.8.10-6.el6.x86_64)@unixlogから@@ unixlog。中央サーバーに到着したパケットと戻ってきたパケット(unixlogのtcpdumpを参照)が表示されるので、問題を解消したと思います。 iptablesを使用すると、出力ファイルに何も表示されません。これを確認するために、しばらくの間iptablesをオフにしてみました。同じことです。

これはビジーサーバーであるため、syslog-ngのデバッグをオンにしようとはしていません。次のステップは、テストsyslog-ngサーバーをセットアップし、単一のホストをそのサーバーに向けることです。私がそれをする前に、私が見なければならない他の何かがありますか?転送されるメッセージの形式を変更する必要がありますか? Syslog-ng 2.xのドキュメントを読んだところ、これは変更なしで機能するはずです。 rsyslogが呼び出される互換性レベルオプションを変更してみました。最初は5に設定されていましたが、0 .. 4を試し、パラメーターを完全に削除しました。動作に違いはありません。

送信者のRsyslog.conf(コメントとローカルファイルは削除されています)…

$ModLoad imuxsock
$ModLoad imklog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
*.err;kern.debug;daemon.notice;mail.crit                @unixlog.ncl.ac.uk
local3.debug                                            @cmdloghost.ncl.ac.uk

Unixlogのrsyslog.confから抽出します

options {
  long_hostnames(off);
  sync(0);
  create_dirs(yes);
};

destination d_syslog {
  file("/var/log/incoming/syslogs/$Host/syslog.$YEAR$MONTH$DAY.log");
};

# unixlog is 10.8.232.202
source unixlog_net { udp(ip(10.8.232.202)); tcp(ip(10.8.232.202)); };

log {
  source(unixlog_net);
  destination(d_syslog);
};
2
Paul Haldane

問題はtcpwrappersでした。これは、テストsyslog-ngインスタンスをセットアップし、デバッグ出力をオンにして実行すると明らかでした。次の句を/etc/hosts.allowに追加すると、うまくいきました

syslog-ng: 10.0.0.0/255.0.0.0

また、syslog-ngの内部メッセージを処理しなかったことにも気づきました(問題が何であるかを教えてくれた可能性があります)。これを行うために次の行を追加しました...

# Deal with syslog-ng's own messages
source s_internal { internal(); };
destination d_internal {file("/var/log/syslog-ng.log"); };
log { source(s_internal); destination(d_internal); };
3
Paul Haldane