User Experience Troubleshooting Deep Dive, Part 2: How to monitor?

In the previous post I explained some things around metrics and which one you could monitor if you want to be aware of what is happing around the User Experience (UX) of your end users. In this post I would like to show you how these metrics can be monitored. vRealize Operations 6.4 is quite complete with all kinds of out-of-the-box dashboards. But in case you would like to create something that perfectly satisfy your needs (like I did), I will also show you how to create the custom dashboard that I always use.

So where to start? In this case I will be using vRealize Operations (vROps) 6.4. vROps 6.4 has a lot of new features including the ability to monitor Blast as a protocol and include metrics from App Volumes and the EUC Access Point. And the very best feature (imho)  is the metric selector tool when creating custom XML’s for dashboards. And that’s what we are going to use in this post.

In the following steps I will guide you through the process of creating a custom dashboard that you can use to monitor the metrics in the previous

First, go to the content tab in vROps. Open Manage Metric Config and click on the ReskndMetric.

Add metric XML to vROps

Add a new XML file by clicking on the + icon and call it custom.xml.

Add a custom XML to vROps

In the XML editor, you can paste XML code or select metrics with the use of the brand new XML metric picker. In this case, you can paste the following XML to the XML editor:

<?xml version="1.0" encoding="UTF-8"?> <AdapterKinds> <AdapterKind adapterKindKey="V4V"> <ResourceKind resourceKindKey="UserDesktop"> <Metric attrkey="session|encoded_frame_rate" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="session|profile_load_time" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="session|round_trip_latency" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="session|shell_start_time" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="session|transmit_bandwidth" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="network_interface|bytes_received_per_second" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="network_interface|bytes_sent_per_second" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="session|logon_time" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="session|estimate_bandwidth" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="session|session_duration" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="disk|disk_writes_per_sec" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="disk|disk_reads_per_sec" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="pcoip|encoded_frame_rate" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="pcoip|active_minimum_quality" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="pcoip|receive_bandwidth" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="pcoip|receive_packet_loss_percent" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="pcoip|transmit_bandwidth" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="pcoip|transmit_packet_loss_percent" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="pcoip|round_trip_latency" label="" unit="" yellow="" orange="" red=""/> </ResourceKind> </AdapterKind> <AdapterKind adapterKindKey="VMWARE"> <ResourceKind resourceKindKey="VirtualMachine"> <Metric attrkey="cpu|capacity_contentionPct" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="cpu|ready_summation" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="cpu|readyPct" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="cpu|usage_average" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="cpu|usagemhz_average" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="mem|vmmemctl_average" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="mem|consumed_average" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="mem|swapoutRate_average" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="mem|usage_average" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="virtualDisk:Aggregate of all instances|totalLatency" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="virtualDisk:Aggregate of all instances|totalWriteLatency_average" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="virtualDisk:Aggregate of all instances|totalReadLatency_average" label="" unit="" yellow="" orange="" red=""/> <Metric attrkey="virtualDisk:Aggregate of all instances|commandsAveraged_average" label="" unit="" yellow="" orange="" red=""/> </ResourceKind> </AdapterKind> </AdapterKinds>

The next step would be to add a custom dashboard with widgets that will be filled with the above metrics.

If you are handy enough, you can add widgets and have interaction between them. I will help you a bit with and share the dashboard. You can download it here: Custom UX

The dashboard looks like this (click on it to enlarge) when focussing on a session:

vROps Custom EUC dashboard

or like this when focussing on a virtual desktop:

vROps Custom EUC dashboard

Let’s run through the widgets:

Object Picker
This widget let’s search for an object. This could be an active directory user, a session or a virtual desktop. After searching for a certain string, you can select the object and the next widget will be activated.

Object Relationship
This widget shows you the object that you selected including relationships to other objects. For instance, when you searched for a user and select it, a possible relationship to a virtual desktop and a session will be displayed. When selecting a session or a virtual desktop, the next widget will be activated.

Metric Scoreboard (last hour)
When a session is selected, the metrics that are part of the session object are loaded (things like logon times and PCoIP/Blast metrics). If a virtual desktop is selected, the metrics that are part of the virtual desktop object are loaded (things like CPU/RAM usage and disk activity). The metrics in the scoreboard contain a little graph and are clickable. In case you click a metric, the next widget is activated.

Detailed Metrics
The little graph in the Metric Scoreboard are nice, but if you need more detail you might need another type of graph. In this case all metrics that are clicked from the Metric Scoreboard are added to the Detailed Metrics widget. In this widget you are able to create a detailed timeline that is filled (and automatically updated) with different metrics that you would like to use for UX troubleshooting or a root cause analysis. Metrics from different objects can be added (so you can mix and match virtual desktop and session metrics).

Top Alerts
The last widget in the dashboard are the Top Alerts. When clicking on an object in the Object Relationship widget, the top alerts for the selected object are displayed, which gives you the ability to find anomalies quite fast in case of issues.

This custom dashboard is mostly used at UX support departments that offer direct support to end users.

I hope this dashboard gives you an idea of how to get in-depth information on UX. In the next posts I will dive deeper in the different metrics that we are now able to check from the dashboard. I will continue to use the dashboard to show examples on what to look for in case of issues in the future posts.

Johan van Amersfoort