I recently worked with a client who was having an issue with web application performance running under Citrix. The way their application worked is that it ran an Internet Explorer instance on a Citrix server and they could tell when a customer was having performance issues when an instance of the Internet Explorer process memory utilization went above a certain level (1 GB in this case). OK, so far so good. We can just use SAM to monitor the Internet Explorer process after all, right? Not so fast. For resource utilization, the value that SAM gives you is the total utilization of all instances of the process, which in this case could be many. What I had to do was to create an alert that would fire when any single instance of the process exceeded 1 GB of memory utilization. Enter the Advanced SQL alert type:
The SQL for this is attached below. You would, of course, customize the process name (iexplore.exe in this case) and the memory threshold (1073741824 or 1 GB in this case). Also, if your polling interval for your application is not the default 5 minutes, you would also want to change the line "AND DATEDIFF(minute, TimeStamp, GETDATE()) < 5" to reflect your polling interval. This line is included so it is only looking at the last polling cycle values.
You could also change this to look at process instance CPU (PE.PercentCPU) or memory percentage (PE.PercentMemory) utilization by changing the last line of text to reflect what property you want to look at.
Loop1 Systems: SolarWinds Training and Professional Services