BILLmanager позволяет ограничить скорость трафика виртуального сервера, заказанного в VMmanager 6. Скорость снижается до указанного значения при перерасходе трафика. Ограничение можно задать для:
- входящего трафика — внутреннее наименование in;
- исходящего трафика — внутреннее наименование out.
Когда у клиента исчерпан лимит трафика, BILLmanager обращается к модулю обработки pmvmmgr6, который уведомляет VMmanager 6 по API. Пример запроса см. в разделе Модуль pmvmmgr6. VMmanager 6 понижает скорость соединения клиента до "бесплатной" — минимальной скорости, при которой клиент может продолжать использовать услуги. Опция позволяет провайдеру эффективно управлять трафиком клиентов, а клиенту продолжать пользоваться услугой, не превышая лимиты, и сократить стоимость услуги виртуального сервера.
Настройка в интерфейсе
Чтобы настроить ограничение для тарифа, перейдите в раздел Продукты → Тарифные планы → выберите тариф → кнопка Конфиг. → Трафик → активируйте опцию Ограничение скорости при перерасходе.
Вы можете указать лимиты:
- Включено в тариф — количество трафика, которое входит в стоимость тарифного плана дополнения "Трафик". После использования клиентом указанного количества включается ограничение скорости. Трафик внутри узла кластера VMmanager (с одной ВМ на другую) также учитывается;
- Максимальное значение — максимальное количество трафика, которое может заказать клиент. После использования этого количества услуга будет выключена до наступления нового расчётного периода. Единица измерения трафика выбирается в настройках тарифного плана. По умолчанию используется ГиБ. Подробнее см. Настройка содержания тарифа;
Подробнее о том, как настроить ограничение скорости при перерасходе в интерфейсе, см. Тарифный план VMmanager 6.
Настройка ограничения
Включение ограничения
Ограничение активируется после сбора статистики командой statdaily. По умолчанию команда выполняется автоматически через механизм 
    billmaintain:
- название задачи — billstat;
- время запуска — 00:20 (серверное время).
Чтобы запустить механизм вручную, выполните команду:
/usr/local/mgr5/sbin/billmaintain --command billstat --module 123 --date 2025-12-30Чтобы вручную запустить принудительное выполнение ежедневной проверки и применения ограничения для услуги в заданную дату, выполните команду:
/usr/local/mgr5/sbin/mgrctl -m billmgr service.statdaily item=123 statdate=2025-12-30 force=onСнятие ограничения
Снятие ограничения зависит от настроек тарифного плана и происходит при одном из условий:
- наступление нового расчётного периода — ограничение снимается автоматически через statdaily:- для ежемесячной статистики — 1-го числа следующего месяца;
- для ежедневной статистики — на следующий день;
 
- оплата перерасхода — ограничение снимается при последовательном выполнении следующих условий: - обработка обратных вызовов изменения или удаления расхода;
- отсутствие неоплаченных расходов по услуге в случае, когда клиент оплатил перерасход или администратор удалил задолженность.
 
Подробнее об условиях снятия ограничений см. в описании опции Ограничение скорости при перерасходе в статье Тарифный план VMmanager 6.
Если условием снятия ограничения является наступление нового расчётного периода, можно снять ограничение, не дожидаясь 1-го числа следующего месяца. Для этого добавьте в конфигурационный файл /usr/local/mgr5/etc/billmgr.conf строку Option BillTestMode. Эта строка не даст ограничить скорость и отключит существующее ограничение.
Чтобы посмотреть наличие Option BillTestMode, выполните команду:
/usr/local/mgr5sbin/mgrctl -m billmgr optionlistПодробнее о конфигурационном файле см. статью Конфигурационный файл.
Хранение данных об ограничениях
В базе данных информация об ограничениях хранится в таблице item_limitation в столбцах item и addon, где:
- item— id основной услуги, для которой будет применено или снято ограничение. Обязательный параметр;
- addon— id дополнения (трафика), по которому срабатывает ограничение. Первичный ключ.
Оба столбца ссылаются на таблицу item. Запись в таблице означает, что для дополнения действует ограничение. При снятии ограничения запись удаляется.
Модуль pmvmmgr6
Модуль  pmvmmgr6 включает и снимает ограничение с помощью команд:
- включения ограничения:
/usr/local/mgr5/processing/pmvmmgr6 --command stat_limit_activate --item 123 --addonintname bandwidthПосле выполнения команды в логе VMmanager 6 появится сообщение:
DEBUG: New limited throughput: inbound traffic = 7 Mbps, outbound = 4 Mbps
DEBUG: POST query to 'vm/v3/host/12345/resource': {
   "net_in_mbitps" : 7,
   "net_out_mbitps" : 4
}
...
DEBUG: Throughput has been limited for item#123- снятия ограничения.
/usr/local/mgr5/processing/pmvmmgr6 --command stat_limit_deactivate --item 123 --addonintname bandwidthПосле выполнения команды в логе VMmanager 6 появится сообщение:
DEBUG: New regular throughput: inbound traffic = 70 Mbps, outbound = 60 Mbps
DEBUG: POST query to 'vm/v3/host/12345/resource': {
   "net_in_mbitps" : 70,
   "net_out_mbitps" : 60
}
...
DEBUG: Throughput limit has been lifted from item#123Функциональность команд ограничивает трафик на стороне VMmanager 6. BILLmanager обращается к VMmanager 6 с помощью команд выше.
Для значений скорости берутся поля из тарифного плана дополнения "Трафик":
- Ограничение на входящий трафик, Кбит/с — если поле пустое, значение берётся из поля Входящий трафик, Кбит/с. Если и это поле пустое, в VMmanager 6 передаётся скорость "0", которая полностью снимает ограничение;
- Ограничение на исходящий трафик, Кбит/с — если поле пустое, значение берётся из поля Исходящий трафик, Кбит/с. Если и это поле пустое, в VMmanager 6 передаётся скорость "0", которая полностью снимает ограничение.
Чтобы установить или снять ограничение вручную, используйте команды из раздела "Операции". Они содержат дополнительные проверки валидности и защиту от несогласованности данных.
Операции
Для установки и снятия ограничения услуги существуют следующие операции:
- activate_statlimit— готовит данные, отправляет запрос в VM6 для ограничения скорости. Если VM6 присылает ответ об успешном изменении скорости, вызывается операция- post_activate_statlimit
- post_activate_statlimit— добавляет запись в таблицу- item_limitationоб ограничении
- deactivate_statlimit— готовит данные, отправляет запрос в VM6 для снятия ограничения скорости. Если VM6 присылает ответ об успешном изменении скорости, вызывается операция- post_deactivate_statlimit
- post_deactivate_statlimit— удаляет запись об ограничении в таблице- item_limitation
Функция processingmodule.statlimit.activate  вызывает операцию  activate_statlimit . Функция  processingmodule.statlimit.deactivate  вызывает операцию deactivate_statlimit
Операции с префиксом post_ отличаются от основных операций (activate_statlimit и deactivate_statlimit) количеством попыток выполнения. Основные операции проверяют успешность установки и снятия ограничения на стороне VMmanager 6 и автоматически повторяются при ошибке. Операции с префиксом post_ выполняются однократно, после выполнения изменяется таблица БД item_limitation. Устанавливайте или снимайте ограничение вручную командами:
- для включения ограничения:
/usr/local/mgr5/sbin/mgrctl -m billmgr processingmodule.statlimit.activate module=pmvmmgr6 item=123 addon_name=bandwidth- для снятия ограничения:
/usr/local/mgr5/sbin/mgrctl -m billmgr processingmodule.statlimit.deactivate module=pmvmmgr6 item=123 addon_name=bandwidth