2014-10-23 2 views
0

Проблема: После развертывания microservices как войны через AWS EBS Tomcat 7 контейнера ... заметил, что вращение журнала, которое происходит в UTC день границы оставляет устаревший файл инода.Rsyslog несвежий обработчик файлов с catalina.out

Вращение журнала является скорее копией n truncate, которая вызывает устаревший обработчик файла для rsyslog, который прослушивает изменения в catalina.out. Каков наилучший способ предотвратить устаревание дескрипторов inode? Должен ли я указывать политику опрокидывания в logback.xml или logrotate или ...?

выхода Sudo Lsof /var/log/tomcat7/catalina.out (и отчет Судо стата последнего инода)

rsyslogd 18970 root 2r REG 202,1 1250 134754 /var/log/tomcat7/catalina.out 

, но не соответствует войти выход Rsyslog в режиме отладки.

4638.114765354:7fc839b8c700: stream checking for file change on '/var/log/tomcat7/catalina.out', inode 135952/135952file 7 read 0 bytes 

Обход Остановить Tomcat, удалить catalina.out, а затем перезапустить Tomcat. Это позволило rsyslog продолжить потоки новых записей.

Однако через несколько часов rsyslog не смог передать новые записи журнала на сервер назначения rsyslog. Журнал отладки rsyslog содержит тот же индекс, что и вывод stat и lsof. Если вы запустите

sudo stat /var/log/tomcat7/catalina.out 

rsyslog снова начинает поток.

Вы заметили, что rsyslog прерывает потоковое прерывание за пределами случая использования опрокидывания журнала?

Зачем нужен sudo stat /var/log/tomcat7/catalina.out rsyslog?

+0

отвечая на мой собственный вопрос: 1. Похоже, что copyntruncate является встречающийся для catalina.out не только во время опроса в режиме UTC, но и в течение дня. 2. sudo stat сообщает оболочке о переоценке местоположения inode любого места назначения, которое вы ему даете ... следовательно, причина, по которой клиент rsyslog снова начинает поток через imfile – babalu

ответ

0

У меня также возникла проблема с тем, что rsyslog не отправляет новые записи, как только logrotated делает свое вращение на catalina.out. выдача stat не совсем сокращает его для меня, так как проблема заключается в том, что tomcat перестает писать Catalina.out (!) ... после просмотра различных форумов и блогов, я смог обратиться к этому с помощью следующих шагов:

  • убедитесь, что у нас есть $WorkDirectory, определенный в конфигурации rsyslog; это позволяет rsyslog записывать «файл состояния» для catalina.out (или для любых других файлов журнала, которые он смотрит, если на то пошло)
  • As noted here on Loggly's blog, вам необходимо остановить rsyslog, удалить этот файл состояния, а затем перезапустить rsyslog on a postrotate запись.
  • мой Logrotate установка для catalina.out (файлы состояния в/вар/Lib/Rsyslog):

    /opt/tomcat/logs/catalina.out { 
        rotate 7 
        size 50M 
        notifempty 
        missingok 
        postrotate 
         service rsyslog stop 
         rm /var/lib/rsyslog/* 
         service rsyslog start 
        endscript 
    }