Citrix CVAD (on-prem)
Citrix CVAD runs on-premises, with virtual machines hosted in the organization’s own data center or private cloud. This allows enterprises to centralize control of virtual desktops while leveraging their existing infrastructure investments. It is commonly used by organizations that want full control over their VDI environment, data, and compliance, while maintaining flexibility in how virtual desktops are provisioned and managed.
1. Set up the connector
Configure Nexthink to connect to Citrix CVAD APIs for session metadata ingestion. This step ensures that contextual data is available to enrich insights within the VDI Experience module.
To set up the connector, perform the procedure described in Connector for Citrix Virtual Apps and Desktops.
2. Install Collector on VMs
If you're using Citrix App Layering, you should install Nexthink Collector in the Platform Layer or Golden Image itself, not as an App Layer. This ensures:
Services are registered correctly.
Drivers and startup behavior are consistent.
The device identity used for telemetry is preserved per desktop.
Manual or automated deployment
Shared VDI (Citrix Multi-session host): Install the Nexthink Collector on multi-session hosts deployed on the Citrix platform. Ensure that session hosts are domain-joined and provisioned with appropriate sizing.
Personal VDI (Citrix XenDesktop – persistent): Install the Nexthink Collector as a standard agent during provisioning or onboarding of the persistent desktop.
For both scenarios, perform the procedures described in the following documentations:
Golden image-based deployment
Pooled VDIs (Citrix XenDesktop – non-persistent) use a golden image for deployment.
Perform the procedures described in the following documentations:
3. Test the connector and Collector
Connector
Confirm that device and session data is being enriched with information from the Connector integration by verifying fields such as Disk Image, Desktop Pool, Virtualization Host Name and Virtualization Type. To test enrichment, ensure that the Collector is installed on the virtual machines and is operational.
To do this, run the following query in the Investigations module:
devices
| where virtualization.desktop_broker == citrix_cvad
| list name, hardware.type, virtualization.disk_image, virtualization.desktop_pool, virtualization.environment_name, virtualization.hypervisor_name, virtualization.hostname, virtualization.type, virtualization.last_update
| sort virtualization.last_update desc
Collector on VMs
Shared VDI (Citrix Multi-session host)
Ensure data such as Device ID, User Name, and Session Hostname is visible in Nexthink.
To do this, run the following query in the Investigations module:
vdi_sessions
| where device.virtualization.desktop_broker == citrix_cvad and vdi_session.virtualization_type == shared
| list vdi_session.name, user.name, device.name, vdi_session.hostname, desktop_pool, first_seen
| sort first_seen desc
Pooled VDI (Citrix XenDesktop – non-persistent)
Confirm that instances report unique Device IDs, accurate Pool Names, and fresh Boot Times after deployment.
To do this, run the following query in the Investigations module:
devices
| where virtualization.desktop_broker == citrix_cvad and virtualization.type == pooled
| list name, virtualization.desktop_pool, boot.last_full_boot_time
| sort boot.last_full_boot_time desc
Personal VDI (Citrix XenDesktop – persistent)
Verify consistent reporting of Device ID, Assigned User and system uptime across Reboots and Logons.
To do this, run the following query in the Investigations module:
devices
| where virtualization.desktop_broker == citrix_cvad and virtualization.type == personal
| with session.vdi_events during past 168h
| compute number_of_sessions = vdi_session.count(), time_since_session_last_seen = end_time.last().time_elapsed(), last_user = user.name.last()
| include device_performance.boots during past 168h
| compute number_of_restarts = number_of_boots.sum()
| include session.logins during past 168h
| compute time_since_last_login = time.last().time_elapsed(), number_of_logons = number_of_logins.sum()
| list name, last_user, number_of_sessions, time_since_session_last_seen, number_of_logons, time_since_last_login, number_of_restarts, boot.last_full_boot_time.time_elapsed(), last_seen.time_elapsed()
| sort time_since_session_last_seen desc
4. Install endpoint agents on client devices
Supported client OS and agent versions: Windows 10 and newer with Citrix Workspace app v2205 or higher.
Install Collector on corporate-managed devices
For client devices that are centrally managed by your organization, distribute Collector across all applicable devices using your preferred software deployment tools.
Perform the procedure described in the Installing Collector documentation.
Install VDI Extension on personal or self-managed devices
For personal or self-managed client devices, make the VDI Client Extension available for installation. This lightweight agent provides limited yet valuable client-side metrics without requiring full Collector deployment.
Perform the procedure described in the Installing Nexthink VDI Client Extension documentation.
5. Test client devices
Corporate-managed devices
Confirm visibility into fields such as Round-Trip Time, Client CPU usage, Wi-Fi Signal Strength, or Link Speed for sessions launched from managed client devices. While the network RTT is available even if the Collector is installed only on the VM, full client performance information requires the Collector to be installed on the endpoint. To validate the installation, check that client metrics are reported for the sessions.
If the client device is running a Collector and reporting data to your Nexthink instance, its name appears as a link to the Device View, where you can access detailed information and activity.
To do this, run the following query in the Investigations module:
vdi_sessions
| with session.vdi_events during past 168h
| compute average_network_rtt = network_rtt.avg(), average_wifi_signal_strength = client.network.wifi_signal_strength.avg(), average_link_speed = client.network.wired_link_speed.avg(), average_client_cpu_usage = client.cpu.normalized_usage.avg(), last_client_plugin_version = client.plugin_version.last()
| list vdi_session.name, device.name, user.name, name, last_client.device.name, last_client_plugin_version, average_network_rtt, average_wifi_signal_strength, average_link_speed, average_client_cpu_usage
| sort last_seen desc
Partner-managed or BYO devices
Confirm visibility into fields such as Round-Trip Time, Wi-Fi Signal Strength, or Link Speed for sessions launched from externally managed client devices. While the network RTT is available even if the Collector is installed only on the VM, full network performance information requires either the Collector or the VDI Client Extension to be installed on the client device. To validate the installation, check that networking metrics are reported for the sessions.
If the VDI Client Extension is installed, no additional device data is captured and therefore no Device View is available for the client device. In this case, client-related performance information is reported only within the VDI sessions.
To do this, run the following query in the Investigations module:
vdi_sessions
| with session.vdi_events during past 168h
| compute average_network_rtt = network_rtt.avg(), average_wifi_signal_strength = client.network.wifi_signal_strength.avg(), average_link_speed = client.network.wired_link_speed.avg(), average_client_cpu_usage = client.cpu.normalized_usage.avg(), last_client_plugin_version = client.plugin_version.last()
| list vdi_session.name, device.name, user.name, name, last_client.device.name, last_client_plugin_version, average_network_rtt, average_wifi_signal_strength, average_link_speed, average_client_cpu_usage
| sort last_seen desc
Last updated
Was this helpful?