Я пытаюсь настроить централизованное ведение журнала с помощью Logstash, Elasticsearch и Kibana, и у меня возникают проблемы с получением журналов на мой сервер журналов.
Logstash прослушивает TCP 5000 и успешно получает журналы с одного из моих серверов, но не с остальных. Я могу подключиться к моему серверу журналов по telnet на 5000, и 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
SELinux блокировал отправку rsyslog на порт 5000. По умолчанию SELinux разрешает rsyslog отправлять трафик только по UDP 514.
Я добавил исключение в SELinux:
$sudo semanage port -a -t syslogd_port_t -p tcp 5000