Performance 使用jython从WebSpherePMI数据获取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

尝试制作一个非常简单的jython脚本,从websphere获取基本的PMI数据。获取JVM数据(如空闲堆等)很简单(而且有效)

但后来我尝试对WebContainer线程池执行类似的操作,但失败了

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)