IBM Tivolli Composite Application Manager

ITCAM与ITM V6.1集成实战指南

http://bbs.zdnet.com.cn/viewthread.php?tid=219006

http://storage.it168.com/st/2007-12-24/200712241530735.shtml

使用 ITCAM for WAS 对 Websphere 进行监控管理和问题诊断

http://www.webspherechina.net/?viewnews-2699.html

使用 ITCAM for WebSphere 进行性能诊断

http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0812_wangfeng/

ITCAM for Websphere v6.0与ITM v6.1集成的快速指南

http://space.itpub.net/14789789/viewspace-406659


IBM Tivoli Composite Application Manager for WebSphere Application Server 6.1

http://www-01.ibm.com/software/tivoli/products/composite-application-mgr-websphere/

http://publib.boulder.ibm.com/infocenter/wchelp/v6r0m0/index.jsp?topic=/com.ibm.commerce.admin.doc/concepts/cpmwas.htm

http://publib.boulder.ibm.com/infocenter/wsdoc400/v6r0/index.jsp?topic=/com.ibm.websphere.iseries.doc/info/ae/ae/tprf_tpvmonitor.html

Websphere:使用 TPV监视JVM

http://blog.chinaunix.net/u/32831/showart_386177.html

 

   内存泄漏是比较常见的一种应用程序性能问题,一旦发生,则系统的可用内存和性能持续下降;最终将导致内存不足(OutOfMemory),系统彻底宕掉,不能响应任何请求,其危害相当严重。同时,Java堆(Heap)中大量的对象以及对象间之复杂关系,导致内存泄漏问题的探测和分析均比较困难,采用相应的辅助工具是很必要的。

   WebSphere应用服务器提供了系列针对内存问题的探测和分析诊断工具,这些工具可以帮助用户进行内存问题的及时探测,保证系统在发生OOM之前,用户可以在无须进行复杂分析的条件下,预知在其部署的应用中是否存在内存泄漏的问题。如果确有内存泄漏现象发生,WebSphere还提供了相应的工具,可以帮助用户进行分析诊断,从而找到内存泄漏的真正原因。

1. Java 虚拟机概要分析和详细垃圾回收

    检测是否有内存泄漏的发生,以及泄漏发生的时间,周期和速度,我们可以启用Java虚拟机中的详细垃圾回收。 WebSphere应用服务器6.1使用了Java SDK5.0, 在Window, Linux, AIX, i5/OS,z/Linux 和z/OS上使用了IBM的JAVA虚拟机, 在Solaris和HP-UX上使用Sun的JVM。Java 虚拟机概要分析工具接口(Java Virtual Machine Tool Interface,JVMTI)支持从运行应用程序服务器的 Java 虚拟机(JVM)收集信息(如,关于垃圾回收的数据、对象利用和线程状态)并且支持更全面的性能分析。一旦启用了 JVMTI,可以使用 PMI 定制选项来启用所选统计信息以收集特定数据。

1.1启用 Java 虚拟机概要分析和详细垃圾回收配置步骤

配置步骤:

1. 在控制台导航树中单击服务器 > 应用程序服务器

2. 单击选择所需应用程序服务器。

3. 在"服务器基础结构"下,单击 Java 和进程管理-> 进程定义。

4. 在"其他属性"下,单击 Java 虚拟机。

5. 选中配置Tab的详细垃圾回收选项。

6. 在通用 JVM 参数字段中输入 -agentlib:pmiJvmtiProfiler。

注: WebSphere6.1中,JVM概要分析接口改为Java Virtual Machine Tool Interface (JVMTI)。之前版本是JVMPI。如果需要JVMPI的时候,也可以此处输入-XrunpmiJvmpiProfiler。另外,启用JVMTI接口对性能影响较大,尽量避免在生产环境中使用。


7.点击应用或者确定。

8. 单击保存按钮。

9.重启WebSphere应用服务器。

2. TPV监视JVM的状况

我们可以借助TPV和PMI来实时监视JVM,分析性能曲线来判断是否有内存泄漏的状况发生。 WebSphere性能监控基础结构(PMI)和Java虚拟机概要分析工具接口(JVMTI)可以帮助我们收集系统的性能状况数据,使用Tivoli性能查看器(TPV)以图形的方式显示这些数据(性能计数器),可以进一步证实是否系统正在发生内存泄漏。

2.1 PMI与TPV

PMI 提供WebSphere运行时和应用程序资源行为的一组全面的数据,。例如,PMI 提供数据库连接池大小、servlet 响应时间、 Enterprise JavaBeans(EJB)方法响应时间、Java 虚拟机(JVM)垃圾回收时间以及 CPU 使用量等等。使用 PMI 数据,可以识别并修正应用程序服务器中的性能瓶颈, 还可使用 PMI 数据来监控应用程序服务器的运行状况。PMI 数据可以由 Tivoli Performance Viewer(TPV)、其他 Tivoli 工具、您自己的应用程序或第三方工具来监控和分析。TPV 是随 WebSphere Application Server 一起提供的 PMI 数据图形查看器。

Tivoli Performance Viewer(TPV)使得我们可以通过查看图表或表格,从而解读WebSphere的性能监控基础结构(PMI)数据。

2.2 PMI的配置方法

默认情况下,PMI已经开启,级别是默认(Default)。配置步骤:

1. 在控制台导航树中单击监视&调整-> 性能监视基础结构(PMI)。 

2. 选择所要配置的服务器名字。

3.单击配置选项卡,这里可以根据监控内容的需要,来选择PMI的任一种统计信息集(无,基本,扩展,全部,定制)。我们这里选择"定制"。

注:如果在配置选项卡中,则当重新启动服务器时应用设置。如果在运行时选项卡中,则立即应用设置。

4.点击定制 -> 在定制监视级别的树中,选择配置选项卡,然后点开JVM运行时,可以根据需要,启用或禁用相应的计数器。


点击定制,启用或禁用相应的计数器。


5.保存并重启WebSphere服务器。

2.3 TPV的使用方法

实时查看 TPV 性能模块的步骤:

(1) 在控制台导航树中,单击监控和调整 -> 性能查看器 -> 当前活动 -> 服务器名字)-> 性能模块。

(2) 选中要查看的每个性能模块,例如JVM运行时。

(3) 单击查看模块按钮。 在页面的右侧会显示所选性能数据的图形或切换成表格。 注:每个模块有与其关联的多个计数器。这些计数器会显示在数据图形或表格下面的表中。您可以通过选择或取消选择计数器旁的复选框,将计数器添加到图表或表中,或从中除去。
TPV需要SVGView插件。






文件: SVGView.rar
大小: 2278KB
下载: 下载



TPV显示的已使用内存的图形理想情况下应该是锯齿状,图形中每个坡(下降)对应着一次内存的垃圾回收(Garbage collection),如下图已使用内存的曲线,显示的是没有发生内存泄漏的状况。
如果测试过程中出现如下情况,则有可能发生了内存泄漏:



-每次垃圾回收后的已使用内存的数值骤增。

-TPV对应的已使用内存图形更接近于阶梯(staircase),或者锯齿形状严重不规则。

-也可以查看分配的对象数与释放的对象数之差值,如果这个数值越来越大,则有内存泄漏(如果需要查看对象数,需要启用JVMTI接口并在PMI中启用相应的JVM计数器)。


上图,红色曲线代表已使用的内存,从整体趋势,我们可以看出已使用内存一直在增长。 TPV可以帮助发现内存泄漏,为了得到最优结果,我们可以重复试验,而且每次可以增加测试的时间,例如测试1000,3000或5000个页面请求。

3.小结

IBM提供了一系列的工具辅助用户进行内存问题的监控和分析,在合适的阶段选择合理的工具可以帮助我们轻松搞定内存泄漏。这里介绍的工具都是WebSphere附带或者免费的,IBM Tivoli工具还提供了更强大的监控和诊断功能,例如ITCAM (IBM Tivoli Composite Application Management),可以根据实际情况选用。

使用飞信为系统监控报警
http://blog.chinaunix.net/u/32831/showart_1165303.html

 

一、飞信机器人软件
官网地址:http://www.it-adv.net/
需要Glibc2.4以上的版本;RHEL5默认安装的Glibc2.5,所不需要额外升级;

二、安装过程
下载包地址LINUX X86/32:支持库  最新程序fetion20080901004-linux.tar.gz
分别下载支持库和最新程序
1.安装支持库 
[root@RHEL5 fetion]# tar -xvf lib_lin_32.tar.gz.tar 
library_linux32/
library_linux32/libcrypto.so.0.9.8
library_linux32/libACE.so.5.4.7
library_linux32/libACE_SSL.so.5.4.7
library_linux32/libssl.so.0.9.8

[root@RHEL5 fetion]# cd library_linux32/
[root@RHEL5 library_linux32]# cp *so* /usr/lib

2.安装fetion
[root@RHEL5 fetion]# tar -xvf fetion20080901004-linux.tar.gz.tar 
[root@RHEL5 fetion]# mv install/  /opt/fetion
3. 测试fetion是否可以正常使用
[root@RHEL5 opt]# cd /opt/fetion/
[root@RHEL5 fetion]# ldd fetion 
        linux-gate.so.1 =>  (0x00969000)
        libACE.so.5.4.7 => /usr/lib/libACE.so.5.4.7 (0x00e35000)
        libACE_SSL.so.5.4.7 => /usr/lib/libACE_SSL.so.5.4.7 (0x00110000)
        libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00393000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00791000)
        libm.so.6 => /lib/libm.so.6 (0x00d55000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00940000)
        libc.so.6 => /lib/libc.so.6 (0x00c0a000)
        libdl.so.2 => /lib/libdl.so.2 (0x00d4f000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00d7e000)
        librt.so.1 => /lib/librt.so.1 (0x00d97000)
        libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x00510000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00da2000)
        /lib/ld-linux.so.2 (0x00bec000)
所有的库文件都可以正常找到

[root@RHEL5 fetion]# ./fetion -h 查看帮助

三、实际测试
1.登录飞信默认是中文utf8的,如果linux系统不支持utf8会出现乱码:我使用english的方式来登录啦。
测试帐号:13713718888
密码:123456 (如果密码中含有特殊字符,请使用单引号)
./fetion -u 13713718888 -p 123456 -EN
登录后输入?获得帮助
****************************************************************
指令                    指令说明
list                     好友列表: list
sms                    发送短信: sms 飞信号/手机号/编号 短信内容(换行请用\n代替)
chat                   在线消息: chat 飞信号/手机号/编号 短信内容(换行请用\n代替)
status                 在线状态: status online/busy/away/hidden [个性化信息]
add                    添加好友: add 飞信号/手机号 申请信息 本地呢称
del                     删除好友: del 飞信号/手机号/编号
invite                 邀请好友: invite 手机号 您的姓名(邀请好友开通飞信)
autoaccept         自动接受: autoaccept on/off/status 自动接受加为好友申请
myinfo                修改资料: myinfo nickname/impresa 内容(呢称/心情)
help                   帮助菜单: help/?
exit                   退出系统: quit/exit 
****************************************************************

sms 137******** "this is test message" # 这个就是我们需要的发送短信的指令啦!


2.脚本测试:
可以使用fetion的-b参数来实现p处理;
举例如下:
# vi p.sh
sms 137xxxxxxxx “msyqlserver is down”

保存后执行:
./fetion -u 137xxxxxxxx -p 123456 -b p.sh
就是一次发出报警信息。



3.配合监控脚本
#!/bin/bash
disk=$(df /dev/sda1 |grep /dev|awk '{print $5}'|tr -d "%")
if [ "$disk" -gt "80" ]; then
/opt/fetion/fetion -u 138xxxxxxxx -p 123456 -EN -b /opt/mon.sh  >>/opt/fetion.log 2>&1
else :
fi


4.脚本实例
监控网站是否可以正常访问,有问题时报警,恢复后提示 (注:如果复制粘贴,运行出错,注意查一下是否是某些字符复制时格式改变了)

#!/bin/sh

#############################Var################################

errpath=/tmp/alert-err
okpath=/tmp/alert-ok
fetionum=13811012345
fetionpass=12345
admin=13811012345

############################function############################
scan ()
{
rm -rf /tmp/tmp.wget
(time -p wget --delete-after  http://127.0.0.1) >/tmp/tmp.wget 2>&1

#setting realtime of run
realtime=$(cat /tmp/tmp.wget |grep "real"|awk '{ print $2}'|awk -F . '{print $1}')
#echo "Wget time is $realtime "

okstate=$(cat /tmp/tmp.wget |grep "OK"|awk '{print $5}')
#echo $okstate

}

alerterr ()
{
/opt/fetion/fetion -u $fetionum -p $fetionpass -EN -b $errpath
}


alertok ()
{
/opt/fetion/fetion -u $fetionum -p $fetionpass -EN -b $okpath
}
##############################Main###############################

while [ 1 ]
do
sleep 90
scan

if [ "$okstate" != "OK" ] ; then
if [ -f /tmp/err ];then 
echo "`date +%Y/%m/%d-%T`wget not ok but has been alert" 
# continue
else
echo "sms $admin `date +%Y/%m/%d-%T`  wget is not OK " >$errpath
echo "exit" >>$errpath
alerterr
echo "`date +%Y/%m/%d-%T` -----------------------------------> wget is not OK "
touch /tmp/err 
fi

else
if [ -f /tmp/err ];then
echo "sms $admin "`date +%Y/%m/%d-%T` Recover!! wget time is $realtime"" >$okpath
echo "exit" >>$okpath
alertok 
        rm /tmp/err
echo "`date +%Y/%m/%d-%T` ------------------------------------> Recover !!! wget time is $realtime"
# continue
else 
echo "`date +%Y/%m/%d-%T` wget time is $realtime running ok"
     fi


fi
done

 

end

你可能感兴趣的:(应用服务器,linux,IBM,websphere,tivoli)