Jakie są zalety i wady Logrotate vs. Rotatelogs z Apache?

11

Apache zapewnia narzędzie zwane rotatelogami, które ma tę zaletę, że nie restartuje apache podczas obracania logów, co dzieje się z logrotate. Nie mam wystarczającego doświadczenia, aby mówić, jeśli jest to wystarczające kryterium do używania rotatelogów zamiast logrotate.

Moje pytania brzmią: czy ktoś ma rzeczywiste doświadczenie w korzystaniu z któregokolwiek z tych narzędzi i jakie byłyby wasze opinie?

Co byś polecił i dlaczego?

Mohan Gulati
źródło

Odpowiedzi:

7

Polecam logrotate większości ludzi, ponieważ to właśnie będą obracały wszystkie inne dzienniki (KISS: Keep it Simple Stupid). Logrotate nie uruchamia ponownie całego Apache, a jedynie wysyła mu sygnał, który każe mu ponownie otworzyć wszystkie pliki dziennika i zrestartować dzieci. Ten sygnał może być SIGHUP, który powoduje, że dzieci natychmiast uruchamiają się ponownie (co przerwie pobieranie), lub SIGUSR1, który uruchamia się z gracją. Dzięki SIGUSR1 musisz opóźnić przetwarzanie logów, dopóki nie pomyślisz, że wszystkie dzieci umarłyby naturalnie. Tak czy inaczej, prawdopodobnie chcesz przeanalizować swoje dzienniki i ustalić najkrótszy okres ruchu w ciągu dnia lub tygodnia.

Wydaje się, że dzienniki potokowe są bardziej wydajnym rozwiązaniem. Dużą zaletą jest to, że pozwala na korzystanie ze scentralizowanego systemu rejestrowania i przejęcia obciążenia samego serwera WWW. Sam podręcznik mówi:

Podobnie jak w przypadku rejestrowania warunkowego, logi potokowe są bardzo potężnym narzędziem, ale nie należy ich używać tam, gdzie dostępne jest prostsze rozwiązanie, takie jak przetwarzanie końcowe off-line.

Najwyraźniej nie używaj rejestrowania potokowego, jeśli go nie potrzebujesz . W przeszłości używałem rejestrowania potokowego jako hacky sposób filtrowania dzienników i nie miałem problemu.

Kyle Brandt
źródło
Skrypt postrotate z plikami logrotate Apache wysyła SIGHUP, który powoduje, że Apache kończy wszystkie dzieci i uruchamia się ponownie. Wszelkie aktywne połączenia w tym czasie zostaną zakończone.
Warner
Przeczytałem gdzieś komentarz, że wdzięczne ponowne uruchomienie nie działa zbyt dobrze w przypadku serwerów obciążonych dużym obciążeniem. Ale tak naprawdę nie sądzę, aby istniała alternatywa.
Mohan Gulati,
logrotate z SIGHUP jest dość standardem. Nie martwiłbym się tym.
Warner
2

Używałem obu wcześniej. Odkryłem, że korzystanie z rotatelogów jest bardzo przydatnym narzędziem do zarządzania dziennikami dostępu i jeśli nie chcesz przestoju apache. Poleciłbym to w witrynie o dużej ilości danych. Jedynym problemem, jaki znalazłem, było to, że jeśli chcesz zarządzać dziennikami, musisz mieć osobny skrypt do czyszczenia dzienników lub przenoszenia dzienników na serwer zapasowy, oczywiście to zależy od wymagań. W przypadku programu logrotate masz więcej opcji związanych z obsługą plików dziennika, jedynym problemem jest to, że gdy program logrotate działa, jak wyjaśniono w poprzedniej odpowiedzi, konieczne będzie ponowne uruchomienie apache.

Zasadniczo wszystko sprowadza się do wyboru, jeśli potrzebujesz apache do działania bez przerw, wówczas rotatelogi z zewnętrznym skryptem cron do zarządzania, w przeciwnym razie wystarczy logrotate. Tylko pamiętaj, aby skonfigurować Logrotate cron, aby nie obracał dzienników, gdy masz duży ruch.

Na koniec, jeśli chcesz mieć dziennik apache do swojego logu syslog, zawsze możesz użyć polecenia logger, które jest na Linuksie opartym na Redhat.

Danie
źródło