问一个监控程序

njuptcaowei 2009-07-13 04:24:00
假如有2台计算机A和B,A和B在不同的城市,B上运行一个程序,假如这个程序的进程名为C,我现在想通过A计算机来实现对B计算机上C进程进行监控(主要是判断其是否运行),各位高手这个程序怎么写啊?
...全文
75 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsf_1982 2009-07-20
  • 打赏
  • 举报
回复
地址应该类似:service:jmx:rmi:///jndi/rmi://${system.host.name}:${monitor.jmx.port}/jmxrmi
显然,JMX也是基于TCP/IP协议的,只是应用层协议是RMI协议(当然也可以基于其它应用层协议,实现不同的适配器),因此能实现“实时检测连接情况”;
同时之所以推荐JMX是由于:
1.JMX是J2EE组件,同时Spring集成了对JMX的支持,换而言之,使用JMX完成监控,只是配置上的问题,开发无比简单;
2.其次,JMX的功能非常完善,如果采用RMI协议,那么对于管理端的开发,即如同在同一JMV中开发一般,很多底层的实现都是被屏蔽的,简而言之,交易层开发毫无技术难点。
至少我的实施满足以上特点,同时由于在封装上加入了一点特殊的设计模式,因此使得交易层开发更简易
hsf_1982 2009-07-20
  • 打赏
  • 举报
回复
地址应该类似:service:jmx:rmi:///jndi/rmi://${system.host.name}:${monitor.jmx.port}/jmxrmi
显然,JMX也是基于TCP/IP协议的,只是应用层协议是RMI协议(当然也可以基于其它应用层协议,实现不同的适配器),因此能实现“实时检测连接情况”;
同时之所以推荐JMX是由于:
1.JMX是J2EE组件,同时Spring集成了对JMX的支持,换而言之,使用JMX完成监控,只是配置上的问题,开发无比简单;
2.其次,JMX的功能非常完善,如果采用RMI协议,那么对于管理端的开发,即如同在同一JMV中开发一般,很多底层的实现都是被屏蔽的,简而言之,交易层开发毫无技术难点。
至少我的实施满足以上特点,同时由于在封装上加入了一点特殊的设计模式,因此使得交易层开发更简易
hsf_1982 2009-07-20
  • 打赏
  • 举报
回复
地址应该类似:service:jmx:rmi:///jndi/rmi://${system.host.name}:${monitor.jmx.port}/jmxrmi
显然,JMX也是基于TCP/IP协议的,只是应用层协议是RMI协议(当然也可以基于其它应用层协议,实现不同的适配器),因此能实现“实时检测连接情况”;
同时之所以推荐JMX是由于:
1.JMX是J2EE组件,同时Spring集成了对JMX的支持,换而言之,使用JMX完成监控,只是配置上的问题,开发无比简单;
2.其次,JMX的功能非常完善,如果采用RMI协议,那么对于管理端的开发,即如同在同一JMV中开发一般,很多底层的实现都是被屏蔽的,简而言之,交易层开发毫无技术难点。
至少我的实施满足以上特点,同时由于在封装上加入了一点特殊的设计模式,因此使得交易层开发更简易
IT东 2009-07-17
  • 打赏
  • 举报
回复
不明白!!!
hsf_1982 2009-07-17
  • 打赏
  • 举报
回复
如果被监控服务是用JAVA开发的,用JMX还是不错的选择:
1.服务器通过实现不同的适配器和连接器,对外提供不同的接入方式,从而向外部服务提供资源的访问,由于我的管理端服务也是JAVA项目,所以采用的是RMI协议。
2.Spring对JMX有比较好的封装,如果框架使用的是Spring,简易实用JMX实现A计算机的监控功能,并建议将A计算机抽象成对象,其拥有包括内存使用情况、线程数等主要信息。
diggywang 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jww_in_windows 的回复:]
1. Socket, B端起ServerSocket,A端起Socket去连接B,
2. JMX, B断起MBeanServer,A端去连,
当然, JMX方式更简单,但这两种方式要求在同一网络内,跨网络方式要通过第三方的Socket了,

[/Quote]

谁说JMX要求在同一网络内?
我在杭州,监控四川的服务器,jconsole用jmx照样可以。
guoxiangjun 2009-07-17
  • 打赏
  • 举报
回复
楼上说的都在理。。有2种方式。如果2个城市之间网络可以访问。首先选择socket,建议监视方做服务端。也就是A,2这之间建立一个scoket长连接。每搁一段时间发心跳消息探测,还有就是JMX,这种更简单,被监视方起一个JMX代理服务。就几代码。A什么都不走。通过JDK的bin下的jconsole.exe来监视代理情况。(被监视方起动代理后会有一个地址,例如:JMX://192.168.1.3:2234/aa)jconsole.exe连接这个地址来看。这个地址类似RMI的地址。建议socket.能实时检测连接情况,JMX只是个辅助功能。
guoxiangjun 2009-07-17
  • 打赏
  • 举报
回复
ss
jww_in_windows 2009-07-15
  • 打赏
  • 举报
回复
1. Socket, B端起ServerSocket,A端起Socket去连接B,
2. JMX, B断起MBeanServer,A端去连,
当然, JMX方式更简单,但这两种方式要求在同一网络内,跨网络方式要通过第三方的Socket了,
huguang 2009-07-13
  • 打赏
  • 举报
回复
我说不如网上去查资料,有什么不明白的再问。
njuptcaowei 2009-07-13
  • 打赏
  • 举报
回复
能详细点嘛,非常感谢你!
huguang 2009-07-13
  • 打赏
  • 举报
回复
主要就是定是发消息。知道这个基本上就可以解决了。

另外常见的电信使用的监控都是使用的snmp协议,监控服务器启动snmp监听,接收被监控服务器发来的消息。
java的话可以参考一下snmp4j,还算简单,比较好理解。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧