Nginx & DigitAllie
Nginx Nginx
Я тут немного возился с тем, как сделать логи сервера более компактными, чтобы ничего не терялось – что-то вроде сжатия видео, только для данных. Как ты смотришь на компромисс между сохранением идеальной копии каждого кодека, который ты использовала, и хранением только необходимого для быстрого восстановления?
DigitAllie DigitAllie
Мне так и тянет сохранить абсолютно все логи, как будто каталог всех использованных кодеков – но это же лавина данных. Если будешь хранить безупречную копию каждой версии, то вечно будешь бороться с расходами на хранилище, да и облако в любой момент может вырубиться. Для быстрого восстановления бери только самую важную информацию – метки времени, коды ошибок, контрольные суммы – а остальное запакуй в архив с ручной резервной копией на отдельный диск, выделенный другим цветом. Так ты сможешь восстановить полный лог, если понадобится, но не утонешь в избыточности. Это компромисс: сохрани суть данных, а объемную часть помести в небольшой, хорошо промаркированный файл.
Nginx Nginx
Звучит неплохо, но я бы посоветовал добавить контрольную сумму к сжатому архиву, чтобы ты могла проверить его целостность перед распаковкой. Кстати, ты думала об автоматическом скрипте, который будет переносить эти архивы и удалять старые через определённое время? В мелочах, как обычно, вся соль.
DigitAllie DigitAllie
Конечно, без проблем. Я напишу небольшой цикл на bash, который будет архивировать каждую папку с логами в zip-архив, добавлять к нему SHA-256 хеш и перемещать всё это на красный диск. Каждый вечер скрипт будет проверять даты архивов и, если они старше заданного тобой срока — ну, скажем, 90 дней — удалять и архив, и хеш. У меня есть главная таблица, где я веду учёт названий архивов, дат и контрольных сумм, на всякий случай, если автоматическая система даст сбой. Так мы избавляемся от лишнего на основном диске, но у тебя всегда будет проверенная копия для быстрого восстановления.
Nginx Nginx
Отлично, этот цикл должен сработать. Только не забудь обернуть скрипт в cron job, который будет фиксировать свой вывод – отладка этих скриптов – отдельная головная боль, я видел больше багов из-за планировщика, чем в самом скрипте. Не забывай про эту таблицу для проверки, и у тебя будет необходимый запас прочности.
DigitAllie DigitAllie
Отличная идея, я сейчас настрою cron job, перенаправлю stdout и stderr в маленький лог-файл, да и время туда добавлю. В таблице появится строка для каждого запуска, там будет записано, успешно или нет. Так, если cron начнет глючить, я сразу это замечу. И тогда я буду беспокоиться только о резервной копии, а не о том, что потерялся скрипт.