Постійно контролюйте журнали з хвостом, які періодично обертаються


21

Ми використовуємо хвіст для постійного моніторингу декількох журналів, але при повороті журналу хвіст для цього файла припиниться.

Наскільки я розумію, проблема полягає в тому, що при обертанні журналу створюється новий файл, і запущений процес хвоста нічого не знає про цю нову ручку файлу.

Відповіді:


34

Ах, для цього є прапор.

замість використання tail -f /var/log/fileми повинні використовуватиtail -F /var/log/file


tail -Fперекладається tail --follow=name --retryяк в;

  • --follow=name: слідуйте за ім'ям файлу замість дескриптора файлу
  • --retry: якщо файл недоступний, повторіть спробу пізніше, а не вмирати

Чому вони навіть мали б варіант "-f"? Це має бути за замовчуванням!
Домінік Серісано

27
# tail --follow=mylog.log

Від хвоста людини :

With --follow (-f), tail defaults to  following  the  file  descriptor,
       which  means that even if a tail’ed file is renamed, tail will continue
       to track its end.  This default behavior  is  not  desirable  when  you
       really want to track the actual name of the file, not the file descrip‐
       tor (e.g., log rotation).  Use --follow=name in that case.  That causes
       tail  to track the named file by reopening it periodically to see if it
       has been removed and recreated by some other program.

Тож у цьому випадку використання -Fпараметра було б правильним.

-F     same as --follow=name --retry

11

Точна відповідь залежить від вашої ОС - але у багатьох випадках tail -Fзробить правильно.


3
Якщо хвіст -F не ​​працює, скомпілюйте версію хвоста -F, яка це робить. Інша альтернатива - коротка дорога до божевільного містечка.
chris


2

IMHO, незначно дивно змінювати файл журналу на SIZE, а не за датою. Більшість системних журналів (в unix або linux) обертаються щотижня або щомісяця, а не залежать від розміру ... Це мені подобається з різних причин, а також те, що, якщо буде реалізовано, вирішить вашу проблему.

Через вісім років я не знаю, про який чорт я говорив тут: є багато місць, де потрібно обертатися за розміром, тому що щоденні / щотижневі / щомісячні ротації можуть давати МАСИВНІ файли, які можуть спричинити серйозні проблеми.

З більш досвідченої точки зору, справжнє питання полягає в тому, чому ви хочете сидіти і безперервно хвостити на файл, який росте так швидко, що ви обертаєте його більше, ніж щодня ... Це було б як дивитися потік Matrix.

У ці дні вам буде краще вивчити агрегацію великих журналів даних, наприклад, Splunk або Sumologic, де він може фільтрувати події журналів у класи та запускати на основі конкретних значень журналу ... Не потрібно взагалі дивитися журнали живих даних.


Я погоджуюсь, і це одне, що я зрозумів, що мені слід заглянути. Сподіваємось, log4j підтримує це. Спасибі!
DivideByHero

1
Одним із очевидних переваг обертання за розміром є те, що ви можете бути впевнені, що весь набір журналів буде меншим, ніж відомий розмір.
Джим Зайковський

1

Я використовую команду на своєму виробничому сервері:

tail --follow var/log/apache-access_log --retry

-1

Крім того, це може бути занадто важким завданням для ваших цілей, але сплюнк має хвостову функцію, щоб робити саме те, що ви хочете. Це безкоштовно до 500 Мб / день, але якщо ваші дані перевищують цей розмір, це не варто коштувати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.