关于开发监控系统的一些思路

需求: 开发一个监控系统,可以可视化监控一个系统的运行状态,各个服务器的负载等。要求在CPU占有率持续增高或者剩余内存不足时发出警告。(监控指标: CPU、内存、硬盘状态、网络流量)

思路:
1、 JNI调用服务器上的代码获取当前服务器状态,比如CPU和内存的状态
2、 利用JMX
3、 用Shell或者Perl写监控的脚本在服务器端运行,然后将数据封装成xml传到监控系统的服务器的servlet,将数据保存到数据库,之后就是网页显示。
4、 不需要在每个人机器上安装代理即可以做到监控,可以采取Apache的snmp4j
5、 snmp+jmx
6、 snmp+mrtg, snmp+多线程(mrtg的优势在于提供了良好的界面来呈现采集结果)

7、 Java对于系统底层的调用和操作一般用Jni来完成(因为有些关于底层的信息用命令行是得不到的,如getRuntime()的exec函数)
8、 使用最底层的Telnet协议,依据返回结果进行字符串截取获得就可以了。
9、 snmp监控服务器的物理信息,用snmp4j或snmphibernate信息。如果是获取jboss、tomcat之类的使用jmx就可以了
10、 jconsole,jdk5.0以后mbeanserver就存在jvm当中了,而且其有许多内置的mbean,其中就有有关thread、cpu、内存的信息。但是jconsole所谓的jmbeanserver都只能查查你jvm自身的状态,调用本地详细的监控信息需要使用jni
11、 munin或者nagios自己写扩展脚本
12、 spring+jmx

13、 top信息+jfreechart(Linux系统)
14、 监控系统用snmp,监控Java用jmx
15、 jmx只能对应用jmx作为管理框架的系统进行监控,不能直接对其他系统或者硬件进行监控(当然可以采用jmx+agent的方式)jmx对应于jvm级别的。

16、 关于数据显示的问题, 是用拉还是用推?
推:jms推到监控服务器,服务器用bds推到页面flex,全程无刷新,动态实时。(建议: 想cpu、内存等系统信息,不便做成服务器端的事件驱动,建议采用轮询的方式,在服务器开一个线程来不断轮询)


附录: SVG是什么?
可升级矢量图形,是一种采用xml来描述二维图形的语言。


————————————B/s系统的监控方案————————————
提及网络监控,网络流量,网络上机器的状况和web服务器状况监控(如服务器CPU使用率、发热情况、内存使用情况等)。已有的解决方案如通过socket+shell/jni,jsnmp,jms,前台使用flex或者ajax实现数据刷新表示。

一套BS结构系统抽取这些数据和统计的过程,或者说一套已有的BS系统如何无侵入地移植对它的实时监控。

参考思路:
1)使用Log4j在程序需要监控的地方记录数据到数据库
问题:实时性不好,并且把记录文件分散到代码各个地方,系统本身的代码和监控的代码混杂在一起,难以维护和理解。
2)另外开启一个线程监控,但因为要监控的数据都系统运行的一些代码的地方,不好获取这些数据。
3)获取到后放到数据库已经设好的一些字段里面去,但是一旦监控的数据改变,数据库也要随之改变,前台也是。或者系统改变了,监控的代码将随之全部改变。
4)在系统的每隔类里植入要被监控暴露的接口(成员变量和代码等)

ajax技术不太适合数据更新频率较快的实时监控系统,因为它本身还是“拉数据”,因为客户端的差异会导致不同客户端看到的监控状态不一致。目前给予web方式的“数据驱动”是一种值得推荐的方案(svg+js)

JPCAP:是一个能够抓取与发送网络数据包的Java组件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值