Ротация логов что. Настройка ротации логов. Краткое описание файла настроек Logrotate

Полное понимание того, насколько необходима "в хозяйстве" утилита для удаленного администрирования, часто приходит после нескольких часов безуспешных попыток объяснить по телефону знакомому или коллеге, как нужно настраивать ту или иную программу. Но даже если такой инструмент в нужный момент и окажется под рукой, нет никакой гарантии, что пользователь с рангом "чайник" сможет установить такую программу на своем компьютере, а уж тем более разблокировать работу сетевого экрана, который может препятствовать связи между клиентом и сервером.

Если же речь идет о целой компании, в которой десятки или даже сотни сотрудников, системному администратору приходится бегать от одного компьютера к другому, чтобы снимать повисшие приложения и разбираться с тем, почему "мышка прилипла к экрану". В этом случае простой инструмент для удаленного доступа не только сэкономит время администратора, но и улучшит эффективность работы сотрудников офиса. Долго искать эту программу не нужно, мы ее уже нашли. Знакомьтесь – Ammyy Admin .

Одно из преимуществ Ammyy Admin – очень простая установка и настройка. Для работы программы требуется скачать один файл размером менее мегабайта и запустить его. При этом не нужно думать, где клиентская часть программы, где – серверная, и какую из них куда устанавливать.

Организация соединения между компьютерами

Программа не требует инсталляции – после запуска файла AMMYY_Admin.exe появляется небольшое окно с двумя вкладками: "Клиент" и "Оператор". Кроме этого, каждому компьютеру, на котором запускается программа, присваивается свой идентификатор. Он тоже отображается в главном окне программы.

Теперь разберемся с терминами. Если вы планируете выполнять удаленное администрирование другого компьютера, то вы являетесь оператором. Это значит, что вам необходимо перейти на вкладку "Оператор", ввести в поле ID клиента идентификатор компьютера, которым вы хотите управлять, и нажать кнопку "Соединить".

Если же вы хотите, чтобы к вашему компьютеру был открыт удаленный доступ, значит, вы являетесь клиентом. Вы должны нажать кнопку "Запустить" на вкладке "Клиент", после чего разрешить соединение со своим компьютером. Как видите, все предельно просто. Давая согласие на удаленное управление компьютером, можно выбирать один из трех режимов работы: только просмотр рабочего стола, управление клавиатурой и мышью и открытие доступа к файловой системе. Для того чтобы каждый раз не выбирать требуемые настройки, можно сохранить параметры соединения отдельно для каждого оператора. Как вы могли заметить, для работы с Ammyy Admin не нужно вводить никаких паролей. Это может показаться странным, ведь, как правило, в программах для удаленного администрирования для авторизации обязательно применяется пароль. Однако в Ammyy Admin используется авторизация по аппаратному обеспечению компьютера (Computer Hardware ID). Такой подход имеет ряд преимуществ, по сравнению с обычной авторизацией по паролю. Когда пароля нет, его невозможно украсть, используя вредоносные утилиты для записи нажатий клавиш, различные методы перебора паролей и другие средства для незаконного получения конфиденциальной информации. С другой стороны, авторизация по аппаратному обеспечению компьютера тоже несовершенна. Например, компьютер оператора, с которого разрешен доступ на удаленный ПК, может быть физически украден злоумышленниками. Кроме этого, такой способ авторизации не очень удобен, если необходимо администрировать несопровождаемые сервера, и заранее неизвестны все возможные компьютеры операторов. Поскольку оба способа авторизации несовершенны, компания Ammyy Group планирует объединить их. Уже в следующей версии программы – Ammyy Admin 3 – будет реализована гибридная система авторизации. Пользователь сам сможет решить, что лучше использовать – пароль, Computer Hardware ID, или и то, и другое. По умолчанию для работы программы используется собственный протокол – Ammyy, однако при необходимости можно воспользоваться Microsoft RDP. Смена протокола выполняется в главном окне, на вкладке "Оператор".

Обеспечение защиты соединения

Все данные, которые передаются при помощи программы, шифруются с помощью алгоритма симметричного шифрования AES (Advanced Encryption Standard), который несколько лет назад был выбран американским институтом National Institute of Standards and Technology (NIST) в качестве криптографического стандарта на ближайшее время. Программа шифрует абсолютно все передаваемые данные – экран удаленного ПК, перемещения мышки на нем, информация, передаваемая через аудиочат, файлы, которые копируются с компьютера на компьютер и т.д. Дополнительной защитой при передаче данных является то, что для каждой сессии удаленного администрирования используются различные ключи, которые передаются с помощью ассиметричного шифрования. При использовании протокола Microsoft RDP, он еще шифрует данные своим алгоритмом, то есть, обеспечивается еще один уровень защиты. Кроме этого, программа не открывает порты ни на локальном, ни на удаленном компьютере. Многие программы для удаленного администрирования расцениваются брандмауэрами как подозрительные приложения, поэтому для работы с ними требуется ручная настройка систем для обеспечения защиты ПК. Ammyy Admin без проблем работает с брандмауэрами, не требуя их настройки. Это обеспечивается благодаря тому, что Ammyy Admin не требует открытия портов, реального IP-адреса и настроек IP-адресов ни на удаленном ПК, ни на компьютере администратора.

Сохранение идентификаторов клиентов

Идентификатор компьютера, к которому подключение выполнялось последним, запоминается. Таким образом, если при повторном запуске Ammyy Admin вам нужно будет соединиться с тем же компьютером, вам не нужно будет тратить время на то, чтобы спрашивать у клиента его идентификатор, и вводить его в окне программы. Если вы часто выполняете удаленное администрирование одних и тех же компьютеров, имеет смысл сохранить их идентификаторы. Для этого в Ammyy Admin предусмотрен специальный список контактов. В нем можно хранить не только номера компьютеров, но и имена их владельцев, благодаря чему вы не запутаетесь в цифрах. Занеся идентификатор компьютера в список контактов, в следующий раз соединяться с ним можно прямо из этого окна.

Работа с файлами на удаленном ПК

Если клиент разрешил доступ к файловой системе компьютера, то на компьютере оператора будет возможность работать с окном передачи файлов. Вызывается оно при помощи специальной кнопки, расположенной в верхней части окна управления удаленным компьютером. После ее нажатия можно увидеть специальное окно, напоминающее двухпанельный файловый менеджер. На одной из панелей отображается содержимое жесткого диска одного компьютера, на другой – файлы, имеющиеся на удаленном ПК. У пользователя есть возможность просматривать список файлов, выделять нужные и копировать их на свой компьютер.

Другие операции на удаленном ПК

В верхней части окна управления удаленным компьютером есть и ряд других команд, о предназначении которых можно догадаться по красноречивым иконкам.

Так, можно переключиться в полноэкранный режим, обновить экран, пообщаться с человеком, который находится за удаленным ПК, при помощи голосового чата, послать компьютер на перезагрузку, выполнить нажатие клавиш Ctrl и Alt. Отдельно стоит сказать об окне настроек соединения, кнопка для вызова которого также находится в верхней части окна управления удаленным компьютером. У оператора есть возможность управлять уровнем сжатия JPEG-файлов, которые передаются с удаленного ПК, выбирать масштаб отображения окна, решать, должен ли быть виден курсор и если да, то какой он должен быть формы. При необходимости можно включать или отключать передачу содержимого буфера обмена с удаленного ПК.

Оптимизация Windows для работы с Ammyy Admin

При работе с удаленным компьютером вы можете столкнуться с проблемой некорректного или замедленного отображения окон. В потому визуальные эффекты, которые по умолчанию используются в последних версиях Windows, лучше отключить. Сделав это, вы не только ускорите работу программы, но и уменьшите количество сетевого трафика. Для Windows 2000/XP/2003 рекомендуется включить классический стиль оформления на вкладке "Оформление" окна настроек "Экран", а также отключить отображение содержимое окна при перетаскивании, применение переходного эффекта для меню и подсказок, а также тени, отбрасываемые меню. Все это можно сделать на той же вкладке "Оформление", нажав кнопку "Эффекты".

Пользователям Windows Vista тоже рекомендуется использовать классический стиль оформления ("Панель управления" > "Персонализация" > "Тема"), а также отключить многочисленные визуальные эффекты: анимацию окон при свертывании и развертывании, эффекты затухания или скольжения при обращении к меню, скольжение при раскрытии списков, эффекты затухания или скольжения при появлении подсказок, тени, отбрасываемые меню и пр. Для доступа ко всем этим программам необходимо открыть "Панель управления", после чего выбрать пункт "Система" > "Дополнительные параметры системы" > "Дополнительно" > Кнопка "Параметры…" > Закладка "Визуальные эффекты". Подробнее об оптимизации системы для работы с Ammyy Admin можно прочитать на официальном сайте программы .

Работа Ammyy Admin как службы

При работе в обычном режиме подразумевается, что за компьютером, с которым происходит соединение, сидит человек, который разрешает подключение. Однако в некоторых случаях такой подход очень неудобен. Предположим, например, что вы, сидя на работе, хотите запустить программу или выполнить другие действия на своем домашнем ПК, за которым никого нет. В этом случае можно использовать службу Ammyy Admin. Человеческое вмешательство понадобится только один раз – для ее установки, а все последующие действия можно будет выполнять удаленно. Но не стоит думать, что такое соединение будет опасным и что получить удаленный доступ к компьютеру сможет любой желающий. В Ammyy Admin реализован специальный механизм защиты, благодаря которому соединение будет разрешено только для тех компьютеров, идентификаторы которых указаны в списке разрешенных. Для настройки удаленного доступа необходимо перейти в настройки программы (меню Ammyy > Settings) и нажать кнопку Ammyy Permissions. Затем нужно указать идентификатор компьютера, для которого будет разрешено подключение. Стоит отметить, что можно указать несколько идентификаторов и для каждого можно выбрать свой уровень доступа к ПК. Так, для одного компьютера можно разрешить только наблюдать за тем, что происходит на удаленной машине (Remote Desktop), для другого позволить передачу файлов (File Transfer), для третьего разрешить ввод с клавиатуры и щелчки мышью (Remote Inputs). Конечно же, при необходимости можно открыть все возможности администрирования.

После того, как настройка удаленного доступа будет завершена, можно устанавливать службу. Делается это из меню Ammyy > Service > Install. Затем при помощи команды Start выполняется запуск службы. Теперь даже если программа будет закрыта, можно будет получить удаленный доступ к ПК с тех компьютеров, для которых открыт доступ. Использование службы Ammyy дает еще ряд преимуществ. Работая с программой в таком режиме, можно удаленно перезагружать компьютер, выходить из текущей учетной записи, выполнять вход в систему и т.д.

Использование HTTPs-прокси

Один из вариантов организации доступа к интернету в локальной сети - через http/https прокси. Чаще всего, такой вариант настройки сети можно увидеть в офисах и различных учреждениях. Подобная конфигурация сети делает невозможным работу большинства программ, рассчитанных на работу с протоколами TCP или UDP. Однако с помощью Ammyу Admin и в этом случае можно установить соединение, поскольку в программе предусмотрена возможность работы через http/https прокси. Для использования прокси необходимо перейти на вкладку Network настроек программы (AMMYY>Settings), нажать кнопку HTTPs-proxy, установить переключатель в положение Use manual proxy и ввести параметры прокси-сервера. Подключившись к удаленному компьютеру, который работал в режиме http/https прокси, мы увидели, что программа уверенно держит соединение, никаких перебоев в скорости замечено не было.

Использование Ammyy Router

По умолчанию соединение между компьютерами выполняется через один из публичных роутеров (Ammyy Router - промежуточный сервер для программы, через который проходит трафик), однако при необходимости можно использовать собственный роутер. Использование собственного роутера дает возможность получить контроль над интернет-трафиком и максимальную скорость (особенно это заметно, если компьютеры находятся в локальной сети). Для работы роутера необходим внешний IP-адрес и свободные порты 80,443,8080. Чтобы настроить роутер, нужно скачать Ammyy Router , который может работать как приложение или как служба. Ammyy Router для Windows доступен для всех пользователей программы, а владельцы бизнес-лицензий могут использовать версию для Linux и FreeBSD. Через браузер можно зайти на роутер с любого компьютера и посмотреть его загрузку и статистику.

Условия лицензирования Ammyy Admin

В некоммерческих целях Ammyy Admin можно использовать бесплатно. В бесплатном режиме время от времени появляется сообщение с предложением приобрести лицензию. Кроме этого, программой можно пользоваться не более пятнадцати-двадцати часов в месяц. Если превысить этот лимит, то система заблокирует пользователей до покупки лицензии. Сейчас существуют лицензии двух типов - Home и Business, которые снимают эти ограничения. В дополнение ко всему вышесказанному, бизнес-лицензия дает доступ к многоканальному роутеру, работающему под управлением Linux или FreeBSD, а также позволяет настроить программу при помощи специального решения Ammyy Customizer. Все пользователи Ammyy Admin получают возможность мгновенного переноса лицензий на другие компьютеры, которое осуществляется через сайт. Это может быть актуально, если компьютер, на котором была активирована лицензия, сломается, или же будет заменен. Более подробную информацию о лицензировании и стоимости программы можно получить на сайте разработчика.

Ammyy Customizer: добавление в программу корпоративного стиля

Используя Ammyy Customizer, можно заменить иконку программы Ammyy Admin, а также добавить ссылку на сайт компании в окно с информацией о программе. Кроме этого, компании, имеющие бизнес-лицензию, могут настроить Ammyy Admin, чтобы программа по умолчанию работала с приватным роутером.

Ammyy Customizer очень прост в использовании: после его запуска все операции выполняются в одном окне. Пользователю необходимо указать путь к файлу AMMYY_Admin.exe, сохраненному на диске, путь к файлу ICO (при этом, нужно иметь в виду, что он должен содержать значок в трех вариантах: с разрешением 16х16, 32х32 и 48х48), ссылку на свой сайт, а также IP-адрес и порты роутера в формате 11.22.33.44:443,80,8080. После нажатия кнопки Update в файл AMMYY_Admin.exe будут внесены соответствующие изменения.

Заключение

Принято считать, что чем инструмент проще, тем он надежнее. В этом мы могли убедиться, поработав некоторое время с Ammyy Admin. Никаких сбоев в работе, зависаний и проблем с настройкой брандмауэра. В данном случае простая схема "запустил и работай" оправдала себя - утилита вполне заслуживает того, чтобы занять свое место на флэшке вместе с portable-версиями самых важных приложений. Программы для удаленного администрирования достаточно востребованы, поэтому нет ничего удивительного в том, что таких решений на рынке достаточно много. Чем же Ammyy Admin выделяется на общем фоне? Пожалуй, самое главное – это простота. Даже блондинка из офиса или бабушка-пенсионерка, которые никогда в жизни не установили ни одного приложения, смогут запустить программу и открыть сеанс удаленного доступа к своему ПК. Очень важно и то, что для установки соединения нигде не нужно прописывать никаких IP-адресов и открывать какие-нибудь порты, ведь для полноценной работы Ammyy Admin необходим лишь доступ к интернету. Работа программы как сервиса тоже очень удобна, так как дает возможность выполнять администрирование удаленного компьютера без чьего-либо присутствия за ним. Домашние пользователи наверняка оценят то, что с программой можно поработать бесплатно, ведь чтобы настроить на мамином компьютере Skype и разобраться, почему не запускается Opera, пятнадцати часов в месяц будет вполне достаточно. Ну, а для корпоративных клиентов тоже предусмотрены очень приятные бонусы, ведь возможность изменить внешний вид программы в стиле своей компании – это престижно и удобно.

Нужно отдать должное возможности ведения лога программами, т.к. в них записывается полезная информация, которая при необходимости может дать знать об активности в системе, тем самым помочь в починке каких-либо неполадок в работе программы. Есть и обратная сторона логов – это их размерность. Если размеры логов достигают больших значений то рано или поздно, как правило, это заканчивается некорректной работой программного обеспечения, не говоря о сложности при попытке прочитать лог.

В качестве примера мы будем использовать , который работает на системе Linux CentOS 7. Большая активность на сайте может порождать большое количество записей в логах. И если размеры логов разрастаются до больших размеров, то как правило , и перестает отвечать на запросы.

На самом деле, проблема переполнения логов программ в системе Linux уже давно решена. Для этих целей существует программа logrotate которая с большой вероятностью уже есть в системе при установке дистрибутива системы. Logrotate говоря простым языком переименовывает файл лога программы, а так же перезапускает программу чтобы создался новый файл лога. Таким образом, файлы логов будут складываться упорядоченно в директории, размерность и максимальное количество файлов так же может быть настроено. Logrotate используется большинством программ в Linux, однако не все знают о том, что разбиением файлов лога занимается именно эта программа.

Теперь давайте начнем с начала, предположим, что у вас не установлен logrotate, и мы его попробуем поставить, для этого выполните команду:

# yum install logrotate

Если вы используете другую версию Linux, к примеру Ubuntu, то команда установки будет выглядеть иначе:

# aptitude install logrotate

После установки logrotate (надеюсь у вас это получилось), мы переходим к конфигурации. Основной файл конфигурации находится тут:

/etc/logrotate.conf

Файлы конфигурации для журналирования логов программ стоит размещать в директории /etc/logrotate.d. Именовать файл конфигурации рекомендуется таким образом, чтобы было понятно для какой программы он предназначен.

# vi /etc/logrotate.d/example

В качестве example мы зададим httpd, таким образом, мы получаем:

# vi /etc/logrotate.d/httpd

Таким образом, каждая программа, у которой есть ротация логов, будет иметь свой отдельный файл конфигурации в директории /etc/logrotate.d.

Пример файла конфигурации для ротации логов веб-сервера Apache:

/var/www/*.log { weekly compress delaycompress notifempty missingok rotate 5 create 644 root root postrotate service httpd restart > /dev/null endscript }

Опции:
weekly — регулярность ротации - ротация раз в неделю, возможна иная периодичность: daily, monthly;
compress — сжимать копию лога, по умолчанию для этого используется архиватор gzip, хотя можно прицепить и какой-то внешний;
delaycompress — сжимать последнюю копию только при следующей ротации, это удобно, потому что самые свежие логи не придётся разархивировать;
notifempty — не ротировать лог, если он пуст;
missingok — не проверять наличие файла (если лога нет, то ничего страшного);
rotate 24 — количество сохраняемых копий, мне вот хватает данных и за последние полгода
mail [email protected] — отправляет свежую созданную копию на указанный e-mail, не всегда практично при больших размерах логов
create 644 root root — сразу после ротации старого создать новый пустой лог, указываются, соответственно, права доступа, юзер и группа файла
postrotate/endscript – действие, выполняемое после ротации логов, в нашем случае перезагрузка httpd сервера;
size – можно указать размер вместо weekly, например size 10M – в этом случае лог будет писаться в файл до того момента пока он не превысит 10-мегабайт.

После того как файл вы указали настройки для ротации логов, самое время проверить корректность файла конфигурации. Проверяется таким образом:

# logrotate -d /etc/logrotate.d/httpd

Ключ –d указывает на эмуляцию работы программы ротации логов, при этом логи затрагиваться не будут, а на экран будут выводиться диагностические сообщения.

Если всё в порядке, можно запустить утилиту в боевом режиме:

# logrotate -v -f /etc/logrotate.d/httpd

После выполнения команды, будет включена ротация логов сервера, раз в неделю (об этом указывает параметр weekly), количество файлов-логов будет 5 шт. (параметр rotate 5). Информацию о том, что и когда было в ротации программой logrotate можно посмотреть в файле:

/var/lib/logrotate/status

Чтобы система работала стабильно важно правильно рассчитать доступные ресурсы памяти, и настраивать ротацию логов в пределах доступности этих ресурсов. Кроме того стоит оценить скорость заполнения файлов лога, к примеру может быть достаточно и суток, чтобы файл лога стало невозможно открыть для чтения, и в этом случае ротация раз в неделю как вы наверное уже понимаете не совсем подходит.

У меня стояла задача: настроить сжатие логов DNS сервера Unbound, с возможностью удобного сбора этих бэкапов в коллектор. Также требовалось ограничить права доступа, чтобы с коллектора можно было зайти только в дирректорию, где хранятся бэкапы логов. Указанные действия проводил на CentOS 7 Minimal и CentOS 6.6 Minimal.

1) Сперва создаем группу пользователей, для которой будет ограничен доступ только по SFTP:

Vi /etc/ssh/sshd_config
Требуется в самом конце закомментировать строку #Subsystem sftp /usr/libexec/openssh/sftp-server и ограничить доступ для группы пользователей sftpd только по SFTP и только в домашнюю директорию. Для этого нужно добавить в конце следующие строки:

Subsystem sftp internal-sftp Match group sftpd ChrootDirectory %h X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
Перезагружаем ssh:

Service sshd restart
3) Создаем пользователя dnslog, назначаем ему домашнюю папку и права на эту папку. Владелец должен быть root, никто другой не должен иметь прав на запись в эту папку, иначе ничего не получится:

Adduser -d /home/dnslog -s /sbin/nologin dnslog -g sftpd passwd dnslog
chown root /home/dnslog chmod 750 /home/dnslog
4) Создаем папку, внутри домашней директории нашего пользователя, для которой у logrotate будут права на запись.

Mkdir /home/dnslog/logs chown dnslog /home/dnslog/logs chmod 775 /home/dnslog/logs
Доступ для коллектора организован, теперь можно подключиться по SFTP и проверить, что все работает. Далее настроим ротацию логов:

5) Создаем в папке /etc/logrotate.d/ файл, в котором будут прописаны настройки ротации наших логов.

Vi /etc/logrotate.d/unbound_logrotate
Настройки примерно такие:

/var/log/unbound/unbound.log { daily rotate 48 missingok notifempty compress olddir /home/dnslog/logs size 1024M postrotate service rsyslog restart > /dev/null unbound-control log_reopen #Переоткрываем файл логов, иначе лог не будет писаться после ротации endscript }
Далее я установил время ротации через крон.

23 * * * * root run-parts /etc/cron.hourly

И перезагружаем крон:
service crond restart
Ротация будет осуществляться каждый час в 23 минуты.

7) В папке /etc/cron.hourly/ создаем файл с любым именем, где пишем скрипт, который будет выполняться при наступлении времени ротации, с таким содержимым:

/usr/sbin/logrotate /etc/logrotate.conf

Вот и все. Логи будут автоматически складываться в папку /home/dnslog/logs/

Проверить настройки ротации можно командой:

Logrotate -d /etc/logrotate.conf

Также, стоит отметить, что в Unbound существует два способа ведения логов: средствами Unbound и через syslog. Через syslog - лучший способ, так как не так тормозит работу Unbound. В указанном примере описана ротация логов средствами Unbound. Чтобы настроить логгирование через syslog, в конфигурации Unbound нужно включить параметр:
use-syslog: yes
А также немного переписать файл /etc/logrotate.d/unbound_logrotate
/var/log/messages { daily rotate 48 missingok notifempty compress size 1024M olddir /home/dnslog/logs create postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true chown dnslog /home/dnslog/logs/messages* chmod 775 /home/dnslog/logs/messages* endscript }

Logrotate является отличной утилитой для управления log-файлами в системе. Утилита позволяет в автоматическом режиме архивировать, удалять и рассылать файлы на e-mail. Каждый log-файл может обрабатываться ежедневно, еженедельно, ежемесячно или по достижению выставленного объёма. Обычно logrotate запускается ежедневно службой cron.


Logrotate имеет свой конфигурационный файл /etc/logrotate.conf в котором описаны глобальные параметры, которые будут применяться по умолчанию, в нем как правило подключается директория include /etc/logrotate.d , откуда подгружаются дополнительные конфигурационные файлы с описанием правил для конкретных log-файлов.


Пример главного конфигурационного файла /etc/logrotate.conf

# ротировать каждую неделю weekly # хранить 4 log-файла rotate 4 # создать новый пустой log-файл create # сжимать log-файлы compress # подключить файлы с описанием правил для конкретных лог файлов include /etc/logrotate.d # запустить ротацию wtmp и btmp из основного файла конфигурации /var/log/wtmp { monthly minsize 1M create 0664 root utmp rotate 1 } /var/log/btmp { missingok monthly minsize 1M create 0600 root utmp rotate 1 }

Пример файла конфигурации для apache2, находящегося в каталоге /etc/logrotate.d/, выглядит следующим образом:

/var/log/httpd/site1/*log /var/log/httpd/site2/error.log { missingok # отсутствие файла не является ошибкой notifempty # не обрабатывать пустые файлы sharedscripts # скрипты prerotate/postrotate будут выполнены только один раз postrotate # скрипт будет выполнен сразу после ротации /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript }

Базовым элементом конфигурационного файла является секция. Описание секции начинается с указания файлов над которыми будет производится ротация, (в нашем случае это файлы находящихся в директории /var/log/httpd/site1/ и имеющие расширение "log" или конкретные файлы /var/log/httpd/site2/error.log), а параметры указываются в фигурных скобах.


В файле /var/lib/logrotate.status можно посмотреть что и когда последний раз ротировалось.

ОСНОВНЫЕ ОПЦИИ LOGROTATE:

  • -d Всключает режим отладки, а так же дублирует опциию -v. В режиме отладки не будут производиться изменения в log-файле и файле состояния
  • -f, --force Принудительно произвести ротацию, даже если в данный момент она не требуется
  • -m, --mail command Указать команду для отправки почты. Команда должна принимать 2 входных параметра: заголовок письма и получателя письма. Текст письма передается стандартным вводом (stdin). По умолчанию /usr/bin/mail -s
  • -s, --state statefile Указать куда записать файл состояния. Полезно в случаях, когда logrotate работает от имени разных пользователей для различных наборов лог-файлов. По умолчанию /var/lib/logrotate/status
  • --usage Выводит краткую инструкцию по использованию утилиты.
  • -v, --verbose Выводит отладочную информацию.

СПИСОК ПАРАМЕТРОВ:

rotate число Количество хранимых файлов daily Производить ротацию логов раз в день weekly Производить ротацию логов раз в неделю monthly Производить ротацию логов раз в месяц size размер Производить ротацию если log-файл превысил указанный размер (байт, Кбайт, Мбайт) start число Число с которого начнётся нумерация файлов compress Архивировать файлы (по умолчанию gzip) nocompress Отключает compress delaycompress Не сжимать "свеже" созданный архив. Например access.log.1 не будет зжат. Используется с compress. nodelaycompress Не откладывать сжатие файла на следующий цикл compresscmd Позволяет указать команду для сжатия файлов. По умолчанию gzip uncompresscmd Директива позволяет указать команду для декомпрессии файлов. По умолчанию gunzip compressext Если используется сжатие, задает расширение сжатых файлов. compressoptions Задает параметры сжатия, по умолчанию - "-9", т.е. максимальное сжатие для gzip create права владелец группа После ротации создать пустой log-файл. Любые из этих атрибутов могут быть опущены, в этом случае вместо них для нового файла будут использованы атрибуты, имеющие те же значения, что и первоначальный log-файл nocreate Не создавать новый файл copy Создать копию оригинального log-файла, не изменяя его. Исключает create nocopy Не копировать исходный файл copytruncate Создать копию оригинального log-файла, а потом его "обнулить". Таким образом сам файл не удаляется. Исключает copy, create nocopytruncate После создания копии, не обрезать исходный файл журнала в его штатном местоположении ifempty Архивирует даже пустой файл (используется по умолчанию) notifempty Не архивировать пустые файлы missingok В случае отсутствия оригинального log-файла не вызовет ошибку nomissingok В случае отсутствия оригинального log-файла вызовет ошибку prerotate команды endscript Строки, находящиеся между postrotate и endscript будут выполнены как sh скрипт до начала архивирования log-файла postrotate команды endscript Строки, находящиеся между postrotate и endscript будут выполнены как sh скрипт после архивирования log-файла sharedscripts Скрипты postrotate и prerotate будут выполнены только один раз в рамках своей секции. nosharedscripts Отключает sharedscripts. Скрипты будут выполняются при ротации каждого log-файла, при определение /var/log/apache2/*.log скрипт будет выполнен столько раз сколько уникальных log-файлов будет находится в данной директории olddir directory Перемещать архивные файлы в указанную директорию noolddir Отключает olddir dateext К имени файлов журналов добавляется дата (%Y%m%d), вместо номера extension расширение Финальное расширение ext, которое дается лог-файлу после ротации. mail адрес Когда смена версий приводит к необходимости удалить старый журнал, то послать его по указанному адресу mailfirst Посылать не удаляемую версию журнала, а первую maillast Посылать удаляемую версию журнала; действует по умолчанию nomail Не отправлять файлы журналов почтой. include файл_или_каталог Читает файл, переданный в качестве аргумента, так, как будто он включен построчно в тело конфигурационного файла с того места, где указана директива include. Если задан каталог, то содержащиеся в нём файлы будут прочитаны в алфавитном порядке, прежде чем переданы на обработку для включения. tabooext [+] список_расширений Изменяет текущий список запрещённых расширений (см. include). Если списку расширений предшествует знак +, то этот список прибавится к текущему, иначе заместит его.

Логи (или журналы) хранят в себе ценную информацию, позволяющую понять, что, когда и как происходило в системе. Логи веб-сервера - это ещё и важный источник данных для аналитики (ну, там, исследование аудитории веб-ресурса, определение основных источников трафика и прочее, хотя сегодня для подобных целей мало серверных логов, надо ещё подключать Google Analytics и Яндекс.Метрику). Но есть проблема: если на веб-ресурс ходит немало посетителей (или если система долго трудится без присмотра администратора), то логи вырастают до гигантских объемов.

Для того, чтобы однажды диск столь «самостоятельной» системы не переполнился логами под завязку и эту самую стабильную систему не завалил, надо логи периодически подчищать. Но удалять их вручную или по планировщику - плохая идея, ведь самые свежие (последние добавленные) данные из логов, как правило, действительно нужны для мониторинга системы или веб-сайта. Перед удалением надо как-то сохранять последние версии логов. Процесс сохранения нескольких копий логов с удалением самой старой при создании самой новой копии - называется ротацией. Задача типовая, а потому для ротации логов есть несколько известных инструментов, но я остановился на logrotate .

Итак, устанавливаем:
aptitude install logrotate

Итак, в новом файле мы должны описать что ротировать и как. Синтаксис чем-то похож, например, на описание виртуальных хостов nginx (и вообще такой синтаксис много где встречается). Предполагается, что лог-файлы вашего сайта лежат в /var/www/access.log и /var/www/error.log , если это нитак, то вы уж поменяйте путь в первой строке конфига.

Итак, конфигурация:

/var/www/*.log {
weekly # регулярность ротации - ротация раз в неделю, возможна иная периодичность: daily, monthly
compress # сжимать копию лога, по умолчанию для этого используется архиватор gzip, хотя можно прицепить и какой-то внешний
delaycompress # сжимать последнюю копию только при следующей ротации, это удобно, потому что самые свежие логи не придётся разархивировать
notifempty # не ротировать лог, если он пуст
missingok # не проверять наличие файла (если лога нет, то ничего страшного)
rotate 24 # количество сохраняемых копий, мне вот хватает данных и за последние полгода
mail [email protected] # отправляет свежую созданную копию на указанный e-mail, я этим не пользуюсь, но опция полезная для любителей сохранять всё ненужное на gmail`е, следите только за тем, чтоб лог пролезал в ваш ящик
create 644 root root # сразу после ротации старого создать новый пустой лог, указываются, соответственно, права доступа, юзер и группа файла
sharedscripts # запустить скрипт или утилиту после ротации всех логов
postrotate # выполнить далее указанный скрипт сразу после ротации
apache2ctl restart > /dev/null # перезапустим apache
endscript # признак окончания вызова скрипта
}

Вместо
weekly
можно было указать
size 10M
тогда лог будет ротироваться вне зависимости от регулярности, но на основе своего размера: ротироваться будет лог по объему больший или равный 10 мегабайтам. Какой вариант более подходит вам - решайте сами. Но учтите, что при регулярной ротации, вам надо хотя бы примерно прикинуть максимальный размер лога, умножить его на количество сохраняых копий и убедится, что места у вас на диске хватит и останется (иначе вся ротация смысл теряет).

Теперь давайте протестируем, удачно ли создан конфиг:
logrotate -d /etc/logrotate.d/example

С ключом -d программа будет только эмулировать полезную активность, выводя вам на экран диагностические сообщения (реально она логи не тронет).

Если всё в порядке, то запускайте утилиту в боевом режиме:
logrotate -v -f /etc/logrotate.d/example

И всё, логи будут ротироваться (руками в cron ничего добавлять не надо, всё будет сделано за вас).

В файл /var/lib/logrotate/status станет записывать информация о том, что и когда ротировал logrotate .