【问题标题】:Can we use JMX for Alerts/Notification我们可以将 JMX 用于警报/通知吗
【发布时间】:2010-09-23 03:45:23
【问题描述】:

简而言之,这是我试图实现的规范:

1) 必须针对应用程序中的某些事件发送一些警报。

2) 这些警报有用户订阅。

3) 并且用户已经设置了自己的通知偏好(例如电子邮件和/或短信)。

到目前为止,我还没有找到 Java 中的开源解决方案。

是否可以选择 JMX 通知?我对 JMX 的了解越多,我就越觉得它试图实现与我的问题不同的东西。

任何帮助都会很有用。

【问题讨论】:

  • JMX 不保证通知的传递。

标签: java notifications jmx alerts


【解决方案1】:

您是指 JMS(而不是 JMX)吗? JMS 是一个消息传递 API,而 JMX 是一个监控/管理 API。 使用 JMS 作为后端是实现后端消息的好方法,它将负责解耦、负载平衡和持久性。但是您仍然必须有一个组件来接收消息并将它们发送给用户。

【讨论】:

    【解决方案2】:

    如果您指的是 JMX,那么有一个名为 monju 的 JBoss/Nagios 桥接器具有通用 JMX 挂钩。

    【讨论】:

      【解决方案3】:

      JMX 可以成为解决这个问题的一种机制,但它不是完整的解决方案。

      JMX 为您的程序提供设施和服务,以允许客户端访问监控数据以及允许客户端对应用程序进行控制调用。

      正如您所提到的,JMX 的一个方面是通知系统。该系统提供的基础设施使您的程序可以轻松地向客户端提供警报和通知,并且现代 JVM 还提供免费的 JMX 服务器以允许客户端远程连接到您的应用程序并订阅这些事件。

      但发出 JMX 警报是一回事,完全采取行动是另一回事。

      您需要做的是让一些 JMX 客户端在某处“订阅”您程序的 JMX 通知,然后该客户端可以通过发送电子邮件或其他方式来处理这些通知。

      JMX 客户端可以是通过 TCP 与您的应用程序通信的远程客户端,也可以是程序中的内部 JMX 客户端,在线程中运行,例如,它可以对通知进行操作。

      因此,基本上,JMX 为您想要做的事情提供了管道和基础设施,但不会将警报转换为电子邮件的“最后一英里”。

      正如@fawce 所提到的,有一些“通用”JMX 客户端具有各种复杂性,可以对 JMX 数据进行操作,并且可以执行您想要的操作(我不熟悉它们,所以我不能直接说),或者您可以编写自己的系统来监控 JMX 数据。

      【讨论】:

      • Nagios 是一个通用的开源监控应用程序。它有“探针”,存在于受监控的系统上,它有一个调度程序将探针数据转换为警报(电子邮件、短信、IM 等)。它还记录所有警报。 Monju 是 Nagios 的通用 JMX-Probe。
      • 您说“现代 JVM 还提供免费的 JMX 服务器,允许客户端远程连接到您的应用程序并订阅这些事件”。有没有提到那个组件是什么?
      【解决方案4】:

      我建议使用 JMX 通知和 SNMP,它们应该支持您的场景,2) 和 3) 被 SNMP 软件覆盖。

      您也可以自己用 Java 编写代码,只要您可以通过一些 API 访问 SMS 网关。只要您有权访问允许匿名访问的 SMTP 主机,使用 javax.mail 就很简单。 2) 的灵活发布-订阅机制可用于连接 1) 和 3)。

      【讨论】:

        【解决方案5】:

        这是一篇很好的文章,其中包含示例代码,用于在您的应用中使用 jms 来引发警报 link text。一旦您使用本地监控,您需要设置 -Dom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 所以您可以从远程计算机连接。一个很好的简单程序来监视启用了 jmx 的 java,它可以绘制移动图形的网页并在阈值更改时通过电子邮件发送警报link text。它还可以让您通过网页远程控制您的应用程序。又好又简单。当然,如果您使用的是 jmx,您可以轻松换用更复杂的东西,例如 nagios 或一些昂贵的商业工具。这些工具的关键在于它们有工作流和轮班表以及管理一大群想要照顾很多东西(数据库、服务器、Java 等)的人的东西——如果你刚开始的话,这可能太复杂了让 jmx 的 java 端正常工作。

        【讨论】:

          【解决方案6】:

          Solarwinds 是一个商业企业监控工具,可以挂钩到 JMX 进行监控。它能够生成 SMS 和电子邮件警报。

          【讨论】:

          • SolarWinds 中执行此操作的特定组件称为“JMX 桥”。 SolarWinds 中的监视器可以针对 JMX 在正在运行的 Java 应用程序中公开的任何属性值进行配置。然后,这些值可以显示在 SolarWinds 提供的 Web 浏览器可访问仪表板中,以允许支持人员远程监控应用程序状态等。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-11-11
          • 2013-10-24
          • 2018-01-27
          • 2020-06-09
          • 2021-06-13
          • 1970-01-01
          相关资源
          最近更新 更多