A: When using CloudMonix, there are a few approaches that can be used to alert when a process is not running on a VM

  • If you are using provided CloudMonix Agent to monitor the VM, your setup likely already has a metric named ProcessList that tracks the number of all the proceses in the system along their Memory and CPU utilization
    Simply define a new alert with an expression such as this: !Any(ProcessList,"Name == \"myprocessname.exe\"")
    This expression will inspect the ProcessList metric and look for any entries with a name "processname.exe".  Alert will fire if none are found (! exclamation signifies a negation of the condition)
  • If you are NOT using the CloudMonix Agent and are relying on performance counters that are coming thru Azure Diagnostics, you will first need to define a new performance counter of type WindowsPerformanceCounterMultiInstance (ensure it is not WindowsPerformanceCounter) and have it track "Process" performance counter category and "% Processor Time" performance counter.  Assuming you've named the metric CpuByProcess, your new alert's condition should be: !Any(CpuByProcess,"Instance == \"myprocessname.exe\"")

It is also possible to alert if a quantity of multiple processes that match a certain pattern is below a certain number, by providing the following alert condition

Count(CpuByProcess, "Contains(Instance, "\myprocess\")) < 10

The above expression counts how many entries there are in the CpuByProcess metric that contain the word "myprocess" in their process name and alerts if the number is below 10