С версии SoftWLC 1.18 механизм архивации пользовательского аккаунтинга реализуется при помощи набора shell-скриптов, запускаемых при помощи утилиты cron, включенных в пакет eltex-radius-db.
Cкрипт позволяет гибко настраивать алгоритм архивации, очистки и выгрузки данных.
Партиционирование выполняется не по месяцам, а по неделям, что позволяет хранить в БД меньшее количество данных.
Архивация данных выполняется еженедельно.
Настройка автоматического запуска
Настройка автоматического запуска не требуется т.к. при установки пакета, выполнение скрипта добавляется в cron сразу.
Добавление запуска скрипта можно проверить, просмотрев содержимое файла /etc/cron.d/eltex-radius-db :
root@vagrant-ubuntu-trusty-64:/home/vagrant# cat /etc/cron.d/eltex-radius-db # Launch every Monday 0 0 * * 1 root /usr/lib/eltex-radius-db/three_years_radacct_wrap.sh
При необходимости изменения времени запуска скрипта, следует исправить cron-последовательность в файле /etc/cron.d/eltex-radius-db, после чего перезапустить сервис cron.
Создание партиций
В предыдущих версиях партицирование таблицы radacct выполнялось по месяцам. Для этого регулярно запускался скрипт, создающий партицию на месяц вперед.
В текущей версии партиции создаются понедельно. Для создания новых партиций используется скрипт /etc/cron.daily/radius-db-partitions, запускаемый ежедневно и проверяющий наличие партиции на следующую неделю, если партиции нет, то она создается.
При первой установке eltex-radius-db автоматически создаются партиции за предыдущие 3 года и на одну будущую неделю (относительно текущего серверного времени).
При обновлении с версий freeradius-eltex-db < 3.2.0, будет производиться преобразование базы данных. Это действие может занимать длительное время.
При обновлении с более поздних версий, старые партиции, разбитые по месяцам останутся без изменений, а новые будут создаваться с недельными интервалами.
Конфигурационные файлы
/etc/eltex-radius-db/manager-login
Файл содержит логин и пароль для подключения к БД.
Скрипт рассчитан на выполнение на одном сервере с базой данных, поэтому адрес сервера БД по умолчанию не указывается.
/etc/eltex-radius-db/three_years_radacct
Файл содержит настройки работы монитора.
Параметр | Значение по умолчанию | Описание |
---|---|---|
ARCHIVE_DIR | "/var/ems-backup/radius/csv/" | Каталог для хранения архивов аккаунтинга. |
PART_WEEK | 26 | Время хранения акканутинга в базе данных, исчисляется в неделях. По истечении срока хранения, данные будут удаляться из БД. |
ARCHIVE_WEEK | 156 | Время хранения архивов, в каталоге $ARCHIVE_DIR, исчисляется в неделях. По истечении срока хранения, архивы будут удаляться из каталога. |
NOTIFICATION_ADDR | E-mail администратора, на который будут отправляться уведомления об ошибках работы скрипта. Для отправки уведомлений по почте необходимо установить и настроить пакеты mailutils ssmtp. В данном руководстве есть инструкция по их настройке. В версии mailutils 1:2.99.99-1ubuntu2 и выше поддерживается одновременная отправка нескольким получателем. Для этого в конфигурации они должны быть перечислены через проблем, в двойных кавычках. Например: "example@mail.org example2@mail.org". |
Автоматическая выгрузка данных в удаленное хранилище
Помимо архивации и ротации аккаунтинга, скрипт способен автоматически выполнять выгрузку архивированных данных на удаленные сервера. Выгрузка реализована при помощи протоколов rsync и ftp.
Настройка выгрузки данных по протоколу rsync
Для работы этой функции на сервере должны быть установлены пакеты rsync и sshpass.
Параметр | Значение по умолчанию | Описание |
---|---|---|
RSYNC_REMOTE | N | Активация механизма выгрузки данных в удаленное хранилище по протоколу rsync. |
RSYNC_REMOTE_HOST | 192.168.0.1 | Адрес удаленного хранилища для выгрузки по rsync. |
RSYNC_REMOTE_PORT | 22 | Порт для подключения по протоколу rsync. |
RSYNC_REMOTE_USER | admin | Имя пользователя для подключения по протоколу rsync. |
RSYNC_REMOTE_PASSWORD | password | Пароль пользователя для подключения по протоколу rsync. |
RSYNC_REMOTE_PATH | "/var/ems-backup/radius/csv/" | Путь сохранения архивов на удаленном хранилище. |
Настройка выгрузки данных по протоколу FTP
Для работы этой функции используется утилита lftp, которая должна быть предустановлена на сервере.
Параметр | Значение по умолчанию | Описание |
---|---|---|
FTP_REMOTE | N | Активация механизма выгрузки данных в удаленное хранилище по протоколу ftp. |
FTP_REMOTE_HOST | 192.168.0.1 | Адрес удаленного хранилища для выгрузки по ftp. |
FTP_REMOTE_PORT | 21 | Порт для подключения по протоколу ftp. |
FTP_REMOTE_USER | admin | Имя пользователя для подключения по протоколу ftp. |
FTP_REMOTE_PASSWORD | password | Пароль пользователя для подключения по протоколу ftp. |
FTP_REMOTE_PATH | "/var/ems-backup/radius/csv/" | Путь сохранения архивов на удаленном хранилище. |
Журналирование работы скриптов
Логи работы скриптов сохраняются в каталоге /var/log/eltex-radius-db/.
Ротация логов настраивается в файле /etc/logrotate.d/radacct.
Настройка отправки уведомлений по почте
Для отправки уведомлений по почте используются пакеты mailutils ssmtp (из стандартных репозиториев Ubuntu). Краткая инструкция по установке и настройке:
Установка выполняется командой:
apt-get install mailutils ssmtp
В конфигурационном файле /etc/ssmtp/ssmtp.conf нужно указать данные для подключения к smtp серверу, например:
mailhub=192.168.1.1 AuthUser=tester@example.loc AuthPass=password UseTLS=NO UseSTARTTLS=YES
В конфигурационном файле /etc/ssmtp/revaliases нужно указать адрес отправителя, например:
root:tester@example.loc:192.168.1.1:25
Перезапуск процессов не требуется.
Для проверки отправки можно использовать консольную команду:
echo "Это тестовое письмо из консоли" | ssmtp -v -s test-destination@example.loc
Выборка данных при создании архива
При создании архивов, данные выгружаются по условию:
(starttime <= end and starttime >= start) or (stoptime <= end and stoptime >= start)
start - время начала выборки;
end - время завершения выборки;
starttime - время получения пакета radacct-start, обозначающего начало сессии пользователя;
stoptime - время получения пакета radacct-stop, обозначающего конец сессии пользователя.
Такое правило выборки позволяет сохранить данные о сессиях, не успевших завершиться полностью в момент создания архива (не имеющих метку stoptime). Такая сессия будет завершена в будущем и полная информация о ней попадет в архив, в котором она завершилась.