Система Телефонного Мониторинга И Отчетности Xima Chronicall Для Экстренного Устранения Неполадок

Приветствую вас, читатели и писатели Хабрахабра! Сейчас я учусь, параллельно подрабатывая системным администратором, в интересном стартапе — MyMoneyPark. Естественно, поначалу эта работа включает в себя все возможное, в том числе и «эникеизм», но это опыт, который вряд ли принесет ученику вред. Одно из направлений, которым я руковожу, — телефония.

Для нас очень важна стабильность телефонной системы, тем более, что проект стартовал чуть больше трёх месяцев назад. Кроме того, чтобы иметь представление о количестве звонков и необходимой «мощности» для их обработки, чтобы не потерять ни одного позвонившего клиента, или иметь возможность создавать графики для каждого сотрудника, мы нашли система мониторинга и отчетности от XIMA очень полезна.

А о дефектах, которые мне пришлось проделать при работе с этой системой, я расскажу под катом.



О системе

«Chronicall» — разработка XIMA, позволяющая хранить историю звонков, строить отчеты и просматривать подробную информацию о каждом совершенном звонке.

Содержит ряд дополнений, которые нас, как потребителей, на данный момент не интересуют. Как и любое программное обеспечение, «Хроникал» имеет ряд ошибок и недостатков, незаметных на первый взгляд, но, тем не менее, иногда пагубно сказывающихся на построении столь важных для нас отчетов.

Казалось бы, самая простая ситуация: руководителю линии обслуживания клиентов (LOC) был предоставлен «базовый» доступ к утилите, работающей через Java, в виде апплета.

Первое, что он сделает, это ознакомится с продуктом, и вполне успешно - после первой перезагрузки система откажется запускаться.



С чего все началось

Утром, после необходимых обновлений, потребовавших перезагрузки, я получил письмо от начальника ЛОК о том, что система «Хроникал» отказалась запускаться, а именно ее часть со списком доступных отчетов, с жалобой на отсутствие подключение к серверу.

Сообщение было простым, выглядело оно просто: «Похоже, вы потеряли соединение с Хроническим Сервером.

Пожалуйста, убедитесь, что вы подключены к сети».



Первые шаги

Не найдя ответов в гугле и не получив ответов на свои вопросы в XIMA-FAQ, я приступил к самостоятельному глубокому устранению неполадок.

Было бы очень легко предположить, что все запросы к Java-апплету обслуживаются HTTP-сервером.

Кстати, в Chronicall HTTP-сервер — tomcat. Поэтому прямой запрос на URL со списком доступных отчетов показал банальную ошибку сервера — 503. Возможно, кто-то поступил бы иначе, сразу приступив к изучению логов сервера, но, увидев ошибку подключения, невольно думаешь о проблемах на сервере.

сеть.

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

Продолжая поиск, вторым шагом было просмотр логов HTTP-сервера, где была обнаружена ошибка.

Для меня немного странно, что на первый взгляд на ошибку, которую выдает Java-апплет, сложно догадаться, что на самом деле ее вызывает. Краткая выдержка из логов ШВЕРВИГЕНД: StandardWrapper.Throwable java.lang.ClassCastException: javax.swing.tree.DefaultMutableTreeNode не может быть приведен к com.ximasoft.chronicall.reports.manager.ReportNode на com.ximasoft.chronicall.reports.manager.ReportManager.ensureUniqueFolderIDs (ReportManager.java:1364) на com.ximasoft.chronicall.reports.manager.ReportManager.ensureUniqueFolderIDs (ReportManager.java:1364) в com.ximasoft.chronicall.reports.manager.ReportManager.init (ReportManager.java:1336) в javax.servlet.GenericServlet.init(GenericServlet.java:212) Сама ошибка меня не беспокоила; имея опыт отладки Java-приложений, я мог бы попробовать вручную найти то, что мешает запуску чудо-утилиты.

Но, к сожалению, не слушая разума, я начал с перезапуска сервиса, переустановки JVM, чистки кода и поиска подводных камней в виде несовместимости с разными версиями Java-машины, в общем, всего того, что предлагала XIMA. -FAQ-сайт производителя и тематические форумы.

Ничего не помогло.

Последнее, что я сделал, это, естественно, отправил разработчикам отчет об ошибке с подробным описанием проблемы.

Я поверил лозунгу багрепорта о скорости их работы, думал, что они ответят очень быстро, но ошибся, ответ пришел через несколько недель, о чем расскажу позже.



Разумная мысль

Моё «лёгкое» исследование показало, что неработоспособным остаётся только редактор отчётов, который содержит дерево выбора, состоящее из доступных отчётов, сгруппированных по типам в папках.

При этом данные записывались в базу данных, отчеты по расписанию работали прекрасно.

Все работало, кроме редактора (тех самых отчетов).

К счастью, на этом этапе исследования я вспомнил, что «сделал» и изменил наш руководитель линии обслуживания клиентов:

Система телефонного мониторинга и отчетности XIMA Chronicall для экстренного устранения неполадок

Именно тогда нам удалось приблизиться к решению этой проблемы.

На рисунке выше показано дерево отчета с новой папкой «Новая папка» в самом низу.

Эту папку создал руководитель ЛОК во время исследования платформы.

Причем, как видите, создать его можно, но удалить — имеющийся у нас функционал этого не позволяет. Также данный функционал не позволяет использовать эту папку по прямому назначению – для группировки отчетов.

Теперь становится понятно, что функция «ensureUniqueFolderIDs» из логов, видимо, частично отвечает за загрузку списка с рисунка выше.

Остаётся только найти откуда загружаются данные для дерева выбора и попытаться исправить ошибку.



Устранение

Используемая схема базы данных не указывает список возможных отчетов.

Поэтому, пролистав папки файловой системы, я наткнулся на одну под названием «отчеты».

Он содержит множество файлов без расширений, несколько шаблонов (как следует из названия) и ряд файлов JASPER, по-видимому, для JasperReports с открытым исходным кодом.

Но больше всего меня привлек файл под названием «модель».

В нем среди бинарного «мусора» я нашел названия своих папок и имена, входящие в папки отчета.

Удаление этого файла помогло подтвердить мое предположение — именно из этого файла программа загружает дерево.

Это исправило проблему - после перезагрузки автоматически создавался новый файл, но, к сожалению, он оказался пустым, как и дерево отчетов.

Все дело в том, что файл «модели», видимо, содержит сериализованные древовидные данные, что не давало мне возможности «легким движением руки» выцарапать из него ненавистную «Новую папку».

Перебирать побайтно пришлось бы долго, рабочий день подходил к концу, и оставлять все на следующий день было бы неразумно.

Единственное, что могло ускорить процесс, это установочный файл.

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

Поэтому, разобрав его на файлы, первым делом я заменил файл «модели».

Эта процедура не только вернула все на свои места, но и добавила новые, бесполезные в нашем случае отчеты.



Выводы

С одной стороны, понятно стремление разработчиков максимально ограничить клиента, не купившего «расширенную» лицензию.

С другой стороны, простейшая мелочь, от которой невозможно избавиться без правки файлов и длительных поисков хоть каких-то зацепок, но которая приводит к полной неработоспособности системы, да еще и вводит в заблуждение «неправдоподобным» сообщением об ошибке.

Маленькая вещь, которая может остановить работу на несколько часов, если разобраться самостоятельно и повезет, или на несколько недель, если воспользоваться отчетом об ошибке.

Огромную долю юмора в эту историю добавляют разработчики, соизволившие отреагировать на сообщение об ошибке, как уже отмечалось, спустя несколько недель.

Восхитившись проделанной работой, они за простые бонусы предложили нашей компании занять место их бета-тестера.

Но из-за нехватки времени мы не смогли воспользоваться этой возможностью и нам больше не написали.

Почему появление этой папки так обескуражило программу, для меня остается загадкой по сей день; разработчики не удосужились дать мне внятный ответ, но надеюсь, они решили проблему.

Поэтому я очень надеюсь, что больше никому не придется сталкиваться с подобным явлением.



P.S.

Если я изначально пошел по неправильному пути, я приму любую критику.

Если есть более простые способы решения этой проблемы, мне бы очень хотелось об этом узнать.

Не судите слишком строго за свою первую статью.

Теги: #телефония #отчеты #avaya ip office #Разработка систем связи

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.