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.