Doing merely "alive" checks of server, services etc. provides little benefit in my experience.
A bad performing XenApp server can be almost as bad, as one that's completely out of service - In either case, users are not productive and your helpdesk gets flooded with calls.
I'm using EdgeSight at my employer, which is tailored to monitor XenApp, but it's showing its age and hasn't seen an upgrade, let alone a significant one, in ages (development was stopped long ago, and EdgeSight is now merged into XenDesktop).
A few alternatives off the top of my head, that I'm planning to look into myself (not affiliated with any of those, by the way):
Now, as for monitoring using Nagios, I assume it can get performance metrics from Windows nodes? I'd pay special attention to these performance metrics (not an exhaustive list):
- CPU % usage (short peaks are usually OK, more than a few seconds at ~95+%, or 30 seconds at ~80+% usually indicates problems)
- CPU interrupt time (driver problems can cause CPU power to be consumed by interrupts, thus not be available to applications)
- Context switches/sec (high level of context switching, indicates too few logical CPU cores to handle the workload)
- Available RAM (memory starvation causes excessive paging, which in turn hurts user performance)
- Disk % busy time (constantly busy disks indicates, well, disk bottleneck)
- Disk read/write latency (high disk latency immediately hurts user experience. Can the disks/RAID controller/SAN deliver enough I/O's?)
- Disk free space (no disk space, no work space, no productivity)
- Active XenApp sessions (often you can define a rule of thumb of the maximum number of sessions, you can comfortably fit on a server. Consider including "user count" in your load evaluator, so servers approaching this limit, are less likely to get new user sessions)
Get some performance history for these metrics from your live environment, determine your "red/yellow/green" values, then set up alerts.