Меня интересует отправка всех журналов приложений Rails в базу данных (MySQL или MongoDB) в дополнение или вместо файла журнала. Есть несколько причин, большинство из которых касаются анализа файлов журналов. Мы уже используем Google Analytics, но есть ряд вещей, которые мы хотим сделать, но они не так эффективны в Google Analytics.
Кроме того, я хотел бы провести исследование проблем в режиме реального времени, просматривая журналы. Просеивание файла журнала является утомительным способом сделать это, и я хотел бы сделать поиск и фильтрацию лучше, чем позволяет (легко) файл журнала.
Наконец, я часто хочу изучить что-то ближе к поведению посетителя сайта: например, проследить путь через сайт, чтобы я мог видеть, какую последнюю страницу просматривал пользователь перед тем, как произошла ошибка. Учитывая, что у нас есть несколько серверов приложений, отдельные файлы журнала делают это настоящей болью. Если бы все данные были в базе данных, я мог бы легко увидеть правильную последовательность страниц для данного посетителя. Я знаю, что Syslog был бы одним из способов решения этой конкретной проблемы (один файл журнала / хранилище), но я хочу объединить это с лучшими возможностями поиска, которые я связываю с поиском в базе данных.
Мне интересно, что люди рекомендуют решить эту проблему. Вы непосредственно входите в базу данных или вы записываете файлы журналов в базу данных (но какой у вас подход к этому, чтобы он был в реальном времени / таким же актуальным, как и сам файл журнала)?
В настоящее время я определяю, на каком уровне я хотел бы вести эту запись, потому что еще одна вещь, на которую я смотрел, - это написание небольшого фильтра Rack, который бы регистрировал все запросы. Это пропустило бы весь дополнительный вывод, который выгружает обычная запись в журнале Rails (весь SQL и вывод при попаданиях и пропаданиях кэша и т. Д.), Но это достигло бы большую часть моей цели и, похоже, имеет преимущество в том, что не беспокоило что-нибудь еще в системе.
Во всяком случае, я не ищу одного правильного ответа, больше обсуждения и информации о том, что кто-то еще может делать в этом же свете.