xenon
@xenon
Too drunk to fsck

Как лучше хранить логи в базе данных?

Приложение сейчас хранит логи в базе данных. Логи "write only", довольно активно пишутся, а читаются изредка. База удобна тем, что:
1. Легко фильтруются нужные записи (относящиеся к одному из множества объектов логирования, нужного типа)
2. Довольно важно всегда гарантированно иметь под рукой записи за последнее время (сутки, неделя). с logrotate это все усложняется, т.к. после ротации лог становится пустой, а логи читаются через веб-морду, а не из шелла. С базой задача очистить все что старше недели и гарантированно оставить все, что меньше недели - делается проще.

Однако, немного волнует нагрузка на базу. Ведь она не знает, что логи не нужны (не потребуются в ближайшее время). Поэтому может долго держать их в памяти, кешировать потребляя на это ресурсы, которые не достанутся на самом деле важным записям в других таблицах (о которых я, программист, знаю, что они гораздо более вероятно потребуются из памяти).

Насколько вобще хороша идея хранить логи в базе, или лучше переписать их на текстовые файлы и изредка, когда кто-то зашел смотреть логи - парсить текст?

Можно ли как-то правильно "проинструктировать" СУБД (mariadb), что данные из таблицы логов - "неважные" и их надо сразу скидывать на диск, а из некоторых других таблиц - "важные", и их надо по возможности держать в памяти?

Можно ли как-то посмотреть, сколько ресурсов "съедает" сейчас таблица логов в оперативке (не на диске)?
  • Вопрос задан
  • 2725 просмотров
Решения вопроса 1
@mrxor
Simple is better than complex
Посмотрите в сторону ELK, graylog и иже с ними.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Логичнее всего - не хранить логи в базе данных, черт побери) Использовать надо для каждой задачи свои инструменты, например, тот же самый пресловутый ELK
Ответ написан
Комментировать
@Zolg
лучше хранить логи в отдельной базе данных
еще лучше - в более подходящей для этого (например elasticsearch)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы