Senden von Protokollen an Remote-Server mit rsyslog

Senden von Protokollen an Remote-Server mit rsyslog

Ich versuche, eine zentrale Protokollierung mit Logstash, Elasticsearch und Kibana einzurichten und habe Probleme, die Protokolle auf meinen Protokollserver zu übertragen.

Logstash lauscht auf TCP 5000 und empfängt erfolgreich Protokolle von einem meiner Server, aber nicht vom Rest. Ich kann mich per Telnet mit meinem Protokollserver auf 5000 verbinden und Logstash ruft die Nachrichten ab, daher glaube ich, dass das Problem daran liegt, dass rsyslog die Protokolle sendet.

Ich verwende CentOS 6.5 und habe Folgendes zu /etc/rsyslog.conf hinzugefügt:

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

rsyslog wurde nach der Änderung fehlerfrei neu gestartet, aber Logstash empfängt nichts. Das Spool-Verzeichnis ist leer, daher glaube ich nicht, dass es Sendefehler gibt.

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

Irgendwelche Ideen, wie ich den Fehler eingrenzen kann?

EDIT: Dieses Problem wurde durch SELinux verursacht

Antwort1

SELinux blockierte das Senden von rsyslog über Port 5000. Standardmäßig erlaubt SELinux rsyslog nur, Datenverkehr über UDP 514 zu senden.

Ich habe eine Ausnahme zu SELinux hinzugefügt mit:

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

verwandte Informationen