Я использую Ubuntu 12.04.1 LTS на EC2. У меня есть несколько серверов приложений, которые настроены на пересылку своих журналов на центральный сервер через rsyslog.
После включения мониторинга Nagios для файлов журналов на центральном сервере я получал предупреждения, указывающие на то, что определенные серверы приложений не могут пересылать свои журналы на централизованный сервер.
Вход в машины и перезапуск службы rsyslog устраняет проблему. Однако затем rsyslog повторно передает журналы. очередной раз, в результате чего на коллекторе появляются дубликаты. Почему он это делает?
Аспект этой проблемы, связанный с зависанием передачи журнала, вероятно, связан с ошибкой в том, как rsyslog настроен из коробки с помощью 'buntu: https://bugs.launchpad.net/ubuntu/+source/rsyslog/+bug/940030
Мне также удалось найти интересный пост на expertsexchange: www.expert-sex-change.com/OS/Linux/Administration/Q_27511414.html:
> I recently ran into a problem and was hoping someone could help me figure it out. I am > running Ubuntu 10.04 and rsyslog 5.8.1. I setup rsyslog to monitor a few files and send > the any changes to those files to Loggly (great service by the way). Well, it all works > great, except for the fact that whenever I restart rsyslog it resends everything from those > files that it had sent in the past. Now, it is my understanding that rsyslog should use > the $WorkDirectory and create what file that you set for $InputFileStateFile to save the > state of the monitored file so that it does not send duplicate entries. > > Here is an example that I'm working with: > > $WorkDirectory /var/log/rsyslog > > # Monit log file > $InputFileName /var/log/monit.log > $InputFileTag monit > $InputFileStateFile monit-state > $InputFileSeverity info > $InputRunFileMonitor > > So, from my description above, rsyslog should create a "monit-state" file in > "/var/log/rsyslog" which would save the state of the /var/log/monit.log" file so no > duplicates are sent. Is that correct? If so, this is not happening! > > What should the premission of "/var/log/rsyslog" be? Do I have to touch "monit-state" in > "/var/log/rsyslog" (I tried that already and nothing happened)?
С интересным ответом:
> Ok, I found this site (Trouble Shooting Rsyslog) and went through the interactive debugging > mode using: > > rsyslogd -c5 -dn > logfile > 1: > Select all > Open in new window > > > I was able to see that it was in fact a permissions problem. I opened up permissions to > 777 for my $WorkDirectory, just to test, and rsyslog did create the state files and > everything worked as planned. I will continue to play with the permissions so that it's > not 777 (obviously), but I wanted to let anyone else that might be having this problem know > how I solved it.
Я настроил права доступа на / var / spool / rsyslog, чтобы они принадлежали пользователю «syslog». Я проверил дублирующиеся передачи после применения этого изменения, и, похоже, проблема устранилась. Если проблема возникнет снова или я узнаю, что это не помогло, я вернусь сюда и обновлю ответ.
РЕШЕНИЕ:
$ sudo chown syslog /var/spool/rsyslog