Performance 使用jython从WebSpherePMI数据获取webcontainer
尝试制作一个非常简单的jython脚本,从websphere获取基本的PMI数据。获取JVM数据(如空闲堆等)很简单(而且有效) 但后来我尝试对WebContainer线程池执行类似的操作,但失败了Performance 使用jython从WebSpherePMI数据获取webcontainer,performance,websphere,jython,websphere-8,Performance,Websphere,Jython,Websphere 8,尝试制作一个非常简单的jython脚本,从websphere获取基本的PMI数据。获取JVM数据(如空闲堆等)很简单(而且有效) 但后来我尝试对WebContainer线程池执行类似的操作,但失败了 threadPoolName = AdminControl.completeObjectName('name=WebContainer,type=ThreadPool,process=PTEIRMW_APPSERVER801,*') threadPoolOName = AdminControl.ma
threadPoolName = AdminControl.completeObjectName('name=WebContainer,type=ThreadPool,process=PTEIRMW_APPSERVER801,*')
threadPoolOName = AdminControl.makeObjectName (threadPoolName)
params = [AdminControl.makeObjectName (threadPoolName), java.lang.Boolean ('false')]
sigs = ['javax.management.ObjectName', 'java.lang.Boolean']
AdminControl.invoke_jmx (threadPoolOName, 'getStatsObject', params, sigs)
错误是
WASX7015E:异常运行命令:“AdminControl.invoke_jmx(threadPoolOName,'getStatsObject',params,sigs)”;例外信息:
javax.management.MBeanException
javax.management.ServiceNotFoundException:操作getStatsObject不在ModelMBeanInfo中
有什么想法吗?我特别只想要WebContainer线程池(最好是活动线程…但我以后可以过滤掉)您需要从该MBean中检索
stats
属性:
on=AdminControl.queryNames('*,name=WebContainer,type=ThreadPool,process=PTEIRMW\u APPSERVER801')
打印AdminControl.getAttribute_jmx(AdminControl.makeObjectName(打开),'stats')
相同的功能,这次使用WDR库()
print getJMXMBean1(type='ThreadPool',name='WebContainer',process='PTEIRMW_APPSERVER801').stats
坦白:我是《世界数据报告》的撰稿人之一。答案如下(经过清理和更通用的版本):
但我也测试了@Martin Plonkas的答案,它也很有效真是一个有趣的项目!我一定会调查的,我最后从一位同事那里得到了答案。不知道为什么我决定开始为线程池使用不同的方法。。。但回到我的JVM方法,我得到了一个工作脚本:)
threadPoolName = AdminControl.completeObjectName('name=WebContainer,type=ThreadPool,process=PTEIRMW_APPSERVER801,*')
threadPoolOName = AdminControl.makeObjectName (threadPoolName)
params = [AdminControl.makeObjectName (threadPoolName), java.lang.Boolean ('false')]
sigs = ['javax.management.ObjectName', 'java.lang.Boolean']
AdminControl.invoke_jmx (threadPoolOName, 'getStatsObject', params, sigs)
#Get the AppServer from parameter
appServer = sys.argv[0]
perfName = AdminControl.completeObjectName ('type=Perf,process='+appServer+',*')
perfOName = AdminControl.makeObjectName (perfName)
sigs = ['javax.management.ObjectName', 'java.lang.Boolean']
# Getting the JVM Data
jvmName = AdminControl.completeObjectName ('type=JVM,process='+appServer+',*')
params = [AdminControl.makeObjectName (jvmName), java.lang.Boolean ('false')]
print AdminControl.invoke_jmx (perfOName, 'getStatsObject', params, sigs)
# Getting the threadpool data
threadPoolName = AdminControl.completeObjectName('name=WebContainer,type=ThreadPool,process='+appServer+',*')
params = [AdminControl.makeObjectName (threadPoolName), java.lang.Boolean ('false')]
print AdminControl.invoke_jmx (perfOName, 'getStatsObject', params, sigs)