Zaloguj się do bazy danych zamiast plików dziennika

Jestem zainteresowany wysyłaniem wszystkich logów aplikacji Rails do bazy danych (MySQL lub MongoDB) albo jako dodatek do pliku dziennika lub zamiast niego. Istnieje kilka powodów, z których większość dotyczy analizy plików dziennika. Korzystamy już z Google Analytics, ale jest wiele rzeczy, które chcemy zrobić, które nie są tak skuteczne w Analytics.

Co więcej, chciałbym przeprowadzić śledztwo w czasie rzeczywistym, sprawdzając dzienniki. Przesyłanie pliku dziennika jest żmudnym sposobem, aby to zrobić, i chciałbym zrobić lepsze wyszukiwanie i filtrowanie niż pozwala na to plik dziennika (łatwo).

Na koniec często chcę zbadać coś bliższego zachowaniu użytkownika witryny: na przykład śledząc ścieżkę w witrynie, aby zobaczyć, jaka była ostatnia strona, na którą patrzył użytkownik, zanim wystąpił błąd. Biorąc pod uwagę, że mamy wiele serwerów aplikacji, osobne pliki dziennika sprawiają, że to prawdziwy ból. Gdyby wszystkie dane znajdowały się w bazie danych, mógłbym łatwo zobaczyć prawidłową kolejność stron dla danego użytkownika. Wiem, że Syslog byłby jednym ze sposobów rozwiązania tego konkretnego problemu (pojedynczy plik dziennika / repozytorium), ale chcę połączyć to z lepszymi możliwościami wyszukiwania, które kojarzę z wyszukiwaniem w bazie danych.

Zastanawiam się, co ludzie zalecają rozwiązać ten problem. Czy logujesz się bezpośrednio do bazy danych, czy też zrzucasz pliki dziennika do bazy danych (ale jakie jest twoje podejście do tego, aby zasadniczo było w czasie rzeczywistym / tak samo aktualne jak plik dziennika)?

Obecnie ustalam, na jakim poziomie chciałbym to rejestrowanie, ponieważ inną rzeczą, na którą patrzyłem, jest napisanie małego filtru Rack, który rejestrowałby wszystkie żądania. Pominęłoby to całe dodatkowe wyjście, które zrzuca normalne rejestrowanie Railsów (cały SQL i wyjście na trafienia w pamięci podręcznej i chybienia itp.), Ale osiągnęłoby to dużą część mojego celu i wydaje się mieć tę zaletę, że nie przeszkadza cokolwiek innego w systemie.

W każdym razie nie szukam jednej właściwej odpowiedzi, więcej dyskusji i informacji o tym, co ktoś inny może robić w tym samym świetle.

questionAnswers(6)

yourAnswerToTheQuestion