rhq监控软件_用RHQ监视怪物

rhq监控软件

传统的RHQ设置假定计算机上存在代理和代理插件(在RHQ中为“平台”)。 然后,插件与托管资源(例如,AS7服务器)进行通信; 向其询问指标值或运行操作(例如“重新启动”)。 本文在JBoss Developer FrameworkTicket Monster应用程序示例中展示了一种监视应用程序的替代方法。 JDF徽标RHQ徽标

插件和托管资源之间的通信协议取决于该资源的功能。 如果资源是Java进程,则通常使用JMX。 对于JBoss AS 7,我们使用基于HTTP协议的DMR。 对于

其他种类的资源,如果是数据库,也可以是文件访问或jdbc。 下图显示了此设置。

RHQ经典设置

代理插件与托管资源进行对话并从中获取指标。 代理从多个资源中收集指标,然后将其批量发送到RHQ服务器,在该服务器中对其进行存储,处理以进行警报,并可以在UI中查看或通过CLI和REST-api检索。

延伸

上面的场景当然不限于基础结构,还可以用于监视内部的应用程序,例如AS7。 您可以编写一个使用基础连接与资源进行对话并从那里收集统计信息的插件(如果您基于jmx或as7插件构建,则不一定需要编写Java代码)。 这也意味着您需要在应用程序中添加钩子,以导出度量标准并使其在管理模型(经典jre中的MBean-Server; AS7中的DMR模型)中可用,以便插件可以检索它们。

从应用程序推送

监视应用程序数据的另一种方法是使应用程序将数据直接推送到RHQ服务器。 在这种情况下,您仍然需要一个插件描述符来定义RHQ服务器中的元数据(存在哪些类型的资源和指标,指标具有哪些单位等)。 在这种情况下,您只需要定义描述符,而无需为插件编写Java代码。 这是通过从No-op插件继承而来的 。 除此之外,您还可以将该描述符部署为无jar插件 。 下图显示了设置:

来自TicketMonster的RHQ

在这种情况下,您仍然可以在平台上使用带有插件的代理,但这不是必需的(但建议用于基本的基础结构监视)。 在服务器端,我们部署ticket-monster插件描述符 。 TicketMonster应用程序已得到增强,可以将每个预订作为售票总数和预订总价格的两个度量标准推送到RHQ服务器( BookingService .createBooking())。

@Stateless
public class BookingService extends BaseEntityService<Booking> {

    @Inject
    private RhqClient rhqClient;

    public Response createBooking(BookingRequest bookingRequest) {
    […]
        // Persist the booking, including cascaded relationships
        booking.setPerformance(performance);
        booking.setCancellationCode("abc");
        getEntityManager().persist(booking);
        newBookingEvent.fire(booking);
        rhqClient.reportBooking(booking);
        return Response.ok().entity(booking)
           .type(MediaType.APPLICATION_JSON_TYPE).build();

该推送通过与RHQ服务器的REST-api的http连接进行,该连接在RhqClient单例bean中定义。 在此RhqClient bean中,我们在启动时读取rhq.properties文件,以确定是否应该有任何报告以及如何访问服务器。 如果启用了报告,我们将尝试找到我们正在运行的平台,如果RHQ服务器不知道该平台,请创建它。 在平台之上,我们创建TicketMonster实例。 可以安全地进行多次操作,就像创建平台一样–我正在寻找一个现有的平台,在该平台上,代理可能已经在监视诸如cpu使用率或磁盘使用率之类的基本数据。 指标的报告如下所示:

@Asynchronous
  public void reportBooking(Booking booking) {

    if (reportTo && initialized) {
      List<Metric> metrics = new ArrayList<Metric>(2);

      Metric m = new Metric("tickets", 
           System.currentTimeMillis(), 
           (double) booking.getTickets().size());
      metrics.add(m);

      m = new Metric("price", 
           System.currentTimeMillis(), 
          (double) booking.getTotalTicketPrice());
           metrics.add(m);

      sendMetrics(metrics, ticketMonsterServerId);
   }
 }

基本上,我们构造两个Metric对象,然后将它们发送到RHQ-Server。 第二个参数是RHQ服务器中TicketMonster服务器资源的资源ID,这是我们从上面提到的创建请求中获得的。 与传统设置不同的是,在RHQ内部, MeasurementData对象始终具有关联的日程表ID,这与传统设置不同,在上述情况下,我们传递了部署描述符中出现的度量标准名称,然后让RHQ服务器对日程表ID进行排序。

<metric property="tickets"  dataType="measurement" 
       displayType="summary" description="Total number tickets sold"/>
    <metric property="price" 
       displayType="summary" description="Total selling price"/>

瞧瞧这是从TicketMonster内部的Bot创建的销售情况:

Bildschirmfoto 2013 01 23 um 11 16 23

RHQ-UI中的预订

显示间隔已设置为“过去12分钟”。 如果您看到酒吧,则表示在12分钟/ 60个时隙= 12秒的时间内,有多个预订。 在这种情况下,条形图显示最大值和最小值,而里面的小圆点显示平均值(通过Rest-Api,仍然可以查看最近7天的各个值)。

我为什么要这么做?

这里的问题当然是为什么我要将业务指标发送到通常用于基础结构监视的RHQ服务器? 因为我们可以! 认真地,此类业务指标也能够指出问题。 例如,如果机票预订单的数量异常多或少,这也可能会引起关注,并发出警报。 举一个电子商店的例子,该商店出售电子产品,碰巧有人打错字并提供笔记本电脑,通常售价为1300欧元,现在的售价为130欧元。 该消息通过社交网络Swift传播,销售额比正常数字增长了三倍。 在这里,监控笔记本电脑的销售数量可能会有所帮助。 另一个原因是RHQ及其用户概念允许设置特殊用户,这些用户只能(读取)对TicketMonster资源的访问,而不能访问RHQ内部的其他资源。 通过这种方式,可以使业务人员可以通过监视票证销售来访问度量。
图片
在左侧,您可以看到平台“ snert”下方的资源树,其中包括所有资源,例如“ rhqadmin”用户可以看到。 在右侧,您将以用户身份看到树,该树仅具有查看TicketMonster服务器(™')的权限。

待办事项

以上是启动此概念的概念证明。 还有一些事情要做:

  • 为表演创建子资源并分别报告其预订
  • 定期报告TicketMonster服务器的可用性
  • 更好地分离仍然存在于RhqClient类中的内部代码
  • 将以上内容合并到TicketMonster propper中-当前它位于我的私人github存储库中
  • 确定如何更好地处理暂时不可用的RHQ服务器
  • 当一个类或字段为此有一些特殊注释时,让Forge自动创建“发送度量/…”代码。 对于创建新项目(例如™案例中的表演)也是如此。

如果要尝试,则需要最新的RHQ主副本-即将发布的RHQ 4.6版本将在RHQ端进行一些必要的更改。 RHQ 4.6 beta还没有它们。

参考:来自JCG合作伙伴 Heiko Rupp的RHQ监视怪物, 请记住博客。

翻译自: https://www.javacodegeeks.com/2013/04/monitoring-the-monster-with-rhq.html

rhq监控软件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值