=====Периодические процес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/. Плагины вызываются при явном указании их названия. При вызове плагинов другие операции не производятся.
[[abills:docs:manual:admin:form_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 или он сформирован не до конца генерирует событие в системе.\\
\\
Если включён модуль [[abills:docs:events|''Events'']], администратору отобразится всплывающее окошко о проблеме с бэкапами.\\
**Пример:**
# /usr/abills/libexec/billd events_check
====Плагин Events Push ====
Плагин отправляет все текущие уведомления ( какие отобразились бы в Веб-интерфейсе ) Push уведомлениями (Нужно настроить [[abills:docs:manual:sender: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
====Дублирование удалённой базы====
{{:abills:docs:manual:periodic:dbsync.jpg?nolink&400|}}
Автоматическое скачивание и наполнения локальной базы на основе удалённого дампа. Удобно использовать при создании тестового сервера и автоматического его обновления с основного. Программа скачивает дамп за текущее число с удалённого сервера и наполняет локальную базу. Можно использовать через 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';