Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

С версии 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

Файл содержит настройки работы монитора.

/etc/eltex-radius-db/three_years_radacct
#Directory to store the accounting archives.
ARCHIVE_DIR="/var/ems-backup/radius/csv/"
#Storage time in the database is calculated in weeks. At the end of the storage period, the data will be deleted from the database.
PART_WEEK=26
#Archives storage time, in the $ARCHIVE_DIR directory, is calculated in weeks. At the end of the storage period, the archives will be deleted from the directory.
ARCHIVE_WEEK=156
#Administrator's e-mail, to which will be sent the notifications of the errors, occurred while script execution.
NOTIFICATION_ADDR=
#------------------------------Uploading via rsync protocol-------------------------------------------------------------
#Activation of the mechanism for uploading data to remote storage via rsync protocol.
RSYNC_REMOTE=N
#The remote storage address for rsync upload.
RSYNC_REMOTE_HOST=192.168.0.1
#The port for the rsync connection.
RSYNC_REMOTE_PORT=22
#The user name for the rsync connection.
RSYNC_REMOTE_USER=admin
#The user password for the rsync connection.
RSYNC_REMOTE_PASSWORD=password
#The path to save archives to a remote location.
RSYNC_REMOTE_PATH="/var/ems-backup/radius/csv/"
#------------------------------Uploading via ftp protocol---------------------------------------------------------------
#Activation of the mechanism for uploading data to remote storage via ftp protocol.
FTP_REMOTE=N
#The remote storage address for uploading via ftp.
FTP_REMOTE_HOST=192.168.0.1
#The port for uploading via ftp.
FTP_REMOTE_PORT=21
#The user name for uploading via ftp.
FTP_REMOTE_USER=admin
#The user password for uploading via ftp.
FTP_REMOTE_PASSWORD=password
#The path to save archives to a remote location.
FTP_REMOTE_PATH="/var/ems-backup/radius/csv/"


ПараметрЗначение по умолчаниюОписание
ARCHIVE_DIR"/var/ems-backup/radius/csv/"Каталог для хранения архивов аккаунтинга.
PART_WEEK

26

Время хранения акканутинга в базе данных, исчисляется в неделях. По истечении срока хранения, данные будут удаляться из БД.
ARCHIVE_WEEK156Время хранения архивов, в каталоге $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_REMOTENАктивация механизма выгрузки данных в удаленное хранилище по протоколу rsync.
RSYNC_REMOTE_HOST192.168.0.1Адрес удаленного хранилища для выгрузки по rsync.
RSYNC_REMOTE_PORT22Порт для подключения по протоколу rsync.
RSYNC_REMOTE_USERadminИмя пользователя для подключения по протоколу rsync.
RSYNC_REMOTE_PASSWORDpasswordПароль пользователя для подключения по протоколу rsync.
RSYNC_REMOTE_PATH"/var/ems-backup/radius/csv/"Путь сохранения архивов на удаленном хранилище.


Настройка выгрузки данных по протоколу FTP

Для работы этой функции используется утилита lftp, которая должна быть предустановлена на сервере.

ПараметрЗначение по умолчаниюОписание
FTP_REMOTENАктивация механизма выгрузки данных в удаленное хранилище по протоколу ftp.
FTP_REMOTE_HOST192.168.0.1Адрес удаленного хранилища для выгрузки по ftp.
FTP_REMOTE_PORT21Порт для подключения по протоколу ftp.
FTP_REMOTE_USERadminИмя пользователя для подключения по протоколу ftp.
FTP_REMOTE_PASSWORDpasswordПароль пользователя для подключения по протоколу ftp.
FTP_REMOTE_PATH"/var/ems-backup/radius/csv/"Путь сохранения архивов на удаленном хранилище.


Журналирование работы скриптов


Логи работы скриптов сохраняются в каталоге /var/log/eltex-radius-db/.

Ротация логов настраивается в файле /etc/logrotate.d/radacct.

/etc/logrotate.d/radacct
/var/log/eltex-radius-db/store_radacct.log {
        weekly
        rotate 24
        dateext
        dateformat -%Y-%m-%d
        dateyesterday
        extension .log
        missingok
        notifempty
        nocreate
}

/var/log/eltex-radius-db/create_partitions.log {
        size 10k
        weekly
        rotate 50
        missingok
        notifempty
        nocreate
}



Настройка отправки уведомлений по почте


Для отправки уведомлений по почте используются пакеты 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). Такая сессия будет завершена в будущем и полная информация о ней попадет в архив, в котором она завершилась.


  • Нет меток