rsyslog を使用してリモート サーバーにログを送信する

rsyslog を使用してリモート サーバーにログを送信する

Logstash、Elasticsearch、Kibana を使用して集中ログを設定しようとしていますが、ログをログ サーバーに取得する際に問題が発生しています。

Logstash は TCP 5000 でリッスンしており、サーバーの 1 つからログを正常に受信していますが、残りのサーバーからは受信していません。5000 でログ サーバーに telnet でき、Logstash はメッセージを取得しているので、問題はログを送信する rsyslog にあると考えています。

私は CentOS 6.5 を使用しており、/etc/rsyslog.conf に以下を追加しました:

$WorkDirectory /var/lib/rsyslog # where to place spool files
*.* @@logs.<domain_removed>.com:5000

変更後、rsyslog はエラーなしで再起動しましたが、Logstash では何も受信されていません。スプール ディレクトリは空なので、送信エラーはないと思われます。

May 16 20:46:10 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-    pid="5097" x-info="http://www.rsyslog.com"] exiting on signal 15.
May 16 20:46:10 kernel: imklog 5.8.10, log source = /proc/kmsg started.
May 16 20:46:10 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="3556" x-info="http://www.rsyslog.com"] start

エラーを追跡する方法について何かアイデアはありますか?

編集:この問題はSELinuxによって発生しました

答え1

SELinux は、rsyslog がポート 5000 で送信することをブロックしていました。デフォルトでは、SELinux は rsyslog が UDP 514 でトラフィックを送信することをのみ許可します。

SELinux に次の例外を追加しました:

$sudo semanage port -a -t syslogd_port_t -p tcp 5000

関連情報