jManage

1 Overview

    由于项目需要, 笔者开发了一个基于JMX的监控程序。这个监控程序本身也提供了JMX远程服务,并且在开发过程中一直使用jconsole来管理这个监控程序。本打算在将监控程序部署到生产环境后,通过设置NAT(目前还不能通过VPN接入到生产环境)以便仍然可以通过jconsole来管理这个监控程序。但是发现为RMI使用的端口设置好NAT之后,jconsole仍然无法连接到监控程序。经过调查,发现RMI实际上使用了两个端口,一个是可以在程序中指定的(用于客户端下载stub,默认是1099);另外一个是随机选择的(用于方法调用)。虽然可以通过指定一个RMISocketFactory来配置那个本是随机选择的端口,但是被监控程序监控的那个程序无法修改,因此作罢。最终采用了在监控服务器上部署jManage的方案,替代jconsole通过NAT接入到生产环境的方案。

    jManage(http://www.jmanage.org/)是个基于WEB和命令行的开源JMX客户端程序,提供了一个集中式的控制台来监控和管理应用程序。此外jManage还提供了报警、图表、安全等特性。目前的最新版本是2.0 RC。

 

2 Instanllation

    如果使用jManage 2.0,那么需要使用1.5以上版本的JDK(jManage 1.x 需要使用1.4以上版本的JDK)。

    首先将jmanage-XXX.jar解压到安装目录,并为所有脚本加上可执行的属性,例如 chmod  +x *.sh。 然后进入到bin目录中,执行keygen来修改admin用户的密码,这个密码也是启动jManage的密码(默认是123456)。默认情况下,jManage使用9090端口,也可以通过修改jetty-config.xml文件来指定其它端口。 接下来执行bin目录中的startup,然后就可以通过访问http://localhost:9090来进行确认是否成功启动。

 

3 Configuration

3.1 Connecting to applications

    在使用jManage管理和监控应用程序之前,首先需要在jManage中添加应用程序的信息。

    1 在jManage的主页面中点击"Add Application"。
    2 选择应用程序的类型,对于普通的Java程序来说,应该选择"JSR160 Application"。jManage同样也支持MX4J。
    3 指定应用程序名和连接参数,例如:service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi。
    4 添加了应用程序后,点击应用程序名,然后再点击"Find More Objects"来浏览所有的MBeans。

 

3.2 Cluster Configuration

    1 在jManage的主页面中点击"Add Application Cluster"。

    2 指定集群名称,并选择需要添加到集群的应用程序名,点击"Save"。

 

4 Security

    jManage采用的对称加密算法对admin用户的密码进行了加密。加密后的密码保存在config目录的jmanage-key文件中。在用户登录过程中,jManage在3次(在jmanage.properties中配置)失败的尝试后锁定该用户。所有的用户信息保存在config/jmanage-users.xml文件中,用户的密码经过散列处理(默认采用SHA-1散列算法,在jmanage.properties中配置,也可以使用SHA-256)。

    一个用户可以被赋予一个或者多个角色。角色在jmanage-user-roles.xml.文件中定义,jManage预定义了两个角色:Administrator和User。Administrator角色具有完全的访问权限;User具有只读权限。acl-config.properties文件中定义了ACEs (Access Control Entities),可以在用户级别和角色级别上进行授权。

    默认情况下,jManage只使用http连接,可以通过解除JMANAGE_HOME/config/jetty-config.xml文件中HTTPS listener的注释来启用SSL,例如:

   <!--- HTTPS listener -->

   <Call name="addListener">
       <Arg>
           <New class="org.mortbay.http.SunJsseListener">
               <Set name="Port">
                   <SystemProperty name="jetty.port" default="9091"/>
               </Set>
               <Set name="MinThreads">5</Set>
               <Set name="MaxThreads">255</Set>
               <Set name="MaxIdleTimeMs">30000</Set>
               <Set name="LowResourcePersistTimeMs">5000</Set>
               <Set name="Keystore"><SystemProperty name="jmanage.root"/>/config/keystore</Set>
               <Set name="Password">password</Set>
               <Set name="KeyPassword">password</Set>
           </New>
       </Arg>
   </Call>
    需要注意的是,JMANAGE_HOME/config/jmanage.properties中的"jmanage.url"也要更新。

 

5 FAQ

Q: 怎样解除对admin账户的锁定?

A: 编辑 JMANAGE_HOME/config/jmanage-users.xml, 设置 status="A" and lockCount="0".


Q: 怎样在启动jManage时无需键入密码?
A1: > startup.sh 123456

      如果不考虑安全因素,那么可以使用此方法。
A2: > nohup ./startup.sh < password 2>&1 > ../logs/startup.log &
      其中password是保存了密码的文件(应该确保只有经过授权的人才能查看文件的内容)。

 

Q: 为什么jManage在发送报警邮件时出错?

A: 如果错误内容如下:
    SEVERE: Error sending alert email. Error: Could not connect to SMTP host: localhost, port: 25;
    那么需要修改jmanage.properties文件,指定SMTP服务器的地址,例如:

    email.host=localhost

 

Q: 怎样定制警报发送方式?

A: 目前jManage支持email和控制台警报两种方式,然而可以通过扩展alert framework来定制报警方式:
    1. 编写一个实现org.jmanage.core.alert.AlertDelivery接口的类。

    2. 将这个类注册到JMANAGE_HOME\config\system\alert-config.xml

    3. 编辑 addAlert.jsp,在下拉列表中添加一个新类型。需要注意的是,这个类型字符串要和 alert-config.xml中的类型字符串一致。在未来版本中,jManage会读取 alert-config.xml文件的内容而无需再编辑addAlert.jsp。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值