Мониторинг транзакций, my little success story

091bd29a370c868451404a9c8de4f190.pngВ данной статье хочу поделиться примером реализации мониторинга бизнес транзакций. Рассуждение поведу на примере стенда с банковским приложением, для мониторинга транзакций буду использовать продукт компании Hewlett-Packard — HP Transaction Vision.Сразу к делу! Есть банковское приложение, разработанное на платформе j2ee, которое крутится на сервере приложений IBM WebSphere Application Server версии 8.5, использует IBM WebSphere MQ и Oracle database.Банковское приложение через веб интерфейс позволяет управлять счетами клиентов. Мы рассмотрим операцию перевода денег с одного счета на другой, далее будем эту операцию называть транзакция.Транзакция — атомарная последовательность действий, т.е. такая последовательность, которая выполняется целиком либо ничего не выполняется.

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

Авторизуемся; Переходим в интерфейс перевода денежных средств; Выбираем счет списания, счет получателя, указывает сумму; Подтверждаем операцию; Видим изменения состояния счета или сообщение об ошибке операции. Ниже, что видит пользователь: 6bba3a3afd8d25bc383891dbe7b3d84b.pngbe610bdc841f4caad64357927d63ee66.png

1251f430cda61267d472ca79ef98bfb5.png

Что происходит со стороны системы: Банковское приложение получает HTTP запрос о переводе указанной суммы со счета 1 на счет 2; Банковское приложение перенаправляет запрос на сервер IBM WebSphere MQ в очередь Q1; Message Driven Bean (MDB) забирает запрос из очереди Q1; MDB выполняет необходимые действия по переводу денежных средств, в моем случае это набор SQL запросов к базе данных Oracle; О результате перевода денежных средств MDB сообщает банковскому приложению через очередь Q2, т.е. о результатах транзакции сообщается именно в нее; Почитав сообщение в очереди Q2, банковское приложение возвращает результат транзакции. Ниже иллюстрация описанных событий в привязке к инфраструктуре: 925c42ebba514bf44a7575ea5218923c.pngТе же события, но на диаграмме последовательности: c599db2beb776f64448d7cf007c39aa0.png

HP Transaction Vision Как я и говорил, у меня развернут продукт компании Hewlett Packard — HP Transaction Vision. Опишу теперь то, что выполняет HP Transaction Vision: Перехватывает HTTP вызовы банковского приложения; Перехватывает JMS вызовы банковского приложения и MDB; Перехватывает API вызова менеджера очередей — IBM WebSphere MQ; Перехватывает JDBC вызовы; Перехваченные сообщения отправляются в единое место обработки; Используя правила обработки событий, собирается информация о выполненных транзакциях: время, результат, сумма и т.д. Технические возможности, способы конфигурирования не является предметом обсуждения данной статьи, если и возникают вопросы по этой теме готов отвечать.

Для наглядной демонстрации результатов я проводил три вида тестирования.

Все данные вводятся корректно. В конце операции банковское приложение сообщает об успешном выполнении транзакции; Умышленно допускаю ошибку, указываю сумму перевода больше, чем есть на счету списания. В конце операции банковское приложение сообщает об ошибочном выполнении транзакции; Останавливаю приложение MDB, т.е. создаю ситуацию, когда запросы на выполнение транзакции «зависают» в очереди IBM WebSphere MQ — Q1. Потом обратно включаю приложение MDB, тем самым увеличиваю время выполнения транзакции. Предлагаю запомнить все три вида тестирования, т.к. я буду ссылаться на них, при дальнейшей демонстрации различных вариантов представления информации о транзакциях. Уточняю, показываю только картинки, которые нам демонстрирует продукт HP Transaction Vision.Примеры событий поступающих в единую точку обработки: 56c23ff885bebf7ebf46666f47729993.png

Список обнаруженных транзакций: 86b5c4ecfa7043c85d59c3606b6da93f.png

Суммарный отчет об обнаруженных транзакциях: a8da89b10faeb1c5b7ae73c1ba331889.png

Общая архитектура моего приложения, взаимодействие между компонентами (HP Transaction Vision и это может): c73e4f5a871193531e09b4fd4c4eca27.png

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

HP Business Process Insight Для полноты всей картины я развернул HP Business Process Insight (BPI), которой получает события о протекании транзакции из HP Transaction Vision. Именно HP BPI позволяет узнать на какой стадии и сколько транзакций в текущий момент находится + время обработки транзакции на каждом этапе.Вот какую картинку от HP BPI могу показать: 6584b9a5ca2c2b4bc2c2527961747161.png

Всех кому было интересно и у кого возникли вопросы, с удовольствием приглашаю к диалогу.Реф к предыдущей теме

© Habrahabr.ru