WebSphere性能监控软件WASMon
很多人都用过IBM的中间件WebSphere Application Server (WAS),但你是否有这样的经历:WAS由于某些原因hang、crash、OutOfMemory,或是由于其他异常无法正常运行了,而当你发现时客户的投诉已经上报到了你的老板那里;你使用了WAS自带的TPV(Tivoli Performance Viewer)来监控系统的运行状态,但却发现有很多不方便的地方,比如:
需要用Extra!X等远程图形终端登录;
集中监控不方便,可能要开好几个TPV;
保存性能数据不方便,只能记录到xml文件中,当你打开该xml文件时发现很难看懂;
系统遇到性能问题时的报警功能没有;
历史性能数据的报表没有;等等。
也许你也用过CA公司的集中监控软件,但除了软件价格和服务费昂贵外,复杂的安装和维护也令你望而却步。
我就是有过这些经历的人,从WAS v3.5以来,到现在的v6,近5年来我一直使用WebSphere Application Server,做过开发,也做过支持,长期的实践使我萌发了要自己做一套WAS集中监控的软件的想法,目的是方便自己,也方便客户。在研究了TPV的源码、CA集中监控软件和其他一些监控工具后,我用JAVA语言写出的这套软件,现已应用于国内某大型银行的生产环境,能实时监控,给出性能报警,也可存档数据并生成历史报表。我觉得更重要的是该软件预留了大量接口,能替客户按需定制。
随着客户需求和实际运行经验的不断积累,我有信心这套软件能越来越好。
TPV的缺点
大家都知道,IBM 的 WebSphere Application Server(WAS)在v5之后自带有TPV(Tivoli Performance Viewer),用来监控WAS的运行状况,包括JVM内存使用状况、数据库连接池、WEB容器线程池、应用程序、用户会话、事务、缓存等资源。
但是TPV存在的缺点主要有:
(1)TPV本身是图形工具
假如要远程使用,我们只能用Extra!X等图形终端登录系统,不像telnet或Web系统那么方便。
(2)集中监控方面存在缺陷
如果是WebSphere ND版本,那么你可以在一个TPV中监控所有加入该ND单元(Cell)的Base节点, 一个节点就是一台WAS服务器,那么假设我有10个系统共40台WebSphere服务器,是否也可以都加入到一个ND单元来管理呢? 答案是不可取。原因主要在于两点:
一是这样TPV在启动的时候会非常慢,CPU占用率会非常高,因为要去连接40台机器的SOAP|RMI端口,还要读取它们的监控级别,实践证实在生产环境中,一旦ND中加入的Base节点超过10个,TPV在启动时的CPU占用率将超过50%,而且启动成功通常要消耗很长时间(根据系统性能、网络快慢而定),如果放到生产环境,会严重影响系统运行。 二是这样对WAS的管理不方便,试想一个ND单元中有40个节点,分别属于10个系统,逻辑上不清楚,通常的做法是一个系统对应一个ND单元,可能这个单元中会有多台WAS 的Base节点来分担负载。
(3)保存性能数据方面存在缺陷
TPV提供了一种日志模式,可以将性能数据存到xml文件中。但是这些xml文件一是我们看起来很费力,因为它的格式是IBM内定的,不像数据库的TABLE那样整齐清楚; 二是这些xml文件的大小增长很快,通常1小时后就能有上G的数据,可想而知我们查看起来有多麻烦。
假如我想把监控得到的性能数据记录到自定义的日志或数据库怎么办?TPV也没法做到。
(4)在性能报警上存在不足
TPV里面有“性能顾问程序”,但是使用过的人都知道,它其实没什么用。我们经常会遇到WAS服务器停止响应(hang)、宕机(Crash)、内存溢出(OutOfMemory)等等情况,我们想随时监控WAS的性能状况,却又不想一直守着TPV,希望在WAS性能超过阀值时及时地通知我们,比如发EMail,或在一个集中监控平台上有弹出框、红色提示等信息。这些TPV都没法做到。
(5)没有报表
如果我想查看某台WAS服务器一小时、一天、一周、一月或是任意指定的时间范围内的性能走势图,怎么办?TPV在这方面也存在欠缺。而且IBM好像也没有类似的好工具。
WASMon
WASMon弥补了TPV上述的不足。
WASMon可获取比TPV更多更全面的性能数据,并将其存入日志或数据库中。
WASMon提供基于Web的图形报表,可为客户全部的WAS系统提供集中的实时监控平台。并通过Email、弹出框、红色警示等告知客户系统问题。除了实时监控,客户还可查看任一时段的历史性能走势图。
WASMon还可自动收集WAS的配置参数,以一个Excel格式导出存档,通过对比,客户可以看出配置参数的变化。省去了查看多个xml配置文件的麻烦。也可配置一个Excel文件,然后修改多处配置参数。
WASMon使用标准的JMX接口,理论上也可扩展到其他J2EE应用服务器。
WASMon本身不会影响生产服务器的运行。WASMon分两部分,一部分是Agent代理程序,必须部署在生产服务器上,用来收集服务器上WAS的性能数据,经过大量的程序优化工作后,它的CPU占用率通常是0.1%~0.7%,只在启动的几秒种之内占10%左右,内存最大消耗50M,一般是25M左右;另一部分是集中监控和生成报表的Web系统,它完全可部署在另外的服务器上,所以对生产系统也不构成影响。
WASMon留有大量的接口,提供大量配置选项,可根据客户的需求灵活地定制
总之,WASMon的存在就是为了方便人们对WAS的监控和管理,通过程序自动化,提高维护人员的工作效率,降低生产事故发生的可能性,并给领导一个详尽的报表。
阅读(1488) | 评论(0) | 转发(0) |