Automic Workload Automation

 View Only
  • 1.  Monitor

    Posted Dec 05, 2016 04:27 AM
    How can I monitor the health of my Automic Automation Engine ?
    For example, one of the WP's failed and I want to receive an alert by mail.


  • 2.  Monitor

    Posted Dec 05, 2016 06:00 AM
    Hi,

    You should user an external monitoring system like Nagios if u want to do it the right way. It is not recommended to monitor a system from within it self.

    However there are several Automic script functions u could use like

    SYS_SERVER_ALIVE  --> monitor server processes
    SYS_HOST_ALIVE  --> monitor agents
    SYS_BUSY_01
    SYS_BUSY_10
    SYS_BUSY_60 --> which will give u the system load for the las 1, 10, 60 min.

    Check out the Automic Help for more info.






  • 3.  Re: Monitor

    Broadcom Employee
    Posted May 06, 2019 11:35 AM

    Hi Matthias,

     

    assuming you have an external monitoring tool, what processes you suggest to monitor on Automic?

     

    Thanks

     

    Vito 



  • 4.  Monitor

    Posted Dec 06, 2016 03:11 PM
    Look under the API folder in the image and there is something called Monitoring.
    This will setup a JMX server that you can monitor your system health through any frontend that can connect to JMX (the Java JDK comes with JControl or Oracle Java Mission Control that can connect to this)
    Once you open this there is an MBean called MessageBox that has a lot of what the Messages window shows


  • 5.  Re: Monitor

    Broadcom Employee
    Posted May 06, 2019 12:07 PM

    Hi All,

     

    what I found is using jvm_monitor probe fro UIM with EMI Automic monitoring component.

     

    Regards,

     

    Vito



  • 6.  Re: Monitor

    Posted May 06, 2019 12:49 PM

    We also run this PowerShell script to audit the number of WPs and CPs that are currently running;

     

     

    function Get-UC4Processes
    {
    Begin{
    $ServerName = get-content env:computername
    $LogFileName = "Get-UC4Processes.log"
    write-host "ServerName: $ServerName"
    echo "ServerName: $ServerName" > $LogFileName

    $Server = 'mail.company.com'
    $To = "emailaddress1@company.com","emailaddress2@company.com","emailaddress3@company.com"
    $Subject = $ServerName + " Key Process Alert"
    $From = "Alert_" + $ServerName + "@company.com"
    $CPThreshhold = 2
    $WPThreshhold = 5

    # Set process variables
    $CPProcess = Get-Process | Where ProcessName -Like "UCSrvC*"
    $WPPRocess = Get-Process | Where ProcessName -Like "UCSrvW*"

    # Capture and display the counts
    $CPCount = $CPProcess.count
    $WPCount = $WPProcess.count
    write-host "CPCount: $CPCount, expected: $CPThreshhold"
    write-host "WPCount: $WPCount, expected: $WPThreshhold"
    echo "CPCount: $CPCount, expected: $CPThreshhold" >> $LogFileName
    echo "WPCount: $WPCount, expected: $WPThreshhold" >> $LogFileName

    }
    Process{
    if($CPCount -lt $CPThreshhold){$Body = "UC4 CP process count of $CPCount is less than $CPThreshhold! (PowerShell script Get-UC4Processes.ps1)";
    Send-MailMessage -smtpServer $Server -to $To -from $From -subject $Subject -Body $Body -priority High;
    write-host "CPCount alarm email sent!";
    echo "CPCount alarm email sent!" >> $LogFileName}else{}

    if($WPCount -lt $WPThreshhold){$Body = "UC4 WP process count of $WPCount is less than $WPThreshhold! (PowerShell script Get-UC4Processes.ps1)";
    Send-MailMessage -smtpServer $Server -to $To -from $From -subject $Subject -Body $Body -priority High;
    write-host "WPCount alarm email sent!";
    echo "WPCount alarm email sent!" >> $LogFileName}else{}
    echo "****** end of process ******"
    echo "****** end of process ******" >> $LogFileName
    }
    End{

    }
    }

    Get-UC4Processes



  • 7.  Re: Monitor

    Posted May 23, 2019 08:27 AM

    I did this (additional to process Monitoring from external) this way.

     

    :set &loop# = prep_process_var(AUTOMIC_SERVER_CHECK_VARA)
    :process &loop#
    :  set &AEProcess# = get_process_line (&loop#,1)
    :  set &AEPStatus# = sys_server_alive(&AEProcess#)
    :  print &AEProcess# is up (Y/N) : &AEPStatus#
    :  if &AEPStatus# = 'N'
    :    set &AlreadyAlarmed# = get_var(AUTOMIC_SERVER_CHECK_STATUS, &AEProcess#, 2)
    :    if &AlreadyAlarmed# <> ""
    :      print "Team aleady informed about down process &AEProcess# on &AlreadyAlarmed#"
    :    else
    :      print "Alarming Team about down process &AEProcess#"
    :      pset &AlarmProcess#=&AEProcess#
    :      put_var AUTOMIC_SERVER_CHECK_STATUS, "&AlarmProcess#", "&AEPStatus#", "&$PHYS_DATE_YYYY_MM_DD_d# &$PHYS_TIME_HH_MM_SS#"
    :      set &RunID# = activate_uc_object(AUTOMIC_SERVER_CHECK_DOWN,,,,,PASS_VALUES)
    :    endif
    :  else
    :    set &AlreadyAlarmed# = get_var(AUTOMIC_SERVER_CHECK_STATUS, &AEProcess#, 2)
    :    if &AlreadyAlarmed# <> ""
    :      print "Alarmed process &AEProcess# is up again"
    :      delete_var AUTOMIC_SERVER_CHECK_STATUS, &AEProcess#
    :    endif
    :  endif
    :endprocess

     

    Where AUTOMIC_SERVER_CHECK_VARA is a Vara with the processes (or in my case a SQLI which list's the current processes), AUTOMIC_SERVER_CHECK_DOWN is a notification that will be called and AUTOMIC_SERVER_CHECK_STATUS stores some Information to prevent repeated alarming.