服务器监控的实现
接到老大说的一个需求,希望开发一个监控系统,可以可视化监控一个系统的运行状态,各个服务器的负载等,要求在CPU占有率持续彪高或者剩余内存不足时可以发出警告已达到预警的效果,服务器为linux,语言为java
坛子里的各位牛人帮我想想看都有什么实现手段?
小弟想到的是JNI调用服务器上的代码获取当前服务器状态,比如CPU和内存的状态,老大给的一个建议是利用JMX,JMX小弟没有接触过,正在恶补中···
50 楼 loyalbluer 2009-01-15 dragonsoar 写道写的程序当时只是因为公司也想做类似的一个功能。
不过代码也没有怎么整理过,是top信息获得得后使用jfreechart画图来显示系统的资源占用情况。
其中也用到了jfreechart的图片另存为功能。
主要功能为:
1.显示系统资源。
2.显示系统中某个进程的CPU使用资源情况。
3.显示系统中某个进程的内存使用资源情况。
这个功能基本上就满足我的需求的,我先拜读一下代码,然后有什么不理解的再来讨教~
51 楼 lirenjiede 2009-01-15 兄弟的拙见:java+shell 52 楼 bonny 2009-01-15 JMX 字数补丁 53 楼 lsming 2009-01-16 nagios.org 54 楼 dragonsoar 2009-01-16 有好多同学向我要代码,附件有点大,上传太麻烦了~
好几次上去不上去,这回再试试运气,呵~
工程是eclipse工程,只要导进去就可以了,呵~ 55 楼 heipn 2009-01-16 你可以读/proc下的文件获取linux的系统运行信息,包括内存,cpu、网络流量,同时还有各进程得信息。在进程文件里得cmd文件是启动命令,你可以通过扫描这些文件cmd做正则找到你要监控程序进程号(这个文件夹得名称),之后你每次扫描文件名查找这个文件是否还在,不存在了就是挂了,报警就行了,如果更高档点你还可以看看它得内存使用情况,里面有个文件mem也记录当前内存使用。
当然也可以snmp,不过snmp的资料比较少,切得搞一阵子 56 楼 swen00 2009-01-16 dragonsoar兄的代码解析还是有问题啊,难道不通用?
感谢分享 57 楼 dragonsoar 2009-01-16 代码解析是没有问题的。
里面要看一下top返回信息的版本。
top2和top3是不一样的,呵~
可以看一下top 2.x和top 3.x返回信息不一样,所以要针对不同的版本要配置一下。
如果想完全自动化,可以先判断一下当前top的版本,然后再做信息处理,只要想做成什么样,可以灵活改造,呵~ 58 楼 guooscar 2009-01-16 spsvtool.sourceforge.net
一个系统监控的软件,功能比较多,也更偏向底层。
不过可以给你提供个思路。 59 楼 kaki 2009-01-18 shell 写到一个临时文件里面 ,然后定时读取。 60 楼 yechanglun 2009-01-19 这个是网管监控软件的功能,太复杂了,短期没法开发,监控系统用snmp,监控java程序用jmx 61 楼 avery_leo 2009-01-20 java+snmp
其实很简单 62 楼 lzy.je 2009-01-21 通过 /sys /proc 虚拟文件系统监控系统性能相关指标,使用socket实现远程通信。
为什么用java开发?
63 楼 yiyu 2009-01-21 JDK自带的jconsole就是用jmx实现的,可以先看看 64 楼 zongxing 2009-01-26 我们也做了类似的监控。有空问一下。 65 楼 virue 2009-02-05 JMX就不多说了,如果你老大给你那么说的话,你们现在要监控的服务器应该是跑的Java EE 项目,即然是这样的话,应该可以通过JMX监控JVM的一些时时性能指标。这点可以用jconsole就可以先预演一下。
JMX只可能对应用JMX做为管理框架的系统进行监控,不可能直接对其他系统或硬件进行监控的。 66 楼 xtqryv 2009-02-06 关注中...
我现在也遇到同样的问题 67 楼 love_seam 2009-07-23 java+snmp
其实很简单
~~~~~~~~我看不见得。SNMPV3怎么整?那些身份认证怎么整?
1.mib定义
2.需要在服务器上撞实现Agent,Agent要能够读取服务器的信息。
3.写SNMP Manager端,也就是客户端。
SNMPV1,V2还好。
V3还是比较麻烦的,我调试了好多Agent,都tmd没法用。
其实你在server上启动tomcat,或者jetty,写个web。
想通用的话,server上什么程序都不放,那是不可能的。如果server上要运行某程序,还不如象兄弟们说的,用telnet。
SNMP太母了。 68 楼 danni505 2009-08-19 为什么不用用HQ呢?