Nieustannie monitoruj kłody z ogonem, które są czasami obracane


21

Używamy ogona do ciągłego monitorowania kilku dzienników, ale po obróceniu dziennika ogon tego pliku przestanie działać.

O ile rozumiem, problem polega na tym, że po obróceniu dziennika powstaje nowy plik, a działający proces tail nie wie nic o tym nowym uchwycie pliku.

Odpowiedzi:


34

Ach, jest na to flaga.

zamiast używać tail -f /var/log/filepowinniśmy używaćtail -F /var/log/file


tail -Ftłumaczy się tail --follow=name --retryjak w;

  • --follow=name: podążaj za nazwą pliku zamiast deskryptora pliku
  • --retry: jeśli plik jest niedostępny, spróbuj ponownie później zamiast umierać

Dlaczego mieliby w ogóle opcję „-f”? To powinno być domyślne!
Dominic Cerisano

27
# tail --follow=mylog.log

Z ogona człowieka :

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.

W takim przypadku użycie tej -Fopcji byłoby poprawne.

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

11

Dokładna odpowiedź zależy od systemu operacyjnego - ale w wielu przypadkach tail -Fzrobi to dobrze.


3
Jeśli tail -F nie działa, skompiluj wersję tail -F, która działa. Inną alternatywą jest krótka droga do szalonego miasta.
Chris


2

IMHO, trochę dziwnie jest zmieniać plik dziennika według ROZMIARU, a nie według daty. Większość logów systemowych (w Uniksie lub Linuksie) obraca się co tydzień lub co miesiąc, a nie na podstawie wielkości ... To jest coś, co lubię z różnych powodów, a także coś, co, jeśli zostanie zaimplementowane, rozwiązałoby twój problem.

Osiem lat później nie wiem, o czym, do diabła, tu mówiłem: jest mnóstwo miejsc, w których chcesz obracać według rozmiaru, ponieważ codzienne / tygodniowe / miesięczne rotacje mogą dać MASYWNE pliki, które mogą powodować poważne problemy.

Z bardziej doświadczonego punktu widzenia prawdziwe pytanie brzmi: dlaczego chcesz siedzieć i ciągle ogoniać plik, który rośnie tak szybko, że obracasz go więcej niż codziennie ... To byłoby jak oglądanie strumienia Matrix.

Teraz lepiej przyjrzeć się agregacji dzienników dużych danych, takich jak Splunk lub Sumologic, w których można filtrować zdarzenia dziennika do klas i uruchamiać je na podstawie określonych wartości dziennika ... Nie trzeba w ogóle oglądać dzienników na żywo.


Zgadzam się i zdałem sobie sprawę, że powinienem to sprawdzić. Mam nadzieję, że log4j obsługuje to. Dzięki!
DivideByHero,

1
Jedną wyraźną zaletą rotacji według rozmiaru jest to, że możesz być pewien, że cały zestaw dzienników będzie mniejszy niż jakiś znany rozmiar.
Jim Zajkowski

1

Używam polecenia na moim serwerze produkcyjnym:

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

-1

Ponadto może być nieco zbyt ciężki dla twoich celów, ale splunk ma funkcję ogona, aby robić dokładnie to, co chcesz. Jest bezpłatny do 500 MB dziennie, ale jeśli twoje dane przekraczają ten rozmiar, nie byłoby warte kosztów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.