nas_event_daemon

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (4)

просмотр истории страницы
h1. Для чего нужен nas_event_daemon

Демон отправки событий *nas_event_daemon* забирает из стека(таблица базы "events_stack") команды для отправки и вызывает функции [session|CarbonBilling:Интеграция оборудования интернет] скрипта, передавая в него параметры абонента и NAS

h1. Описание работы

nas_event_daemon работает следующим образом:

{code}ps aux |grep nas{code}

Не должно со временем расти.

{note}* При управлении оборудованием по CoA средствами radiclient не должно возникать проблем с параллельной отправкой команд
* При управлении оборудованием по ssh или telnet могут возникать проблемы: ssh может работать недостаточно быстро, telnet часто имеет ограничение на одновременное количество сессий{note}

h1. Отладка

Узнать количество команд в стеке с группировкой по типу команды можно выполнив скрипт *event_count.sh*:
{code}chroot /app/asr_billing/ event_count.sh{code}
Вывод будет приблизительно следующий:
{code}# compact stack
TOTAL

COUNT
0

# main stack

COUNT EVENT_TYPE
52 b_negbal
4 b_sys
44 u_b_negbal
207 user_accept
75 user_add
16 user_del
50 user_drop
73 user_edit
1 user_rate_set_cancel
168 user_redirect
89 user_redirect_cancel
122 usluga_activated
28 usluga_add
3 usluga_deactivated
4 usluga_del
1 usluga_disabled
28 usluga_recalc

TOTAL

COUNT
965{code}
Скрипт смотрит два стека:
# *compact stack*
# *main stack*

После сгруппированного списка по каждому стеку можно увидеть суммарное количество команд.

Структура таблиц:
# *compact stack* (таблица базы данных EVENTS_STACK_COMPACT) - изначально команды для отправки на оборудование добавляются в compact stack, его наполняют различные подсистемы (radiusd, sync_nasd) базовыми данными по событию которое нужно отправить на оборудование и обработчик абонентов переносит их в main stack дополняя нужными данными:
#* *ABONENT_ID* - ID абонента
#* *USER_ID* - ID учетной записи
#* *CMD* - [Команда для выполнения|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=51708843|] (как в примере выше, названия команд в основном и компактном стеке одинаковы)
#* *USER_IP* - IP абонента
#* *NAS_IP* - IP NAS/BRAS
#* *USLUGA_ID* - ID услуги (указывается при изменении статусов услуг абонента в событиях usluga_add, usluga_activated и т.д.)
#* *ACCT_SESSION_ID* - Acct-Session-ID (уникальный ID сессии, используется при авторизации по RADIUS)
# *main stack* (таблица базы данных EVENTS_STACK) - этот стек формируется из compact stack, к нему добавляются расширенные данные для передачи в скрипт управления оборудованием, после чего они обрабатываются демоном nas_event_daemon и удаляются из стека
#* *ABONENT_ID* - ID абонента
#* *USER_ID* - ID учетной записи
#* *EVENT_TYPE* - [Команда для выполнения|CarbonBilling:Состояния пользователей, услуг и команды управления] (то же что CMD в compact stack)
#* *NAS_TYPE* - ID [типа NAS или OSS схемы|CarbonBilling:Интеграция оборудования интернет]
#* *EVENT_DATE* - дата добавления события в main stack
#* *PARAMS* - набор переменных, передаваемый в скрипт событий
#* *OWNER_SCRIPT* - подсистема [воркера|CarbonBilling:Worker] добавившая событие в стек
#* *OWNER_FUNCTION* - функция этой под системы в которой вызвано добавление события в стек
#* *NAS_ID* - ID NAS/BRAS
#* *TRY_COUNT* - количество выполненных попыток отправки команд