"Документация NetAMS" - читать интересную книгу автора

[service billing]

NeTAMS разрабатывался изначально не как система биллинга, а как система учета трафика. Вследствие этого основными учетными единицами являются юниты. К сожалению, концепции юнитов, имеющих основным свойством статический IP–адрес, не достаточно для реализации полноценного биллинга. Для решения проблемы был организован новый сервис, service billing, основной целью которого стала «правильная» поддержка других типов учетных единиц — пользовательских аккаунтов.

Как сервис биллинга интегрируется в ядро NeTAMS:

1. Создается и поддерживается структура аккаунтов, где каждый аккаунт представляет собой учетную запись пользователя, имеющую следующие параметры:

а) имя, идентификатор, описание

б) индекс текущего тарифного плана, и того который вступит в действие со след. месяца

в) баланс

г) даты создания, модификации и прочее

д) список ассоциированных юнитов

е) емаил, пароль

ж) статус

2. При создании аккаунта необходимо привязать к нему один или несколько юнитов, по которым будет осуществлен учет трафика (юниты имеют IP–адрес и список политик учета трафика). При необходимости юниты создаются автоматически через веб–интерфейс.

3. Каждый аккаунт, если не включена его добровольная блокировка, имеет активный тарифный план (и план «на будущее»). Тарифный план характеризуется именем, описанием и списком «подпланов». Этим достигается возможность создания «гибких» планов.

4. Каждый подплан характеризуется:

а) политикой учета трафика. Она автоматически выставится для каждого юнита, который принадлежит соответствию «юнит–аккаунт–план–подплан»

б) количеством включенного в абонентскую плату трафика (раздельно входящий/исходящий, значение в мегабайтах или без лимита)

в) месячная абонентская плата: правило съема этой платы (единовременно/ежедневно и др.)

г) плата за превышение трафика, включенного в аб. плату, в у.е. за мегабайт (раздельно входящий/исходящий; «бесплатно»)

Набор скриншотов с веб–интерфейса управления биллингом:

• Сведения об аккаунте

• Настройки тарифного подплана

• Настройки тарифного плана

• Список юнитов

• Политики учета

• Лог–файл действий с аккаунтом

• Управление отдельным аккаунтом

• Карточка пользовательских сведений об аккаунте; задается шаблоном

subplan N

fee NNN

spread { monthly | daily | hourly }

included { XXX | unlimited } sum |

[ { XXX | unlimited } in ] [ { XXX | unlimited } out ] }

policy MMM

overdraft [ AA in ] [ BB out ] [ CC sum ]

adjust–included {yes|no}

adjust–fee {yes|no}

Команда subplan формирует тарифный подплан, из которого потом можно будет создать сложный тарифный план. Номер подплана N есть короткое число (это НЕ oid).

• fee NNN — определяет количество денег «абонентской платы», снимаемых за месяц, по данному подплану.

• spread { monthly | daily | hourly } - определяет, как будут сниматься эта «абонентская плата» — раз в месяц, раз в неделю или раз в час (в последних двух случаях снимается доля, пропорциональная указанному периоду)

• included { { XXX | unlimited } sum } | [ { XXX | unlimited } in ] [ { XXX | unlimited } out ] } - определяет, сколько (кило-, мега-, гига-)байт трафика включено в абонентскую плату. Величина XXX указывает на точное значение (возможны спецификаторы K, M и G после цифры). unlimited показывает, что включен весь трафик (нет ограничения). Задается ИЛИ раздельно для входящего и выходящего трафика, ИЛИ одно значение для суммы.

• policy MMM — задает заранее описанную политику acct–policy сервиса processor, которая будет применена для учета трафика для юнитов, принадлежащих клиенту.

• overdraft [ AA in ] [ BB out ] - определяет, сколько будет стоить превышение трафика (ИЛИ раздельно входящего и исходящего, ИЛИ суммы) в случае, если скачано больше, чем описано в параметре included

• adjust–included {yes|no} - определяет, будет ли проводиться перерасчет включенного в субплан абонентского трафика, если клиент подключился в середине месяца. Если значение равно «yes» (по умолчанию), то включенный трафик пересчитается пропроционально количеству дней, оставшихся до конца месяца. В противном случае клиент получит возможность бесплатно скачать весь предвключенный трафик.

• adjust–fee {yes|no} - определяет, будет ли проводиться перерасчет масячной абонентской платы, если клиент подключился в середине месяца. Если значение равно «no» (по умолчанию), то абонентская плата спишется полностью независмо от дня подключения, иначе — пропорционально числу оставшихся до конца месяца дней.

Команда subplan не умеет обрабатывать сразу все параметры, поэтому при конфигурировании придётся давать эту команду несколько раз с разными параметрами. Параметры этой команды группируются следующим образом:

subplan N fee NNN spread { monthly | daily | hourly }

subplan N included [ { XXX | unlimited } in ]

[ { XXX | unlimited } out ]

subplan N policy MMM

subplan N overdraft [ AA in ] [ BB out ]

plan N

name AAA

description BBB

[no] subplan N1 N2 N3 …

Команда plan формирует тарифный план, составляя его из подпланов. Номер плана N есть короткое число (это НЕ oid).

• name AAA — задает «короткое» имя для тарифного плана (до 8 символов)

• description BBB — задает «длинное имя», или описание, для плана. Значение BBB можно указывать в кавычках.

• [no] subplan N1 N2 N3 — задает список из ранее определенных тарифных подпланов, формирующих этот план. Каждый тарифный подплан может участвовать одновременно в нескольких тарифных планах. Если указана опция no, то указанный список подпланов будет удален из плана.

Так же как и предыдущая команда, команда plan при конфигурировании должна быть разделена на следующие подкоманды:

plan N name AAA

plan N description BBB

plan N subplan N1 N2 N3 …

account NNN

name AAA

[description BBB]

password CCC

plan MM1

nextplan MM2

[beblock | block | unblock]

balance {add|remove|set} ZZ

[credit–limit ZZ]

unit {name AAA | oid NN} {add | delete }

Команда account создает аккаунт, или запись о клиенте, в базе NeTAMS. Эта информация хранится в SQL, не в конфигурационном файле. Число NNN представляет собой объект OID, являющийся ключом в базе данных.

• name AAA — задает короткое имя аккаунту

• description BBB — задает описание аккаунта

• password CCC — задает пароль на доступ аккаунта с своей статистике

• plan MM1 — задает текущий тарифный план (номер MM1 должен соответствовать описанному выше плану)

• nextplan MM2 — задает тарифный план на следующий месяц — таким образом реализуется смена плана клиентом

• [ beblock | block | unblock ] - задает текущее состояние аккаунта: добровольно_блокирован, блокирован_администратором и разблокирован (активен)

• balance { add | remove | set } ZZ — позволяет добавлять, вычитать заданную сумму с баланса (лицевого счета) клиента, или выставлять баланс в указанное значение.

• [credit–limit ZZ] - указывает минимально допустимый баланс клиента, когда он еще не отключается (отрицательное число или 0, т.е. нет кредита).

• unit {name AAA | oid NN} {add | delete } - добавляет или отнимает заранее созданные в service processor юниты, делая их принадлежащими текущему аккаунту.

Подобно командам subplan и plan, команда account конфигурирует параметры аккаунта по одному параметру за команду:

account NNN description BBB

account NNN password CCC

account NNN plan MM1

account NNN nextplan MM2

account NNN [beblock | block | unblock]

account NNN balance {add|remove|set} ZZ

account NNN unit {name AAA | oid NN} {add | delete }

delay NN

Устанавливает интервал времени ( в секундах), который будет использоваться между циклами проверки аккаунтов.

default–credit–limit XX

Устанавливает кредитный лимит для всех вновь создаваемых аккаунтов, т.е. порог баланса при котором будет производиться отключение. По умолчанию значение равно нулю, т.е. кредит пользователю не выдается. Величина кредитного лимита XX должна быть отрицательной. Действует только на вновь создаваемые аккаунты. Для каждого аккаунта индивидуально в дальнейшем можно изменить этот лимит при помощи команды credit–limit.

storage MM {all | plans | subplans}

Указывает, в каком хранилище (storage) будет сохраняться биллинговая информация, и какая именно.

show plan [N [account|list]]

Выдает информацию о тарифном плане (планах):

fedora:~#netamsctl show plan

Plan ID 000001 Name «aaa» Desc. «super–puper tarifny plan»

Subplan ID 000001

Fee 10.000000, spread: 'M', policy ip(0B23C6)

Incl. 0 in 0 out, Over. 0.000000/M in 0.000000/M out

Plan ID 000002 Name «bbb» Desc. «plan dlya aktivnyh»

Subplan ID 000001

Fee 10.000000, spread: 'M', policy ip(0B23C6)

Incl. 0 in 0 out, Over. 0.000000/M in 0.000000/M out

Subplan ID 000002

Fee 15.000000, spread: 'M', policy www(0C9869)

Incl. 0 in 0 out, Over. 10.000000/M in 0.000000/M out

show account {XXX [full][bdata] |list}

Выдает информацию о аккаунте (аккаунтах):

fedora:~#netamsctl show account client1 full

Name a1 (01BFEF) BLOCKED SYNC bal: 100.00 cred_lim: — 5.00 plan: aaa

Plan aaa 000001 1107234000 Nextplan aaa 000001 1107234000

Changed 1108397456 Blocked 1108397423 Created 1108397423

Email — Password — Units: client1 08944A