10 July 2014

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

Designing and refactoring
В данной статье хочу поделиться примером реализации мониторинга бизнес транзакций. Рассуждение поведу на примере стенда с банковским приложением, для мониторинга транзакций буду использовать продукт компании Hewlett-Packard — HP Transaction Vision.

Сразу к делу!


Есть банковское приложение, разработанное на платформе j2ee, которое крутится на сервере приложений IBM WebSphere Application Server версии 8.5, использует IBM WebSphere MQ и Oracle database.

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

Транзакция – атомарная последовательность действий, т.е. такая последовательность, которая выполняется целиком либо ничего не выполняется.

Теперь демонстрирую интерфейс своего банковского приложения, показываю, что происходит в рамках нашей транзакции со стороны пользователя:
  1. Авторизуемся;
  2. Переходим в интерфейс перевода денежных средств;
  3. Выбираем счет списания, счет получателя, указывает сумму;
  4. Подтверждаем операцию;
  5. Видим изменения состояния счета или сообщение об ошибке операции.

Ниже, что видит пользователь:






Что происходит со стороны системы:


  1. Банковское приложение получает HTTP запрос о переводе указанной суммы со счета 1 на счет 2;
  2. Банковское приложение перенаправляет запрос на сервер IBM WebSphere MQ в очередь Q1;
  3. Message Driven Bean (MDB) забирает запрос из очереди Q1;
  4. MDB выполняет необходимые действия по переводу денежных средств, в моем случае это набор SQL запросов к базе данных Oracle;
  5. О результате перевода денежных средств MDB сообщает банковскому приложению через очередь Q2, т.е. о результатах транзакции сообщается именно в нее;
  6. Почитав сообщение в очереди Q2, банковское приложение возвращает результат транзакции.

Ниже иллюстрация описанных событий в привязке к инфраструктуре:


Те же события, но на диаграмме последовательности:


HP Transaction Vision


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


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

Для наглядной демонстрации результатов я проводил три вида тестирования.
  1. Все данные вводятся корректно. В конце операции банковское приложение сообщает об успешном выполнении транзакции;
  2. Умышленно допускаю ошибку, указываю сумму перевода больше, чем есть на счету списания. В конце операции банковское приложение сообщает об ошибочном выполнении транзакции;
  3. Останавливаю приложение MDB, т.е. создаю ситуацию, когда запросы на выполнение транзакции «зависают» в очереди IBM WebSphere MQ – Q1. Потом обратно включаю приложение MDB, тем самым увеличиваю время выполнения транзакции.

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

Примеры событий поступающих в единую точку обработки:


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


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


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


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

HP Business Process Insight


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

Вот какую картинку от HP BPI могу показать:


Всех кому было интересно и у кого возникли вопросы, с удовольствием приглашаю к диалогу.
Реф к предыдущей теме
Tags:мониторингмониторинг транзакцийHP Transaction VisionHP TVHP Business Process InsightHP BPI
Hubs: Designing and refactoring
+8
7.1k 34
Comments 4
Popular right now
Senior Software Engineer - BrightScript (Roku)
from 3,000 to 4,500 $UscreenRemote job
Разработчик Python/Django
from 80,000 ₽PrintumRemote job
Python Developer (Computer Vision)
from 150,000 to 250,000 ₽NZT GroupМосква
DevOps Engineer
from 150,000 ₽ВипсервисМоскваRemote job
Top of the last 24 hours