Monitoring the Siebel application III

In Siebel there are multiple integration strategies. When using integration workflows, the performance can be monitored based on the available task statistics of the related workflow component from srvrmgr. I wrote three different perl scripts to monitor different aspects of the component tasks.

  • Number of tasks per second for a specified component
  • The average duration of a task for a specified component
  • The workload balancing of tasks for a specific component over a group of servers

All monitors do make use of the
siebcmdserver which for the first two mentioned monitors should be installed locally and run in local mode. If required the scripts can call a remote centralized siebcmdserver by making small modification to those scripts. Since all centralized monitoring applications like IBM/Tivoli Monitoring and Mercury/HP Sitescope still execute their monitoring scripts locally this would make no sense. Although it seems not logical to use a local siebcmdserver to communicate with the srvrmgr, there is a found reason for the use of this interface instead of using a direct connection with srvrmgr. All monitoring applications do execute monitoring-scripts with a specified interval in an isolated session. When using a direct connection with the srvrmgr, the session should be established every interval. When establishing a session with srvrmgr the credentials of the user have to be validated which considerably slows down the monitor and generates unnecessary load. The srvrmgr also generates a separate srvrmgr logfile for each session. When using de siebcmdserver only one srvrmgr session has to be started once which handles all srvrmgr instructions and therefore greatly reduce the load on the application an the number of generate srvrmgr logfiles.

Because all three scripts communicate to the srvrmgr through the siebcmdserver, the local port and session key have to be set in the scripts matching the respective definitions in siebcmdserver. The variables can be found in the lexical variable declaration section. An example of the variable declarations is shown here:

my($port) = "3456" ; # siebcmdserver portnumber
my($sk) = "AF13BAA8A078E4CF" ; # siebcmdserver sessionkey



mon_taskpsec.pl

Syntax
: ./mon_taskpsec.pl {compname}

{compname} Componentname, e.g. "WfProcMgr"

Returns: Integer value
<0 Error
>=0 Number of tasks per second


mon_taskavgdur.pl

Syntax: ./mon_taskavfdur.pl {compname}

{compname} Componentname, e.g. "WfProcMgr"

Returns: Real value
<0 error
>=0 Average durarion of a task in seconds


mon_tskbalance.pl

When multiple logical or physical servers fulfill in an Siebel enterprise fulfill the same function due to redundancy, the load over these systems should be balanced evenly. This monitor compares the number of active tasks on each server with other servers with the same function. And reports the state, GOOD or BAD, of balance based on the supplied acceptable deviation.

Syntax: ./mon_tskbalance.pl {compname} {deviation} {svrlist}

{compname} Name of the component, e.g. "WfProcMgr"

{deviation} Maximum allowed deviation as a percentage

{svrlist} A comma separated list of server hostnames

Example; ./mon_tskbalance.pl “FINSObjMgr_nld” 5 “host1,host2,host3”

Returns: 2 lines

1st line a value of type string,
ERROR Monitoring error
BAD Load imbalanced
GOOD Load balanced

2nd line detailed information of type string with format “#tasks [{tasks}] ; #baseline [{avg. tasks}] ; #maxdev [{threshold}]”
{tasks} Number of active tasks
{avg. tasks} Average active tasks
{threshold} Maximum deviation in number of active tasks

blog comments powered by Disqus