# # Get JVM PMI info for server. # NB: server must be running and PMI must be switched on. # #################################################################### # Patrick Finnegan 11/11/2005. V1. #################################################################### #################################################################### # proc - get JVM details #################################################################### namespace eval getJVMInfoNew { #################################################################### # proc - get JVM details #################################################################### proc getJVMInfoNew { nodeName serverName } { set procName [ lindex [ info level 0 ] 0 ] putsLog "## proc - $procName" foreach i [ info args $procName ] { upvar 0 $i ilocal set propertiesArray($i) $ilocal } putsLog "properties are.................." foreach { a b } [ array get propertiesArray ] { putsLog [ format "%-35s %s" "$a" "$b" ] } global AdminConfig global AdminControl global null global Help putsLog "getJVMInfonew" #putsLog "get the performance mbean for the server - should be just one." append queryString "WebSphere:*,node=" append queryString $nodeName append queryString ",process=" append queryString $serverName append queryString ",type=Perf" putsLog " query string is: $queryString " set perfMbean [ $AdminControl queryNames $queryString ] if { $perfMbean == $null || [ string length $perfMbean] == 0 } { putsLog " $serverName is not running or PMI is not enabled for $serverName. " return -code error } else { set donothing true } #putsLog "get the JVM Bean." unset queryString append queryString "WebSphere:*,node=" append queryString $nodeName append queryString ",process=" append queryString $serverName append queryString ",type=JVM" #putsLog " query string is: $queryString " set jvmMbean [ $AdminControl queryNames $queryString ] if { $jvmMbean == $null || [ string length $jvmMbean] == 0 } { putsLog " $serverName jvm is not running " return } else { set donothing true } set jvmMbeanO [ $AdminControl makeObjectName $jvmMbean ] set boolean [ java::new Boolean true ] # NB: brackets around array object. set parramsArray [ java::new {Object[]} {2} [ list $jvmMbeanO $boolean ] ] set signaturesArray [ java::new {String[]} {2} [ list javax.management.ObjectName java.lang.Boolean ] ] set perfMbeanO [ $AdminControl makeObjectName $perfMbean ] #get the stats list from the performance bean set jvmInfo [ $AdminControl invoke_jmx $perfMbeanO "getStatsString" $parramsArray $signaturesArray ] set jvmInfoString [ $jvmInfo toString ] lappend valuesList [ list "Cell" [ $AdminControl getCell ] ] #puts "\n pmi data is $jvmInfoString \n " #get PMI data sub list. set e4 [ lindex $jvmInfoString 3 ] set dataList [ lindex $e4 1 ] set dataListL [ llength $dataList ] # sort in id order set dataList [ lsort -dictionary -index 0 $dataList ] set topParms [ lindex $dataList 0 ] set width 60 set descriptorIndex [ lsearch -glob $topParms {*Descriptor*} ] set descriptor [ lindex $topParms $descriptorIndex ] set x1 "[ lindex [ lindex [ lindex $descriptor 1 ] 0 ] 0 ]" set x2 "[ lindex [ lindex [ lindex $descriptor 1 ] 0 ] 1 ]" putsLog [ format "%-${width}s %s" $x1 $x2 ] lappend valuesList [ list $x1 $x2 ] set x1 "[ lindex [ lindex [ lindex $descriptor 1 ] 1 ] 0 ]" set x2 "[ lindex [ lindex [ lindex $descriptor 1 ] 1 ] 1 ]" putsLog [ format "%-${width}s %s" $x1 $x2 ] lappend valuesList [ list $x1 $x2 ] set timeIndex [ lsearch -glob $topParms {*Time*} ] set time [ lindex $topParms $timeIndex ] set x1 [ lindex [ lindex $topParms $timeIndex ] 0 ] set x2 [ clock format [ clock seconds ] -format "%Y-%m-%d %H:%M:%S" ] putsLog [ format "%-${width}s %s" $x1 $x2 ] lappend valuesList [ list $x1 $x2 ] set valueIndex [ lsearch -glob $topParms {*Value*} ] set value [ lindex $topParms $valueIndex ] set x1 [ lindex [ lindex $value 1 ] 0 ] set x2 [ lindex [ lindex $value 1 ] 1 ] putsLog [ format "%-${width}s %s" $x1 $x2 ] lappend valuesList [ list $x1 $x2 ] set x1 [ lindex [ lindex $value 2 ] 0 ] set x2 [ lindex [ lindex $value 2 ] 1 ] putsLog [ format "%-${width}s %s" $x1 $x2 ] lappend valuesList [ list $x1 $x2 ] set x1 [ lindex [ lindex $value 3 ] 0 ] set x2 [ lindex [ lindex $value 3 ] 1 ] putsLog [ format "%-${width}s %s" $x1 $x2 ] lappend valuesList [ list $x1 $x2 ] set x1 [ lindex [ lindex $value 4 ] 0 ] set x2 [ lindex [ lindex $value 4 ] 1 ] putsLog [ format "%-${width}s %s" $x1 $x2 ] lappend valuesList [ list $x1 $x2 ] set x 1 lappend valuesList [ list $x1 $x2 ] set e [ lindex $dataList $x ] set idIndex [ lsearch -glob $e {*Id*} ] set id [ lindex $e $idIndex ] set pmiDataInfoIndex [ lsearch -glob $e {*PmiDataInfo*} ] set pmiDataInfo [ lindex $e $pmiDataInfoIndex ] set nl [ eval concat [ join $e ] ] set commentIndex [ lsearch -glob $nl {*Comment*} ] set comment [ lindex [ lindex $nl $commentIndex ] 1 ] set valueIndex [ lsearch -glob $e {*Value*} ] set value [ lindex [ lindex [ lindex $e $valueIndex ] 1 ] 1 ] putsLog [ format "%-${width}s %s" $comment $value ] lappend valuesList [ list $comment $value ] incr x return $valuesList } }