Index by: file name |
procedure name |
procedure call |
annotation
setRPAOn_proc.tcl
(annotations | original source)
#
# Set performance monitoring service on.
# Set performance monitoring flags.
#
####################################################################
# Patrick Finnegan 28/09/2005. V1.
####################################################################
namespace eval setPerfMonOn {
proc setPerfMonOn { } {
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
# set PMI properties
if { [ catch { setPMIOn } r ] == 0 } {
array set serverIdArray $r
} else {
return -code error $r
}
# set JVM properties.
if { [ catch { setJVMProps serverIdArray } r ] == 0 } {
set continue true
} else {
puts $r
return -code error $r
}
#set runtime advisor.
if { [ catch { setRunPerfAdvisor serverIdArray } r ] == 0 } {
set continue true
} else {
puts $r
return -code error
}
}
#############
# Set PMI on
#############
proc setPMIOn { } {
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
# get the required server information and store in an array indexed by serverId.
# the performance monitor metrics need to be switched on at the node agent and server levels.
# From the DM list the servers and select the node agent and app server instances.
# get the required server information and store in an array indexed by serverId.
set PMIServiceList [ $AdminConfig list PMIService ]
foreach i [ $AdminConfig list Server ] {
set serverType [ $AdminConfig showAttribute $i serverType ]
if { $serverType == "APPLICATION_SERVER" | $serverType == "NODE_AGENT" } {
lappend serverList $i
set serverName [ $AdminConfig showAttribute $i name ]
regexp {(.*nodes\/)(.*)(\/servers.*)} $i a b c d
set nodeId [ $AdminConfig getid /Node:$c/ ]
set nodeName [ $AdminConfig showAttribute $nodeId name ]
set serverIndex [ lsearch -glob $PMIServiceList *$serverName* ]
set PMIServiceId [ lindex $PMIServiceList $serverIndex ]
set serverIdArray($i) [ list $serverName $nodeName $PMIServiceId ]
}
}
putsLog "Performance monitoring will be switched on for the following servers:"
foreach i [ lsort $serverList ] {
putsLog [ format "%-5s %-30s %-30s" " " "Node: [ lindex $serverIdArray($i) 0 ] " "Server: [ lindex $serverIdArray($i) 1 ]" ]
}
putsLog "Current Performance Monitor Settings are:"
foreach i $serverList {
set enable [ $AdminConfig showAttribute [ lindex $serverIdArray($i) 2 ] enable ]
set initialSpecLevel [ $AdminConfig showAttribute [ lindex $serverIdArray($i) 2 ] initialSpecLevel ]
putsLog [ format "%-5s %-20s %-20s %-s" " " [ lindex $serverIdArray($i) 0 ] "enabled:" $enable ]
putsLog [ format "%-5s %-20s %-20s %-s" " " " " "initialSpecLevel:" $initialSpecLevel ]
}
putsLog "Applying new PMI settings:"
set enable [ list enable true ]
append X beanModule=X:
append X cacheModule=X:
append X connectionPoolModule=X:
append X j2cModule=X:
append X jvmRuntimeModule=X:
append X orbPerfModule=X:
append X servletSessionsModule=X:
append X systemModule=X:
append X threadPoolModule=X:
append X transactionModule=X:
append X webAppModule=X:
append X wlmModule=X:
append X webServicesModule=X:
append X wsgwModule=X:
set initialSpecLevel [ list initialSpecLevel $X ]
set attrsList [ list $enable $initialSpecLevel ]
foreach i $serverList {
if { [ catch { $AdminConfig modify [ lindex $serverIdArray($i) 2 ] $attrsList } r ] == 0 } {
putsLog [ format "%-5s %-20s %-s" " " "[ lindex $serverIdArray($i) 0 ]\:" "PMI settings applied successfully" ]
putsLog $r
} else {
putsLog [ format "%-5s %-20s %-s" " " "[ lindex $serverIdArray($i) 0 ]\:" "ERROR: failed to apply PMI settings." ]
putsLog $r
return -code error $r
}
}
putsLog "New PMI settings are:"
foreach i $serverList {
set enable [ $AdminConfig showAttribute [ lindex $serverIdArray($i) 2 ] enable ]
set initialSpecLevel [ $AdminConfig showAttribute [ lindex $serverIdArray($i) 2 ] initialSpecLevel ]
putsLog [ format "%-5s %-20s %-20s %-s" " " [ lindex $serverIdArray($i) 0 ] "enabled:" $enable ]
putsLog [ format "%-5s %-20s %-20s %-s" " " " " "initialSpecLevel:" $initialSpecLevel ]
}
return [ array get serverIdArray ]
}
####################################################################
# Set JVM Properties.
####################################################################
proc setJVMProps { serverIdArray } {
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
upvar $serverIdArray localArray
#parray localArray
putsLog "Existing JVM properties are:"
foreach { serverId values } [ array get localArray ] {
putsLog [ format "%-5s %-20s %-20s% -s" " " "[ lindex $localArray($serverId) 1 ]" "[ lindex $localArray($serverId) 0 ]" "JVM generic arguments are:" ]
set jvmId [ $AdminConfig list JavaVirtualMachine $serverId ]
# if generic JVM arguments exist display then add them to the server id array.
set existingGenericJvmArguments [ $AdminConfig showAttribute $jvmId genericJvmArguments ]
if { [ llength $existingGenericJvmArguments ] != 0 } {
foreach i $existingGenericJvmArguments {
putsLog [ format "%-10s %-40s" " " $i ]
}
}
# add the generic arguments variable to the list even if empty.
# the contents of the array element is a list.
set localArray($serverId) [ lappend localArray($serverId) $jvmId $existingGenericJvmArguments ]
}
# the new generic arguments need to be appended to the existing args
# otherwise the existing args are overwritten. Check whether the arguments
# already exist. If so merge the existing list with the new list and modify.
foreach { serverId values } [ array get localArray ] {
if { [ lsearch [ lindex $localArray($serverId) 4 ] "-XrunpmiJvmpiProfiler" ] != -1 } {
set continue true
} else {
set args [ list -XrunpmiJvmpiProfiler ]
# the existing generic jvm args may contain variables like "${WPS_JVM_ARGUMENTS_EXT} that are not quoted properly."
# reformat the list
set currentJVMArgs [ lindex $localArray($serverId) 4 ]
if { $currentJVMArgs == {} } {
set currentJVMArgs2 {}
} else {
foreach i $currentJVMArgs {
lappend currentJVMArgs2 $i
}
}
set genericJvmArguments [ list genericJvmArguments [ eval concat $currentJVMArgs2 $args ] ]
set attrList [ list $genericJvmArguments ]
if { [ catch { $AdminConfig modify [ lindex $localArray($serverId) 3 ] $attrList } r ] == 0 } {
putsLog [ format "%-5s %-20s %-s" " " "[ lindex $localArray($serverId) 0 ]\:" "JVM settings applied successfully" ]
putsLog $r
} else {
putsLog [ format "%-5s %-20s %-s" " " "[ lindex $localArray($serverId) 0 ]\:" "ERROR: failed to apply JVM settings." ]
putsLog $r
return -code error $r
}
}
}
# display the new generic JVM arguments.
foreach { serverId values } [ array get localArray ] {
putsLog [ format "%-5s %-15s %-15s %-s" " " "[ lindex $localArray($serverId) 1 ]" "[ lindex $localArray($serverId) 0 ]" "New JVM generic arguments are:" ]
set newGenericJvmArguments [ $AdminConfig showAttribute [ lindex $localArray($serverId) 3 ] genericJvmArguments ]
if { [ llength $newGenericJvmArguments ] != 0 } {
foreach i $newGenericJvmArguments {
putsLog [ format "%-10s %-40s" " " $i ]
}
}
}
}
####################################################################
# Enable Runtime Performance Advisor.
# NB - server must be running to pick up MBean.
####################################################################
proc setRunPerfAdvisor { serverIdArray } {
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
upvar $serverIdArray localArray
# get the list of running servers.
parray localArray
foreach { serverId values } [ array get localArray ] {
set serverName [ lindex $localArray($serverId) 0 ]
set nodeName [ lindex $localArray($serverId) 1 ]
puts "servername is $serverName"
# there may be servers with the same name on different nodes.
# differenciate by node.
set perfId [ $AdminControl queryNames mbeanIdentifier=ServerRuleDriverMBean2,node=$nodeName,process=$serverName,* ]
if { [ llength $perfId ] != 0 } {
lappend beanList [ list $nodeName $serverName $perfId ]
}
}
# display the running servers
#if { [ info exist beanList ] == 0 } {
#
# putsLog "No running servers - no runtime performance monitor set."
# return
#} else {
# foreach i $beanList {
# putsLog "Current runtime performance monitor status."
# set perfId [ lindex $i 2 ]
# puts "\n $perfId \n"
# set enabled [ $AdminControl getAttribute [ lindex $i 2 ] enabled ]
# putsLog [ format "%-5s %-15s %-15s %s" " " [ lindex $i 1 ] [ lindex $i 0 ] $enabled ]
# }
#}
#putsLog "Running servers are:"
# if { [ string length $perfId ] != 0 } {
#
# # get existing arguments
# set enabled [ $AdminControl getAttribute $perfId enabled ]
# puts "\nCurrent RPA Status is: $enabled\n "
# $AdminControl setAttribute $perfId enabled true
# $AdminControl invoke $perfId reInit
# set enabled [ $AdminControl getAttribute $perfId enabled ]
# puts "New RPA Status is: $enabled\n "
# } else {
# puts "$serverName is not running. Skip RPA enabling.\n"
# }
#putsLog [ format "%-5s %-20s %-20s% -s" " " "[ lindex $localArray($serverId) 1 ]" "[ lindex $localArray($serverId) 0 ]" "JVM generic arguments are:" ]
#set jvmId [ $AdminConfig list JavaVirtualMachine $serverId ]
## if generic JVM arguments exist display then add them to the server id array.
#set existingGenericJvmArguments [ $AdminConfig showAttribute $jvmId genericJvmArguments ]
#if { [ llength $existingGenericJvmArguments ] != 0 } {
# foreach i $existingGenericJvmArguments {
# putsLog [ format "%-10s %-40s" " " $i ]
# }
#}
## add the generic arguments variable to the list even if empty.
## the contents of the array element is a list.
#set localArray($serverId) [ lappend localArray($serverId) $jvmId $existingGenericJvmArguments ]
}
#set perfId [ $AdminControl queryNames mbeanIdentifier=ServerRuleDriverMBean,process=$serverName,*]
## if the server is not running the mbean will be null.
#if { [ string length $perfId ] != 0 } {
#
# # get existing arguments
# set enabled [ $AdminControl getAttribute $perfId enabled ]
# puts "\nCurrent RPA Status is: $enabled\n "
# $AdminControl setAttribute $perfId enabled true
# $AdminControl invoke $perfId reInit
# set enabled [ $AdminControl getAttribute $perfId enabled ]
# puts "New RPA Status is: $enabled\n "
#} else {
# puts "$serverName is not running. Skip RPA enabling.\n"
#}
}
Index by: file name |
procedure name |
procedure call |
annotation
File generated 2007-08-07 at 13:42.