Поиск удобного решения по мониторингу нескольких серверов Asterisk привел к замечательному инструменту:
Осмотр возможностей
MonAst позиционируется разработчиками как инструмент мониторинга, который действует как панель оператора для Asterisk. Распространяется по лицензии BSD. Проект написан с использованием Python (демон для связи с Asterisk по AMI), PHP, JS (AJAX).
Из возможностей просмотра (в режиме real-time) — следующее:
- Работа с несколькими серверами (с помощью переключения между ними)
- Многопользовательский режим с указанием прав доступа
- Отображение пользователей и пиров (SIP, IAX, DAHDI, Khomp, etc...)
- Отображение активных каналов и вызовов (с именем канала и CallerID)
- Каналы конференции (с отображением подключённых пользователей)
- Припаркованные звонки (Parked Calls)
- Очереди (с отображением статистики, участников и ожидающих клиентов)
Из возможностей выполнения операций:
- Выполнение (инициация) вызовов
- Трансфер вызовов
- Сброс вызовов
- Паркование вызовов
- Прослушивание звонков (Spy Calls)
- Приглашение участников в конференцию
- Удаление участников конференции
- Добавление пользователей (или пиров) как участника любой очереди
- Удаление участников из очереди
- Постановка и снятие с паузы участников очереди
- Выполнение CLI команд
Как видно — список возможностей достаточно обширный.
Установка
Подопытной системой у нас будет чистая Ubuntu 10.10 с базовыми программами и обновлениями. MonAst не обязательно ставить на хосте с Asterisk. У меня, к примеру, MonAst стоит локально на ноутбуке — и я прекрасно мониторю все наши 6 серверов с Asterisk.
Прежде чем приступить к установке MonAst — пробежимся по требованиям.
Так как демон, с помощью которого происходит обмен между Asterisk и MonAst (посредством AMI — Asterisk Manager API) написан на Python, то первым делом проверяем его присутствие в системе:
Если видим нечто подобное — значит все в порядке. Если по каким то причинам его нет — выполняем команду:
Двигаемся дальше.
Так как все это будет отображатся через web-интерфейс, то нужно иметь установленный http сервер с поддержкой php, а так же php-pear. Если ранее данного комплекта не стояло — выполняем команду (дополнительно поставим mc — для удобства навигации и редактирования):
Ну и напоследок — установка зависимостей для обсуждаемого продукта. Этот список у нас невелик:
- Twisted Python 10.1+
- zope.interface 3.6+
- Starpy SVN-Trunk
- PHP PEAR Packages: (HTTP_Client)
Пакет zope.interface уже стоял в системе (был в наличии из коробки).
Ставим пакет HTTP_Client:
Как видим — в процессе установки говорит об устаревании пакета и предлагает поставить более новый:
Пакеты Twisted и StarPy будем ставить из исходников. Но при установке выявились еще зависимости, которые и исправляем (попутно перейдем в режим суперпользователя):
Если видим надпись «Finished processing dependencies for Twisted==12.0.0» — значит установка прошла успешно и переходим дальше. Если выскакивает ошибка — то скорее не хватает какого-то компонента. Проверте по списку — все ли зависимости установлены? Идем дальше:
Ну и самый главный виновник торжества. На момент написания актуальная версия — 3.0b4:
В процессе установки скрипт задаст пару вопросов относительно путей. Если предложенные им варианты устраивают — соглашаемся. Иначе прописываем свои данные. Я лишь изменил путь, куда ложатся .php файлы
MonAst HTML path [/var/www/html/monast]: /var/www/asterisk/monast/
Может показаться что на этом установка закончена. Но не тут то было. Стартовый скрипт /etc/init.d/monast ставится лишь для систем SuSE, RedHat, Debian, Gentoo, Slackware, FreeBSD. Но не Ubuntu и ей подобные. Потому копируем скрипт от Debian и добавляем его в автозагрузку:
Вот теперь установка у нас окончена. Можно переходить к настройке.
Настройка
Перво наперво нужно выполнить настройку самого Asterisk, дабы сабжевое ПО могло успешно подключится и обмениваться информацией. На сервере с Asterisk переходим по пути /etc/asterisk/ и правим файл manager.conf. Если серверов несколько — делаем подобные поправки на нужных.
После чего перезагрузим конфигурацию Asterisk для модуля manager:
На этом настройка Asterisk закончена. Переходим к конфигурации самого MonAst'а.
Файл с параметрами находится по пути /etc/monast.conf. Его и правим. Скажу наперед — сложностей в настройке не возникло, приведенные в файле комментарии четко описывают тот или иной параметр. Но для примера приведу свой пример файла
Сохраняем изменения и перезагружаем демон:
Все. Можно подключаться и проверять. Открываем браузер и в строке адреса вбиваем: http://localhost/asterisk/monast/
Если ставили «auth_required = true» то вводим логин, пароль — и наслаждаемся рабочим инструментом :)
Важное замечание. В режиме «без аутентификации» все, кто работают в панели оператора MonAst — имеют полные права, т.е. являются «суперпользователями». А как мы знаем «Оружие, данное в неумелые руки, может навредить». Будьте внимательны.
Так же в файле /var/www/asterisk/monast/lib/config.php находятся параметры адреса и порта, где работает демон monast.py, параметры отображение вкладок debug и cli, а так же некоторых не менее интересных параметров.
Обзор возможностей
Теперь же пробежимся по возможностям данного программного продукта.
После входа на web-интерфейс мы видим несколько вкладок. А если быть точнее:
- Mixed Pannels — Вкладка с практически всем разделами сразу. Удобство заключается в том, что можно отобразить лишь нужные и, не переключаясь, видеть необходимую информацию в одном месте.
- Peers/Users — Просмотр и управление достуными пирами и пользователями.
- Meetme Rooms — Просмотр и управление конференциями
- Channels/Calls — Просмотр и управление активными вызовами и поднятыми каналами.
- Parked Calls — Просмотр и управление припаркованными вызовами
- Queues — Просмотр и управление очередью звонков
- Asterisk CLI — Командная строка Asterisk. Если у пользователя есть права выполнения команд в консоли, то именно здесь можно ввести нечто схожее с «core show version» :)
Разобраться в возможностях не составляет труда и, возможно, даже лучше будет если Вы сами пробежитесь и опробуете доступные функции — так вы четко будете понимать что и как работает. Но я все таки опишу парочку интересных из них :)
Originate call (инициирование вызова). Из названия функции ясно — можно соединить внутреннего абонента с каким либо номером (если он, номер, сможет обработаться Вашим dialplan'ом). Для выполнения функции нужно нажать правой кнопкой мыши (далее по тексту — пкм) на нужном аккаунте и выбрать соответствующий пункт. В появившемся окне вводим нужный номер и, вуаля — у выбранного человека звонит телефонный аппарат, он берет трубку и Asterisk соединяет его с выведенным нами номером. Так же можно перетащить мышкой один аккаунт на другой и, согласившись — инициировать соединение между ними.
Meetme Rooms (комната конференции). Перейдя в данный раздел можно управлять уже созданными конференциями, либо создать новую и пригласить туда определённых участников. Для создания своей конференции — переходим в соответствующий раздел, нажимаем «Create Dynamic Meetme» и в окне вводим запрашиваемую информацию. Нажали «Ок» — и процесс пошел-поехал :)
Spy (прослушивание вызова). Что она делает? Из названия можно понять — дает возможность подключится к выбранному разговору и прослушать речевой поток. Функция может быть полезна при использовании в call-центрах для контроля и проверки агентов. При этом в процессе разговора собеседники даже не подозревают о факте прослушивания. По крайней мере я, тестируя данную возможность, никакого сигнала или уведомления не слышал. Для того, чтобы пользователь панели имел право на прослушивание — нужно чтобы в поле roles его прав доступа присутствовало spy. Потому для того, чтоб ограничить использование данной функции с нехорошим умыслом — включайте аутентификацию для доступа к панели и давайте права на ее использование только доверенным для этого пользователям. Начальнику отдела, например :)
Заключение
MonAst, как и альтернативные проекты с подобной функциональностью (FOP, Links и пр.) однозначно имеет право на существование и, соответственно, использование в рабочем процессе.
Простота использования, относительная лёгкость в установке и настройке, мониторинг нескольких серверов с одного места — все это, в большинстве случаев, будет более чем достаточно.
Ссылки
- Официальный сайт проекта: http://monast.sourceforge.net/
- Страница проекта Twisted Python: http://twistedmatrix.com
- Страница проекта Starpy for Twisted: http://sourceforge.net/projects/starpy/
UPD: Исправил пару досадных ошибок по тексту.