利用 wsadmin 工具啟用 PMI
請利用這個頁面,學習如何利用指令行(而不是管理主控台)來啟用「效能監視基礎架構」。
關於這項作業
程序
在 wsadmin 中,可以使用 Perf MBean 中的下列作業:
/** 取得 stats 的效能資料資訊 */
public void getConfig (ObjectName mbean);
/** 傳回現行統計資料集 */
public void getStatisticSet ();
/** 利用預先定義的統計資料集來啟用 PMI 資料。
統計資料集的有效值如下:"basic"、"extended"、"all" 和 "none" */
public void setStatisticSet (String statisticSet);
/** 以字串形式傳回現行自訂 set 規格 */
public void getCustomSetString ();
/** 利用細部控制來自訂已啟用的 PMI 資料。
這個方法可供選擇性地啟用或停用統計資料。
自訂 set 規格字串的格式是 STATS_NAME=ID1,ID2,ID3,用 ':' 區隔, 其中 STATS_NAME 和 ID 定義在 com.ibm.websphere.pmi.stat 套件內的 WS*Stat 介面中。
請利用 * 來啟用給定 PMI 模組中的所有統計資料。比方說,如果要啟用 JVM 和作用中
計數的所有統計資料、執行緒儲存區所用的儲存區大小,請使用 jvmRuntimeModule=*:threadPoolModule=3,4。
jvmRuntimeModule 字串是 WSJVMStats.NAME 常數的值,而 threadPoolModule 是
WSThreadPoolStats.NAME 的值。
*/
public void setCustomSetString (String customSpec, Boolean recursive);
/** 取得 MBean 的 stats*/
public void getStatsObject (ObjectName mbean, Boolean recursive);
/** 利用字串格式設定檢測層次。
這應該供 Script 作業用於簡易的字串處理。
STR 層次是一份用 ":" 連接的 moduleName=Level 清單。
附註:在 6.0 版中,這個方法已淘汰
*/
public void setInstrumentationLevel(String levelStr, Boolean recursive);
/** 在字串中取得所有最上層模組的檢測層次。
這應該供 Script 作業用於簡易的字串處理。
附註:在 6.0 版中,這個方法已淘汰
*/
public String getInstrumentationLevelString();
/** 以字串形式傳回 PMI 資料
附註:在 6.0 版中,這個方法已淘汰
*/
public String getStatsString(ObjectName on, Boolean recursive);
/** 以字串形式傳回 PMI 資料
用於 PMI 模組/子模組,不含直接的 MBean 對映。
附註:在 6.0 版中,這個方法已淘汰
*/
public String getStatsString(ObjectName on, String submoduleName, Boolean recursive);
/** 如果 MBean 有任何子模組的話,傳回子模組名稱
附註:在 6.0 版中,這個方法已淘汰
*/
public String listStatMemberNames(ObjectName on);
/** 取得 stats 的效能資料資訊 */
public void getConfig (ObjectName mbean);
/** 傳回現行統計資料集 */
public void getStatisticSet ();
/** 利用預先定義的統計資料集來啟用 PMI 資料。
統計資料集的有效值如下:"basic"、"extended"、"all" 和 "none" */
public void setStatisticSet (String statisticSet);
/** 以字串形式傳回現行自訂 set 規格 */
public void getCustomSetString ();
/** 利用細部控制來自訂已啟用的 PMI 資料。
這個方法可供選擇性地啟用或停用統計資料。
自訂 set 規格字串的格式是 STATS_NAME=ID1,ID2,ID3,用 ':' 區隔, 其中 STATS_NAME 和 ID 定義在 com.ibm.websphere.pmi.stat 套件內的 WS*Stat 介面中。
請利用 * 來啟用給定 PMI 模組中的所有統計資料。比方說,如果要啟用 JVM 和作用中
計數的所有統計資料、執行緒儲存區所用的儲存區大小,請使用 jvmRuntimeModule=*:threadPoolModule=3,4。
jvmRuntimeModule 字串是 WSJVMStats.NAME 常數的值,而 threadPoolModule 是
WSThreadPoolStats.NAME 的值。
*/
public void setCustomSetString (String customSpec, Boolean recursive);
/** 取得 MBean 的 stats*/
public void getStatsObject (ObjectName mbean, Boolean recursive);
/** 利用字串格式設定檢測層次。
這應該供 Script 作業用於簡易的字串處理。
STR 層次是一份用 ":" 連接的 moduleName=Level 清單。
附註:在更早版本中,這個方法已淘汰。*/
public void setInstrumentationLevel(String levelStr, Boolean recursive);
/** 在字串中取得所有最上層模組的檢測層次。
這應該供 Script 作業用於簡易的字串處理。
附註:在更早版本中,這個方法已淘汰。*/
public String getInstrumentationLevelString();
/** 以字串形式傳回 PMI 資料
附註:在更早版本中,這個方法已淘汰。 */
public String getStatsString(ObjectName on, Boolean recursive);
/** 以字串形式傳回 PMI 資料
用於 PMI 模組/子模組,不含直接的 MBean 對映。
附註:在更早版本中,這個方法已淘汰。 */
public String getStatsString(ObjectName on, String submoduleName, Boolean recursive);
/** 如果 MBean 有任何子模組的話,傳回子模組名稱
附註:在更早版本中,這個方法已淘汰。 */
public String listStatMemberNames(ObjectName on);
- DynaCache
- EJBModule
- EntityBean
- JDBCProvider
- J2CResourceAdapter
- JVM
- MessageDrivenBean
- ORB
- 伺服器
- SessionManager
- StatefulSessionBean
- StatelessSessionBean
- SystemMetrics
- ThreadPool
- TransactionService
- WebModule
- Servlet
- WLMAppServer
- WebServicesService
- WSGW
範例
請利用下列範例 Jacl 指令搭配 wsadmin 工具來取得 PMI 資料:
wsadmin>set perfName [$AdminControl completeObjectName type=Perf,*]
wsadmin>set perfOName [$AdminControl makeObjectName $perfName]
呼叫 getStatisticSet 作業
請利用這個方法來尋找目前有效的統計資料集:
wsadmin> $AdminControl invoke $perfName getStatisticSet
這個方法會傳回下列值之一:basic、extended、all、none。
呼叫 setStatisticSet 作業
請利用這個方法來啟用使用統計資料集進行的監視。
有效的統計資料集值如下:basic、extended、all、none。
wsadmin> set params [java::new {java.lang.Object[]} 1]
wsadmin> $params set 0 [java::new java.lang.String extended]
wsadmin> set sigs [java::new {java.lang.String[]} 1]
wsadmin> $sigs set 0 java.lang.String
wsadmin> $AdminControl invoke_jmx $perfOName setStatisticSet $params $sigs
呼叫 getConfig 作業
請利用這個方法來尋找給定元件之統計資料的相關資訊。
wsadmin> set jvmName [$AdminControl completeObjectName type=JVM,*]
wsadmin> set params [java::new {java.lang.Object[]} 1]
wsadmin> $params set 0 [java::new javax.management.ObjectName $jvmName]
wsadmin> set sigs [java::new {java.lang.String[]} 1]
wsadmin> $sigs set 0 javax.management.ObjectName
wsadmin> $AdminControl invoke_jmx $perfOName getConfig $params $sigs
這個方法會傳回下列內容:
Stats type=jvmRuntimeModule, Description=The performance data from the Java virtual machine run time. {name=UpTime, ID=4, type=CountStatistic, description=The amount of time (in seconds) that the Java virtual machine has been running., unit=SECOND, level=low, statisticSet=basic, resettable=false, aggregatable=true} {name=UsedMemory, ID=3, type=CountStatistic, description=The amount of used memory (in KBytes) in the Java virtual machine run time., unit=KILOBYTE, level=low, statisticSet=basic, resettable=false, aggregatable=true} {name=FreeMemory, ID=2, type=CountStatistic, description=The free memory (in KBytes) in the Java virtual machine run time., unit=KILOBYTE, level=low, statisticSet=all, resettable=false, aggregatable=true} {name=HeapSize, ID=1, type=BoundedRangeStatistic, description=The total memory (in KBytes) in the Java virtual machine run time., unit=KILOBYTE, level=high, statisticSet=basic, resettable=false, aggregatable=true}
呼叫 getCustomSetString 作業
這個作業提供字串格式的現行監視規格:
wsadmin> $AdminControl invoke $perfName getCustomSetString
輸出看起來類似下列內容:
jvmRuntimeModule=4,3,1:systemModule=2,1:threadPoolModule=4,3:thread PoolModule>HAManager.thread.pool=4,3:threadPoolModule>MessageListenerTh readPool=4,3:threadPoolModule>ORB.thread.pool=4,3:threadPoolModule>Serv let.Engine.Transports=4,3:threadPoolModule>TCS_DEFAULT=4,3:transactionM odule=4,19,16,18,3,7,6,1,14
這個輸出指出在 JVM 元件中啟用了統計資料 ID 1、3 和 4。 您可以利用先前的 getConfig 作業或利用 API 文件來找到統計資料 ID 的說明。 輸出包含整個伺服器的現行監視規格。 個別模組用 : 來區隔,> 用來作為模組內的分隔字元。
呼叫 setCustomSetString 作業
這個作業可用來選擇性地啟用或停用統計資料。 在下列指令中,啟用了 JVM 模組的統計資料 ID 1、2、3 和 4。 如果要啟用所有統計資料 ID,請使用星號(*)。
wsadmin> set params [java::new {java.lang.Object[]} 2]
wsadmin> $params set 0 [java::new java.lang.String jvmRuntimeModule=1,2,3,4]
wsadmin> $params set 1 [java::new java.lang.Boolean false]
wsadmin> set sigs [java::new {java.lang.String[]} 2]
wsadmin> $sigs set 0 java.lang.String
wsadmin> $sigs set 1 java.lang.Boolean
wsadmin> $AdminControl invoke_jmx $perfOName setCustomSetString $params $sigs
呼叫 getStatsObject 作業
這個作業用來取得給定的 MBean 的統計資料。 下列範例會取得 JVM 的統計資料:
wsadmin> set jvmName [$AdminControl completeObjectName type=JVM,*]
wsadmin> set params [java::new {java.lang.Object[]} 2]
wsadmin> $params set 0 [java::new javax.management.ObjectName $jvmName]
wsadmin> $params set 1 [java::new java.lang.Boolean false]
wsadmin> set sigs [java::new {java.lang.String[]} 2]
wsadmin> $sigs set 0 javax.management.ObjectName
wsadmin> $sigs set 1 java.lang.Boolean
wsadmin> $AdminControl invoke_jmx $perfOName getStatsObject $params
$sigs
Stats name=jvmRuntimeModule, type=jvmRuntimeModule#
{
name=HeapSize, ID=1, description=The total memory (in KBytes) in
the Java virtual machine run time., unit=KILOBYTE, type=BoundedRangeStatistic, lowWaterMark=51200,
highWaterMark=263038, current=263038, integral=2.494158617766E12, lowerBound
=51200, upperBound=262144
name=FreeMemory, ID=2, description=The free memory (in KBytes) in
the Java virtual machine run time., unit=KILOBYTE, type=CountStatistic,
count=53509
name=UsedMemory, ID=3, description=The amount of used memory (in KBytes) in
the Java virtual machine run time., unit=KILOBYTE,
type=CountStatistic, count=209528
name=UpTime, ID=4, description=The amount of time (in seconds) that
the Java virtual machine has been running., unit=SECOND,
type=CountStatistic, count=83050
}
呼叫 getInstrumentationLevelString 作業
請使用 invoke,因為它沒有參數。
wsadmin>$AdminControl invoke $perfName getInstrumentationLevelString
beanModule=H:cacheModule=H:connectionPoolModule=H:j2cModule=H:jvmRu ntimeModule=H:orbPerfModule=H:servletSessionsModule=H:systemModule= H:threadPoolModule=H:transactionModule=H:webAppModule=H
- 設定參數("pmi=l" 是將所有模組設為低層次的簡單方法)。
wsadmin>set params [java::new {java.lang.Object[]} 2]
wsadmin>$params set 0 [java::new java.lang.String pmi=l] wsadmin>$params set 1 [java::new java.lang.Boolean true]
- 設定簽章。
wsadmin>set sigs [java::new {java.lang.String[]} 2]
wsadmin>$sigs set 0 java.lang.String wsadmin>$sigs set 1 java.lang.Boolean
- 呼叫方法。
請使用 invoke_jmx,因為它有參數。
wsadmin>$AdminControl invoke_jmx $perfOName setInstrumentationLevel $params $sigs
呼叫 getStatsString(ObjectName, Boolean) 作業
如果您知道 MBean ObjectName,您可以傳遞正確的參數來呼叫這個方法。這裡使用的 JVM MBean 便是一個例子。
- 取得 MBean 查詢字串。
例如,JVM MBean。
wsadmin>set jvmName [$AdminControl completeObjectName type=JVM,*]
- 設定參數。
wsadmin>set params [java::new {java.lang.Object[]} 2]
wsadmin>$params set 0 [$AdminControl makeObjectName $jvmName] wsadmin>$params set 1 [java::new java.lang.Boolean true]
- 設定簽章。
wsadmin>set sigs [java::new {java.lang.String[]} 2] wsadmin>$sigs set 0 javax.management.ObjectName wsadmin>$sigs set 1 java.lang.Boolean
- 呼叫方法。
wsadmin>$AdminControl invoke_jmx $perfOName getStatsString $params $sigs
{Description jvmRuntimeModule.desc} {Descriptor {{Node wenjianpc} {Server server1} {Module jvmRuntimeModule} {Name jvmRuntimeModule} {Type MODULE}}} {Level 7} {Data {{{Id 4} {Descriptor {{Node wenjianpc} {Server server1} {Module jvmRuntimeModule} {Name jvmRuntimeModule} {Type DATA}}} {PmiDataInfo {{Name jvmRuntimeModule.upTime} {Id 4} {Description jvmRuntimeModule.upTime.desc} {Level 1} {Comment {The amount of time in seconds the JVM has been running}} {SubmoduleName null} {Type 2} {Unit unit.second} {Resettable false}}} {Time 1033670422282} {Value {Count 638} }} {{Id 3} {Descriptor {{Node wenjianpc} {Server server1} {Module jvmRuntimeModule} {Name jvmRuntimeModule} {Type DATA}}} {PmiDataInfo {{Name jvmRuntimeModule.usedMemory} {Id 3} {Description jvmRuntimeModule.usedMemory.desc} {Level 1} {Comment {Used memory in JVM runtime}} {SubmoduleName null} {Type 2} {Unit unit.kbyte} {Resettable false}}} {Time 1033670422282} {Value {Count 66239} }} {{Id2} {Descriptor {{Node wenjianpc} {Server server1} {Module jvmRuntimeModule} {Name jvmRuntimeModule} {Type DATA}}} {PmiDataInfo {{Name jvmRuntimeModule.freeMemory} {Id 2} {Description jvmRuntimeModule.freeMemory.desc} {Level 1} {Comment {Free memory in JVM runtime}} {SubmoduleName null} {Type 2} {Unit unit.kbyte} {Resettable false}}} {Time 1033670422282} {Value {Count 34356} }} {{Id 1} {Descriptor{{Node wenjianpc} {Server server1} {Module jvmRuntimeModule} {Name jvmRuntimeModule} {Type DATA}}} {PmiDataInfo {{Name jvmRuntimeModule.totalMemory} {Id 1} {Description jvmRuntimeModule.totalMemory.desc} {Level 7} {Comment {Total memory in JVM runtime}} {SubmoduleName null} {Type 5} {Unit unit.kbyte} {Resettable false}}} {Time 1033670422282} {Value {Current 100596} {LowWaterMark 38140} {HighWaterMark 100596} {MBean 38140.0} }}}}
呼叫 getStatsString (ObjectName, String, Boolean) 作業
這個作業使用另一個字串參數,它是用於沒有相符 MBean 的 PMI 模組。 在這個情況下,母項 MBean 與代表 PMI 模組的字串名稱一起使用。 呼叫 listStatMemberNames 可以找到 MBean 中可用的字串名稱。 例如,beanModule 是含括所有 Enterprise JavaBeans 來聚集 PMI 資料的邏輯模組,但 beanModule 沒有 MBean。 因此,您可以傳遞伺服器 MBean ObjectName 和 (beanModule) 字串,以便在 beanModule 中取得 PMI 資料。
- 取得 MBean 查詢字串。
例如,伺服器 MBean:
wsadmin>set mySrvName [$AdminControl completeObjectName type=Server,name=server1,node=wenjianpc,*]
- 設定參數。
wsadmin>set params [java::new {java.lang.Object[]} 3]
wsadmin>$params set 0 [$AdminControl makeObjectName $mySrvName]
wsadmin>$params set 1 [java::new java.lang.String beanModule] wsadmin>$params set 2 [java::new java.lang.Boolean true]
- 設定簽章。
wsadmin>set sigs [java::new {java.lang.String[]} 3]
wsadmin>$sigs set 0 javax.management.ObjectName
wsadmin>$sigs set 1 java.lang.String wsadmin>$sigs set 2 java.lang.Boolean
- 呼叫方法。
wsadmin>$AdminControl invoke_jmx $perfOName getStatsString $params $sigs
呼叫 listStatMemberNames 作業
- 取得 MBean 查詢字串。例如,伺服器:
wsadmin>set mySrvName [$AdminControl completeObjectName type=Server,name=server1,node=wenjianpc,*]
- 設定參數。
wsadmin>set params [java::new {java.lang.Object[]} 1] wsadmin>$params set 0 [$AdminControl makeObjectName $mySrvName]
- 設定簽章。
wsadmin>set sigs [java::new {java.lang.String[]} 1] wsadmin>$sigs set 0 javax.management.ObjectName wsadmin>$AdminControlinvoke_jmx $perfOName listStatMemberNames $params $sigs
beanModule connectionPoolModule j2cModule servletSessionsModule
threadPoolModule
webAppModule
print "\n---------------------------------------------------------------------- "
print "Obtain the Perf MBean ObjectName"
print "------------------------------------------------------------------------ "
perfName = AdminControl.completeObjectName ('type=Perf,*')
perfOName = AdminControl.makeObjectName (perfName)
print perfOName
print "------------------------------------------------------------------------ \n"
print "\n---------------------------------------------------------------------- "
print "Invoke getStatisticSet operation "
print "------------------------------------------------------------------------ "
print AdminControl.invoke (perfName, 'getStatisticSet')
print "------------------------------------------------------------------------ \n"
print "\n---------------------------------------------------------------------- "
print "Invoke setStatisticSet operation"
print "------------------------------------------------------------------------ "
params = ['extended']
sigs = ['java.lang.String']
print AdminControl.invoke_jmx (perfOName, 'setStatisticSet', params, sigs)
print "------------------------------------------------------------------------ \n"
print "\n---------------------------------------------------------------------- "
print "Invoke getConfig operation"
print "------------------------------------------------------------------------ "
jvmName = AdminControl.completeObjectName ('type=JVM,*')
params = [AdminControl.makeObjectName (jvmName)]
sigs = ['javax.management.ObjectName']
print AdminControl.invoke_jmx (perfOName, 'getConfig', params, sigs)
print "------------------------------------------------------------------------ \n"
print "\n---------------------------------------------------------------------- "
print "Invoke getCustomSetString operation"
print "------------------------------------------------------------------------ "
print AdminControl.invoke (perfName, 'getCustomSetString')
print "------------------------------------------------------------------------ \n"
print "\n---------------------------------------------------------------------- "
print "Invoke setCustomSetString operation"
print "------------------------------------------------------------------------ "
params = ['jvmRuntimeModule=1,2,3,4', java.lang.Boolean ('false')]
sigs = ['java.lang.String', 'java.lang.Boolean']
print AdminControl.invoke_jmx (perfOName, 'setCustomSetString', params, sigs)
print "------------------------------------------------------------------------ \n"
print "\n---------------------------------------------------------------------- "
print "Invoke getStatsObject operation"
print "------------------------------------------------------------------------ "
jvmName = AdminControl.completeObjectName ('type=JVM,*')
params = [AdminControl.makeObjectName (jvmName), java.lang.Boolean ('false')]
sigs = ['javax.management.ObjectName', 'java.lang.Boolean']
print AdminControl.invoke_jmx (perfOName, 'getStatsObject', params, sigs)
print "------------------------------------------------------------------------ \n"
print "\n---------------------------------------------------------------------- "
print "Invoke getInstrumentationLevelString operation"
print "------------------------------------------------------------------------ "
print AdminControl.invoke (perfName, 'getInstrumentationLevelString')
print "------------------------------------------------------------------------ \n"
print "\n---------------------------------------------------------------------- "
print "Invoke setInstrumentationLevel operation - enable/disable PMI counters "
print "------------------------------------------------------------------------ "
params = ['pmi=l', java.lang.Boolean ('true')]
sigs = ['java.lang.String', 'java.lang.Boolean']
print AdminControl.invoke_jmx (perfOName, 'setInstrumentationLevel', params, sigs)
print "------------------------------------------------------------------------ \n"
print "\n---------------------------------------------------------------------- "
print "Invoke getStatsString(ObjectName, Boolean) operation"
print "------------------------------------------------------------------------ "
jvmName = AdminControl.completeObjectName ('type=JVM,*')
params = [AdminControl.makeObjectName (jvmName), java.lang.Boolean ('true')]
sigs = ['javax.management.ObjectName', 'java.lang.Boolean']
print AdminControl.invoke_jmx (perfOName, 'getStatsString', params, sigs)
print "------------------------------------------------------------------------ \n"
print "\n---------------------------------------------------------------------- "
print "Invoke getStatsString (ObjectName, String, Boolean) operation"
print "------------------------------------------------------------------------ "
mySrvName = AdminControl.completeObjectName ('type=Server,name=server1,node=wcsNode,*')
params = [AdminControl.makeObjectName (mySrvName),
'beanModule',
java.lang.Boolean ('true')]
sigs = ['javax.management.ObjectName',
'java.lang.String',
'java.lang.Boolean')
print AdminControl.invoke_jmx (perfOName, 'getStatsString', params, sigs)
print "------------------------------------------------------------------------ \n"
print "\n---------------------------------------------------------------------- "
print "Invoke listStatMemberNames operation"
print "------------------------------------------------------------------------ "
mySrvName = AdminControl.completeObjectName ('type=Server,name=server1,node=wcsNode,*')
params = [AdminControl.makeObjectName (mySrvName)]
sigs = ['javax.management.ObjectName']
print AdminControl.invoke_jmx (perfOName, 'listStatMemberNames', params, sigs)
print "------------------------------------------------------------------------ \n"