Мониторинг и логирование стратегии для "фасадного веб-сервиса"? - PullRequest
2 голосов
/ 06 октября 2009

Я работаю над "фасадным веб-сервисом", и мне нужно переосмыслить его часть.

Контекст - мой веб-сервис (назовем его «FacadeWebservice») - это внутренний веб-сервис, разработанный для того, чтобы скрыть сложность других веб-сервисов от моей системы:

  • Мой FacadeWebservice , звонки ExternalWebserviceA , ExternalWebserviceB , и вскоре потребуется вызвать ExternalWebserviceC .
  • ExternalWebserviceA , ExternalWebserviceB и ExternalWebserviceC являются внешними веб-сервисами; они могут быть изменены и простои.

Сложность становится все выше и выше, и мне нужно переосмыслить способ наблюдения за моим FacadeWebservice и внешними веб-сервисами. Мне нужно:

  • полное представление о состоянии моего приложения (количество звонков, отправленных кодов ошибок)
  • хорошая идея о том, что происходит с внешними веб-сервисами (время простоя внешних веб-сервисов, коды откликов, полученные моим веб-сервисом - например, один из них часто в течение некоторого времени переходит в "техническую ошибку / только для чтения")
  • в основном, простой вид / инструмент, который показывает общее состояние.
  • доступность сервиса в значительной степени покрыта (поэтому мне не нужны такие приложения, как Nagios), я хочу знать, что происходит на уровне приложений.

Я думал об использовании JMX в моем FacadeWebservice - это может дать мне несколько интересных графиков и статистики.

Это путь? Или хорошей стратегии ведения журнала достаточно для этой задачи (даже если внешние изменения являются большой частью моей проблемы)?

Любой совет или опыт по этому вопросу?

Ответы [ 3 ]

2 голосов
/ 08 октября 2009

Это довольно сложное требование, но вы можете попробовать JavaMelody, http://javamelody.googlecode.com

  • «статус приложения (количество вызовов, отправленных кодов ошибок)»: да, через количество вызовов http и ошибок http
  • статистика "внешних веб-сервисов": да, это можно сделать с помощью JavaMelody через перехватчики, если вы используете EJB3 или Spring
  • JavaMelody осуществляет мониторинг на уровне приложений и имеет «графики и статистику»: см. Скриншоты
2 голосов
/ 06 октября 2009

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

Недостатком является то, что стандартная консоль (которую вы получаете вместе с вашей версией Java) довольно ограничена. Он может делать все что угодно, но не очень хорошо.

Мое решение состояло в том, чтобы создать простую страницу HTML, которая показывает эти данные. Он имеет следующие преимущества:

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

  2. Я могу использовать любой веб-браузер для просмотра (дома, в интернет-кафе, на мобильном телефоне)

Основным недостатком является то, что сложно отображать сложные данные (например, графики и тренды).

[EDIT] Тем не менее, JMX поддерживает отображение графиков и трендов, но не имеет памяти. Итак, вы понимаете, что происходит с момента запуска вашей консоли JMX. Если вам нужно заглянуть в прошлое, вы должны постоянно где-нибудь запускать консоль JMX.

В этом случае может быть проще добавить модуль рендеринга графики на «простую HTML-страницу», где вы можете нарисовать то, что вам нужно.

1 голос
/ 08 октября 2009

Я не знаю, является ли это вариантом, но похоже, что вам нужны некоторые функции, предлагаемые компонентом ESB:

  • Агрегирование, составление и оркестровка веб-сервисов
  • Мониторинг (количество звонков, работоспособность прокси-сервисов и т. Д.)
  • Консоль управления
  • и т. Д.

Может быть, вам следует проверить что-то вроде ServiceMix, которое можно отслеживать через JMX (см. Использование консоли JMX с ServiceMix ):

alt text
(источник: apache.org )

или другие коммерческие инструменты ( Mule ESB Enterprise , ALSB Oracle Service Bus ...).

...