Периодические процесcы

Периодические процессы

За выполнение месячных и дневных периодически процессов отвечает программа /usr/abills/libexec/periodic

Примеры использования

Дневной периодик

# /usr/abills/libexec/periodic daily

Дневные периодические процессы, система выполняет дневные периодические действия по все модулям системы.

Порядок выполнения

  • установка кредитов
  • обнуление скидок
  • перенос должников по группам
  • Выполнение расписания
    • изменении тарифных планов
    • Установка статусов блокировки
    • выполнение других команд
  • Функции модулей
    • дневная абон. плата
    • управление оборудованием
  • отправка E-mail отчётов администратору системы
  • отправка E-mail предупреждений пользователям о израсходованном балансе

Месячный периодик

# /usr/abills/libexec/periodic monthly

Месячный периодический процесс. Выполнение месячных процессов системы по все подключенным модулям

  • Функции модулей
    • месячная абон. плата
    • месячная распределённая абон. плата (снимается каждый день)
    • управление оборудованием
  • отправка E-mail отчётов администратору системы
  • отправка E-mail предупреждений пользователям о израсходованном балансе
  • Резервное копирование базы данных

Архивация базы

# /usr/abills/libexec/periodic backup

Выполнить резервное копирование
При выполнении бекапа система пропускает таблицы _old _YYYY_MM_DD

Аргументы

BACKUP_IGNORE='table1,table2' Список игнорируемых таблиц

Запуск расписания принудительно

# /usr/abills/libexec/periodic daily SHEDULE=1 DATE=xxxx-xx-xx

Автоматическое выполнение

Вносим в cron периодические процессы /etc/crontab

 */5  *      *    *     *   root   /usr/abills/libexec/billd -all
 1     0     *    *     *   root    /usr/abills/libexec/periodic daily
 1     1     *    *     *   root    /usr/abills/libexec/periodic monthly

Обратите внимание что дневной периодический процесс желательно запускать в 00:00:00, а месячный через час 01:00:00. Это делается для того чтобы успели отработать все переключения тарифных планов и другие действия планировщика заданий. Месячный периодик запускается каждый день так как он следит за месячной рапределённой абонплатой, месячными периодическими снятиями с произвольными датами и делает бекап.

Аргументы программы

Дополнительные параметры

DATE=2005-10-01 Дата за которую нужно выполнить периодические процессы
NO_USERS_WARNINGS Не оправлять предупреждений пользователям о израсходованном депозите
MODULES=[modules_list,…] Выполнить периодический процесс только для определённых модулей системы
SKIP_MODULES=[modules_list] Не выполнять программу для определённых модулей системы
NO_ADM_REPORT Не оправлять администратору отчёт о работе системы
FN Запускать только определённую функцию
SHEDULE Выполнить только расписания
SET_FULL_CREDIT Установка кредита абонентам на суму всех услуг акаунта, для компаний на суму всех услуг абонентов компании
FULL_CREDIT_PERIOD Установить время действия полного кредита в днях
LOGIN Выполнить периодический процесс только для определённого логина или логинов, логины нужно указывать через запятую
DEBUG=[0..7] Режим отладки 0-7

Установка кредита на суму всех услуг

Кредит устанавливается на суму всех услуг предоставляемых абоненту.

Данный кредит устанавливается исходя из следующий критериев:

  • только активным абонента (статус акаунта: активно)
  • если поле кредит не содержит другого значения кредита
  • если сума на счету меньше сумы общего кредита абонента

Для компаний кредит устанавливается в размере сумы всех используемых услуг абонентами компании
По умолчанию кредит предоставляется на неограниченный срок. Если нужно установить срок кредита нужно использовать параметр FULL_CREDIT_PERIOD. При использовании параметра FULL_CREDIT_PERIOD дата начала кредита считается датой выполнения программы если другое не указано в аргументах
Пример использования
Установка кредита на 10 дней

# /usr/abills/libexec/periodic SET_FULL_CREDIT FULL_CREDIT_PERIOD=10

Параметры

UID Выполнить только для определённого UID
LOGIN Выполнить только для определённого логина
COMPANY_ID Выполнить только для определённой компании.
Только для компаний COMPANY_ID='>0'

billd

abills/libexec/billd

формат запуска

billd [plugin] [parameters]

Программа осуществляет контроль состояния системы

Возможности

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

Установка

/etc/crontab

*/5     *       *       *       *       root    /usr/abills/libexec/billd -all

Аргументы командной строки

checkppp    - check Active ppp on FreeBSD session and disconnect unknown ip
checkppp    - check Active ppp on FreeBSD session and disconnect unknown ip
check_cisco_cid - check Cisco cids
checkpppd   - check Active pppd on Linux session and disconnect unknown ip
check_pptpd - chack Active PoPToP deamon on Linux
checkmikro  - check Active ppp on Mikrotik session and disconnect unknown ip.
CHECK speed
 checkspeed       - check cure speed for user on FreeBSD and Linux NAS. Arguments NAS_IDS=xx
   SHOW_SPEED=1  - Only show current speed
 checkspeed_mikro - check cure speed for user on Mikrotik. Arguments NAS_IDS=xx

 speed_expr       - Speed Expration
 SHOW_CUR_SPEED   - Show current users speed
 OS               - Local OS (Linux|FreeBSD). Optional params
 PLUGINS
   check_dublicates
   check_programs

 CHECK connection Alive
  checklines  - Check alive connections
  -d          - deamon mode

  debug       - debug mode
  NAS_IDS=... - Make actions for NAS

Плагины

Плагины программы размещаются в каталоге abills/libexec/billd.plugins/. Плагины вызываются при явном указании их названия. При вызове плагинов другие операции не производятся.

Управление плагинами

Watchdog

check_programs - плагин слежения за работой программ.

Параметры

PROGRAMS='radiusd:/usr/local/etc/rc.d/radiusd start;' Указания списка программ для слежения.
[программа]:[команда запуска программы]

Пример проверка работы радиуса на FreeBSD

# /usr/abills/libexec/billd check_programs PROGRAMS=radiusd

проверка работы радиуса на Linux (UBuntu)

# /usr/abills/libexec/billd check_programs PROGRAMS="radiusd:/etc/init.d/freeradius start"

Пример проверки работы flow-capture на FreeBSD

/usr/abills/libexec/billd check_programs PROGRAMS="flow-capture:/usr/local/etc/rc.d/flow_capture start"

Пример проверки работы ipcad на DEBIAN

/usr/abills/libexec/billd check_programs PROGRAMS="ipcad:/usr/local/bin/ipcad -d"

mx80_change_profile Переключение профайла абонента в зависимости от времени суток

Параметры

NAS_IDS=1 Номер сервера доступа. Если не указан система делает на всех серверах типа mx80
DEBUG=1 Режим отладки

конфигурация

$conf{BILLD_PLUGINS}='plugin:args;plugin2:args2' Список плагинов запускаемых после Онлайн проверки. список плагинов указывается через точку с запятой. После названия плагина можно указать аргументы передаваемые ему через двоеточие

Пример

# /usr/abills/libexec/billd mx80_change_profile

dhcp_clean_leases

Чистка законченных сессий Freeradius DHCP

Пример

# /usr/abills/libexec/billd dhcp_clean_leases

Плагин equipment_ping

Данный плагин пингует оборудование.
Если статус оборудования был «Отключено» и пинги начали доходить - статус меняется на «Активно».
Если статус оборудования был «Включено» и пинги перестали доходить - статус меняется на «Отключено».

В случаее смены статуса на «отключено» создается событие, и все администраторы подписанные на модуль Equipment получают уведомление.

Пример:

# /usr/abills/libexec/billd equipment_ping

Плагин events_check

Плагин проверяет наличие и коректность бэкапов.
Если отсутсвует вчерашний backup или он сформирован не до конца генерирует событие в системе.

Если включён модуль ''Events'', администратору отобразится всплывающее окошко о проблеме с бэкапами.

Пример:

# /usr/abills/libexec/billd events_check

Плагин Events Push

Плагин отправляет все текущие уведомления ( какие отобразились бы в Веб-интерфейсе ) Push уведомлениями (Нужно настроить Push уведомления)

Пример:

# /usr/abills/libexec/billd events_push

Отправка писем о депозите отдельно от периодических начислений

# /usr/abills/libexec/periodics daily NO_USERS_WARNINGS=1
# /usr/abills/libexec/periodics momnthly NO_USERS_WARNINGS=1
# /usr/abills/libexec/periodics daily FN=dv_users_warning_messages

Дублирование удалённой базы

Автоматическое скачивание и наполнения локальной базы на основе удалённого дампа. Удобно использовать при создании тестового сервера и автоматического его обновления с основного. Программа скачивает дамп за текущее число с удалённого сервера и наполняет локальную базу. Можно использовать через cron для ежедневного обновления.

/usr/abills/libexec/billd sync_db

Параметры

DEBUG=1..7 Режим отладки

Опции настройки

Удалённый хост синхронизации

$conf{SYNC_DB_HOST}='192.168.1.100:22:/usr/abills/backup/';

Команда синхронизации. Предназначена для синхронизации из нестандарных каталогов или хостов. При её использовании опци $conf{SYNC_DB_HOST} игнорируется

$conf{SYNC_DB_DOWNLOAD}='scp asm@192.168.1.100:22:/usr/abills/backup/stats-%DATE%.sql.gz /usr/abills/backup/stats-%DATE%.sql.gz; '
 .'gzip -d /usr/abills/backup/stats-%DATE%.sql.gz --name /usr/abills/backup/sync_dump.sql';

Название локально базы. По умолчанию abills

$conf{SYNC_DB_NAME}='abills_3';