Rsyslog не пересылается при работе в качестве службы

У меня есть 2 локальные виртуальные машины с CentOS 7 для имитации нашей производственной среды. 1 прокси-сервер и 1 централизованный (ELK) сервер. На сервере ELK запущен logstash для сбора всех системных журналов запущенных экземпляров. Прокси-сервер снабжен Rsyslog (и logrotate) через Ansible. Установите syslog и logrotate. Скопируйте конфигурацию. Перезапустить службу. Действительно базовая конфигурация, просто *. * @@ IP.ADD.RE.SS: 12345 в 10-logstash.conf , расположенном в /etc/rsyslog.d / а остальное стандартно. Но, похоже, он не отправляет журналы в logstash. Когда я просматриваю / var / log / messages , я вижу вывод прокси-контейнера, запущенного на экземпляре. Но ни один из них не пересылается на сервер регистрации.

Я погуглил и нашел опцию DebuggingOnDemand. Когда я останавливаю службу rsyslogd и вручную запускаю sudo rsyslog -n , он начинает пересылку журналов. Когда я запускаю rsyslog -d (без sudo), я получаю уведомление, что он не может записать файл .pid. Итак, я предполагаю, что когда он запускается как служба, у него недостаточно прав для правильной работы? Я не могу вручную запустить rsyslog без sudo. Но я могу запустить rsyslog как службу ( sudo service rsyslog start ) и подтвердить, что он запущен.

Так в чем именно проблема? Это сам процесс? Он не может читать файлы журнала? Я не мог себе представить, что моя конфигурация неверна, поскольку rsyslog пересылает правильно при запуске вручную. Я не знаю, какие журналы или выходные данные предоставить, поэтому, если они необходимы, спрашивайте, и я постараюсь предоставить.

rsyslogd -N 10 output (с другим файлом конфигурации, который, как подтверждено, работает в производстве, тот же сервер пересылки, но определены еще несколько параметров)

rsyslogd: version 7.4.7, config validation run (level 10), master config /etc/rsyslog.conf
rsyslogd: module 'imuxsock' already in this config, cannot be added [try http://www.rsyslog.com/e/2221 ]
rsyslogd: $WorkDirectory: /rsyslog/work can not be accessed, probably does not exist - directive ignored [try http://www.rsyslog.com/e/2181 ]
rsyslogd: End of config validation run. Bye.

Заранее спасибо!

0
задан 11 July 2017 в 11:42
3 ответа

Найдено решение для этого отключения SELinux на хосте rsyslog (сервер пересылки). В идеале подойдет и более детальная конфигурация.

0
ответ дан 24 November 2019 в 04:16

Я знаю, что этот вопрос старый, но у меня была такая же проблема. Основываясь на том, что было опубликовано, мне было трудно понять, что делать.

Для меня проблема была решена путем выполнения этой команды:

semanage port -m -t syslogd_port_t -p tcp 443

После этого мне просто пришлось отказаться от службы rsyslog:

systemctl restart rsyslog

Я также обнаружил статья, которая хорошо справляется с другими случаями, когда selinux может блокировать службу syslog / rsyslog

https://support.logz.io/hc/en-us/articles/209486429-Troubleshooting-Rsyslog-SELinux-configuration

Надеюсь, это кому-то сэкономит время!

0
ответ дан 24 November 2019 в 04:16

Определенно, это связано с SELinux, но поскольку отключение SELinux не лучший выбор, я исправляю проблему следующим образом:

sudo semanage port -d -t unreserved_port_t -p tcp 9092
sudo semanage port -a -t http_port_t -p tcp 9092

И перезапустите syslogd. Вы можете увидеть предупреждения SELinux с помощью этой команды:

tail -f /var/log/audit/audit.log
2
ответ дан 25 July 2020 в 13:06

Теги

Похожие вопросы