# Horizon VMware Discovery

# Introduction

This plugin is used to monitor VMware Horizon environments through calls to its REST API, collecting detailed information about the status of desktop pools, RDS servers, active sessions, licenses, system metrics and other key elements of the infrastructure. Through multiple predefined endpoints, the script extracts data about the operation and performance of the platform, allowing to identify potential bottlenecks or service failures.

The system authenticates through configurable credentials, queries the enabled endpoints according to the permissions assigned to the user, and transforms the information collected into agents and modules in XML format. This data is automatically sent to the Pandora FMS server using the Tentacle transfer mode, facilitating the distributed monitoring of the Horizon platform. In addition, the plugin is prepared to manage multiple resources in parallel and scale as needed, providing a flexible and automated solution for monitoring enterprise Horizon environments.

# Prerrequisites

- The system running the plugin must have connectivity and be able to remotely reach the Horizon environment.
- The following roles and privileges are required:

```
FEDERATED_LDAP_VIEW  
FEDERATED_SESSIONS_VIEW  
GLOBAL_CONFIG_VIEW  
MACHINE_VIEW  
POOL_VIEW  
UDD_VIEW  
VC_CONFIG_VIEW
```

# Parameters

<div id="bkmrk-par%C3%A1metros---conf-ru"><div class="cm-editor ͼ1 ͼ2 ͼ4 ͼ1q"><div class="cm-scroller" tabindex="-1"><div aria-multiline="true" aria-readonly="true" autocapitalize="off" autocorrect="off" class="cm-content" contenteditable="true" role="textbox" spellcheck="false" translate="no">**Parámeters**<table border="1" id="bkmrk---conf-ruta-al-archi"><tbody><tr><td>--conf</td><td>Conf file path</td></tr></tbody></table>

**Configuration file (--conf)**</div></div></div></div>```
domain = < domain name >
username = < user name >
password = < user password >
url = < url of the environment >
interval = < agent creation interval >
temporal = < temporary file path >
transfer_mode = < transfer mode >
tentacle_ip = < tentacle ip address >
tentacle_port = < ptentacle port >
data_dir = < .data path of the agents >
```

<div id="bkmrk-ejemplo"><div class="cm-editor ͼ1 ͼ2 ͼ4 ͼ1q"><div class="cm-scroller" tabindex="-1"><div aria-multiline="true" aria-readonly="true" autocapitalize="off" autocorrect="off" class="cm-content" contenteditable="true" role="textbox" spellcheck="false" translate="no"> **Example** </div></div></div></div>```
user = "admin"
password = "P@ssw0rd123"
domain = "CORP"
url = "https://horizon.example.com"
interval = 300
temporal = /tmp
transfer_mode = tentacle
tentacle_ip =172.42.42.101
tentacle_port =41121
data_dir = /var/spool/pandora/data_in/
```

# Manual execution

The format of the plugin execution is as follows:

```
./pandora_horizon --conf < ruta al fichero de configuración >
```

Example:

```
./pandora_horizon --conf /usr/share/pandora_server/util/plugin/horizon.conf 
```

The execution will return an output in JSON format with information about the execution, and will generate an XML file for each monitored agent that will be sent to the Pandora FMS server by the transfer method indicated in the configuration.

# Discovery

This plugin can be integrated with Pandora FMS Discovery.

To do so, you must load the “.disco” package that you can download from the Pandora FMS library:

[https://pandorafms.com/library/](https://pandorafms.com/library/)

Once loaded, Horizon environments can be monitored by creating Discovery tasks from the Management &gt; Discovery &gt; App section.

The following minimum data will be requested for each task:

- **Domain**: Domain name
- **Url**: Url of the environment
- **Username:** User name
- **Password:** User password
- **Use prefix:** To use prefix for the agents
- **Max threads:** Number of threads
- **Tentacle IP:** Tentacle address
- **Tentacle port:** Tentacle port

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-05/scaled-1680-/aQtimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-05/aQtimage.png)

Successfully completed tasks will have an execution summary with the following information:

- **Total agents** : Total number of agents generated by the task.

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-03/scaled-1680-/i97image.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-03/i97image.png)

# Agent and modules generated by the plugin

The execution will create the following agents, with the following modules :

**Agent:**  
VMware Horizon Desktop Pools

**Modules (for each Desktop Pool):**  
&lt;display\_name&gt; num\_machines  
&lt;display\_name&gt; num\_connected\_sessions  
&lt;display\_name&gt; occupancy\_count

**Agent**:  
VMware Horizon Rds-servers

**Modules (for each RDS Server - Inventory):**  
&lt;name&gt;&lt;key&gt;

**Modules (for each RDS Server - Monitor):**  
&lt;name&gt; Agent Build  
&lt;name&gt; Agent Version  
&lt;name&gt; Max Sessions Count Configured  
&lt;name&gt; Operating System  
&lt;name&gt; State  
&lt;name&gt; Enabled  
&lt;name&gt; Farm ID  
&lt;name&gt; Server ID  
&lt;name&gt; Load Index  
&lt;name&gt; Load Preference  
&lt;name&gt; Name  
&lt;name&gt; Session Count  
&lt;name&gt; Status

**Agent:**  
VMware Horizon Sessions

**Modules:**  
Sessions  
Active App Sessions  
Disconnected App Sessions  
Idle App Sessions  
Pending App Sessions  
Android Clients  
Browser Clients  
iOS Clients  
Linux Clients  
Mac Clients  
Other Clients  
Windows Clients  
Active Desktop Sessions  
Disconnected Desktop Sessions  
Idle Desktop Sessions  
Pending Desktop Sessions  
External Gateways  
Internal Gateways  
Unknown Gateways  
BLAST Sessions  
Other Protocols  
PCOIP Sessions  
RDP Sessions

**Agent**:  
VMware Horizon Machines

**Modules:**  
&lt;MACHINE\_NAME&gt; Pairing State  
&lt;MACHINE\_NAME&gt; State  
&lt;MACHINE\_NAME&gt; Last Maintenance Time  
&lt;MACHINE\_NAME&gt; Memory MB  
&lt;MACHINE\_NAME&gt; Operation State  
&lt;MACHINE\_NAME&gt; Disk Capacity MB

**Agent:**  
Physical machines

**Modules**:  
&lt;MACHINE\_NAME&gt;

**Agent:**  
VMware Horizon Persistent Disks

**Modules:**  
&lt;DISK\_NAME&gt; Access Group ID   
&lt;DISK\_NAME&gt; Capacity MB   
&lt;DISK\_NAME&gt; Datastore ID   
&lt;DISK\_NAME&gt; Datastore Name   
&lt;DISK\_NAME&gt; Desktop Pool ID   
&lt;DISK\_NAME&gt; Desktop Pool Name   
&lt;DISK\_NAME&gt; Disk ID   
&lt;DISK\_NAME&gt; Last Attached Time   
&lt;DISK\_NAME&gt; Machine ID   
&lt;DISK\_NAME&gt; Machine Name   
&lt;DISK\_NAME&gt; Status   
&lt;DISK\_NAME&gt; Usage   
&lt;DISK\_NAME&gt; User ID   
&lt;DISK\_NAME&gt; User Name   
&lt;DISK\_NAME&gt; vCenter ID

**Agent:**  
VMware Horizon Health Metrics

**Modules**:  
&lt;COMPONENT&gt; Error Count   
&lt;COMPONENT&gt; Healthy Count   
&lt;COMPONENT&gt; Total Count   
&lt;COMPONENT&gt; Unknown Count   
&lt;COMPONENT&gt; Warning Count

**Agent:**  
VMware Horizon Connection Servers

**Modules (for each server):**  
&lt;SERVER\_NAME&gt; Connection Count   
&lt;SERVER\_NAME&gt; CS Replications   
&lt;SERVER\_NAME&gt; Last Updated Timestamp  
&lt;SERVER\_NAME&gt; Name   
&lt;SERVER\_NAME&gt; Services   
&lt;SERVER\_NAME&gt; Session Protocol Data  
&lt;SERVER\_NAME&gt; Session Threshold  
&lt;SERVER\_NAME&gt; Status   
&lt;SERVER\_NAME&gt; Tunnel Connection Count   
&lt;SERVER\_NAME&gt; Unrecognized PCOIP Requests Count   
&lt;SERVER\_NAME&gt; Unrecognized Tunnel Requests Count   
&lt;SERVER\_NAME&gt; Unrecognized XMLAPI Requests Count

**Agente:**  
VMware Horizon App Volumes

**Módulos (por cada servidor de conexión dentro de cada app volumes manager):**  
&lt;SERVER\_NAME&gt; Certificate Valid  
&lt;SERVER\_NAME&gt; Certificate Valid From   
&lt;SERVER\_NAME&gt; Certificate Valid To   
&lt;SERVER\_NAME&gt; Status   
&lt;SERVER\_NAME&gt; Thumbprint Accepted

**Agente**:

VMware Horizon Gateways

**Modules for each gateway (&lt;name&gt;):**

&lt;name&gt; Active Connection Count   
&lt;name&gt; Blast Connection Count  
&lt;name&gt; Last Updated Timestamp   
&lt;name&gt; PCOIP Connection Count   
&lt;name&gt; Status

**Agent:**

VMware Horizon Usage Metrics

**Modules:**

Usage Metrics Current Concurrent Application Sessions   
Usage Metrics Current Collaborative Sessions   
Usage Metrics Current Full VM Sessions   
Usage Metrics Current Unmanaged VM Sessions  
Usage Metrics Total Collaborators   
Usage Metrics Total Concurrent Connections  
Usage Metrics Total Concurrent Sessions   
Usage Metrics Total Named Users

Usage Metrics Highest Concurrent Application Sessions  
Usage Metrics Highest Collaborative Sessions   
Usage Metrics Highest Full VM Sessions  
Usage Metrics Highest Unmanaged VM Sessions   
Usage Metrics Highest Total Collaborators   
Usage Metrics Highest Total Concurrent Connections   
Usage Metrics Highest Total Concurrent Sessions   
Usage Metrics Highest Total Named Users

**Agent:**

VMware Horizon System Metrics

**Modules**

System Metrics Event Error Count   
System Metrics Event Warning Count

System Metrics Health Metrics Component   
System Metrics Health Metrics Error Count   
System Metrics Health Metrics Healthy Count  
System Metrics Health Metrics Total Count   
System Metrics Health Metrics Unknown Count  
System Metrics Health Metrics Warning Count

System Metrics Problem RDS Hosts Count   
System Metrics Problem vCenter VMs Count   
System Metrics Sessions Count

**Agent:**

VMware Horizon Virtual Datacenters

**Modules generated by each virtual datacenter (&lt;vc\_name&gt;):**

&lt;vc\_name&gt; Connection Server &lt;server\_name&gt; Server Status

&lt;vc\_name&gt; Datastore &lt;datastore\_name&gt; Path   
&lt;vc\_name&gt; Datastore &lt;datastore\_name&gt; URL   
&lt;vc\_name&gt; Datastore &lt;datastore\_name&gt; Capacity MB   
&lt;vc\_name&gt; Datastore &lt;datastore\_name&gt; Free Space MB   
&lt;vc\_name&gt; Datastore &lt;datastore\_name&gt; Status

&lt;vc\_name&gt; Host &lt;host\_name&gt; Cluster Name   
&lt;vc\_name&gt; Host &lt;host\_name&gt; CPU Core Count   
&lt;vc\_name&gt; Host &lt;host\_name&gt; CPU MHz   
&lt;vc\_name&gt; Host &lt;host\_name&gt; Memory Size MB   
&lt;vc\_name&gt; Host &lt;host\_name&gt; Overall CPU Usage MHz   
&lt;vc\_name&gt; Host &lt;host\_name&gt; Overall Memory Usage MB  
&lt;vc\_name&gt; Host &lt;host\_name&gt; Status

&lt;vc\_name&gt; Desktop Pools and Farms