2

我正在开发“外观网络服务”,我需要重新考虑其中的一部分。

上下文 - 我的 web 服务(我们称之为“FacadeWebservice”)是一个内部 web 服务,用于隐藏我的系统中其他 web 服务的复杂性:

  • 我的FacadeWebservice调用ExternalWebserviceAExternalWebserviceB并且很快需要调用ExternalWebserviceC
  • ExternalWebserviceAExternalWebserviceBExternalWebserviceC是外部网络服务;它们可能会发生变化和停机。

复杂性越来越高,我需要重新考虑监控 FacadeWebservice 和外部 Web 服务的方式。我需要:

  • 我的应用程序状态的完整视图(调用次数、发送的错误代码)
  • 了解外部 Web 服务的情况(外部 Web 服务停机,我的 Web 服务收到的响应代码 - 例如,其中一个经常出现“技术错误/只读”一段时间)
  • 基本上,一个显示整体状态的简单视图/工具。
  • 几乎涵盖了服务可用性(所以我不需要像 Nagios 这样的应用程序),我想知道应用程序级别发生了什么。

我正在考虑在我的 FacadeWebservice 中使用 JMX——这可以为我提供一些有趣的图表和统计数据

这是要走的路吗?或者一个好的日志记录策略足以完成这项任务(即使外部更改是我问题的很大一部分)?

关于这个主题有什么建议或经验吗?

4

3 回答 3

2

JMX 的优点是可以运行命令和查询复杂数据。

缺点是标准控制台(与您的 Java 版本一起使用)非常有限。它可以做任何事情,但没有什么特别好的。

我的解决方案是创建一个显示该数据的简单 HTML 页面。它具有以下优点:

  1. 我可以轻松地格式化我想以对我最有用的方式查看的数据。

  2. 我可以使用任何网络浏览器查看(在家里,网吧,手机)

主要缺点是显示复杂数据(如图表和趋势)并不容易。

[编辑] 也就是说,JMX 支持显示图形和趋势,但它没有内存。因此,您将了解自从您启动 JMX 控制台以来发生的情况。如果您需要能够回顾过去,则必须始终在某个地方运行 JMX 控制台。

在这种情况下,将图形渲染模块添加到您的“简单 HTML 页面”中可能会更简单,您可以在其中绘制您需要的内容。

于 2009-10-06T08:23:08.440 回答
2

这是一个相当复杂的要求,但您可以尝试 JavaMelody,http: //javamelody.googlecode.com

  • “应用程序状态(调用次数,发送的错误代码)”:是的,通过 http 调用次数和 http 错误
  • “外部网络服务”统计:是的,如果您使用 EJB3 或 Spring,可以通过拦截器使用 JavaMelody 完成
  • JavaMelody 在应用程序级别进行监控,它具有“图表和统计信息”:见截图
于 2009-10-08T17:45:49.320 回答
1

我不知道这是否是一个选项,但看起来您需要 ESB 组件提供的一些功能:

  • Web 服务的聚合、组合和编排
  • 监控(调用次数、代理 Web 服务的运行状况等)
  • 管理控制台
  • 等等等等

也许您应该查看可以通过 JMX 监控的 ServiceMix 之类的东西(请参阅Using a JMX Console with ServiceMix):

替代文字
(来源:apache.org

或其他商业工具(Mule ESB EnterpriseALSB Oracle Service Bus...)。

于 2009-10-08T18:07:21.713 回答