# Hyper-V Windows

# Introducción

El plugin de **Hyper‑V** para Pandora FMS descubre el host Hyper‑V y sus máquinas virtuales, recopilando métricas de estado y rendimiento (CPU, memoria, red y almacenamiento) para crear los módulos de monitorización correspondientes. Se ejecuta en modo local en el propio servidor Hyper‑V, generando un JSON con la definición de agentes y módulos para su uso posterior.

# Matriz de compatibilidad

<table border="1" id="bkmrk-sistemas-donde-se-ha-1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 28.7038%;"></col><col style="width: 71.4198%;"></col></colgroup><tbody><tr><td>**Sistemas donde se ha probado**</td><td>Windows Server 2022 (Hyper‑V) ejecutando el plugin en **modo local**</td></tr><tr><td>**Sistemas donde funciona**</td><td>**Modo local:** **Windows Server** con rol **Hyper‑V** (y PowerShell) donde se ejecute el `.exe` / script</td></tr></tbody></table>

# Prerrequisitos

- Conectividad a Hyper-V desde Pandora

El plugin es un binario que contiene las dependias empaquetadas por lo que no es necesaria la instalación de ningún tipo de dependencia para su uso.

- Permisos

**Configurar WinRM**  
`Enable-PSRemoting -Force -SkipNetworkProfileCheck`  
`winrm quickconfig -force`  
`winrm set winrm/config/service/auth '@{Basic="true"}'`  
`winrm set winrm/config/service '@{AllowUnencrypted="true"}'`  
`winrm set winrm/config/service '@{MaxTimeoutms="600000"}'`

**Permitir http 401**  
`reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f`

**Permitir Firewall WinRM**  
`New-NetFirewallRule -DisplayName "WinRM HTTP In" -Direction Inbound -Protocol TCP -LocalPort 5985 -Action Allow -Profile Any -Force`

**Reiniciar servicios**  
`Restart-Service WinRM -Force`  
`Start-Service vmms`

**Comprobar todo**  
`winrm get winrm/config/service/auth`  
`Get-VM`

- Instalar el servicio **hv-kvp-daemon** en las VMs con sistema linux para que reporten todos los módulos.

# Parámetros y configuración

**Parámetros**

<table border="1" id="bkmrk---help-mensaje-con-l" style="border-collapse: collapse; width: 100%; height: 186.375px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">--help</td><td style="height: 29.7969px;">Mensaje con los parametros</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">--confg</td><td style="height: 29.7969px;">Ruta al archivo de configuración</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">--execute\_local</td><td style="height: 46.5938px;">Parametro para indicar que se va a ejecutar desde el propio host de hyperV y no desde el servidor de Pandora.</td></tr><tr style="height: 80.1875px;"><td style="height: 80.1875px;">--save\_file</td><td style="height: 80.1875px;">Parámetro el cual necesita de --execute\_local pra poderse usar.  
Este parametro nos guardará la salida del JSON en un archivo `.txt`</td></tr></tbody></table>

**Archivo de configuración (--conf)**

```
agent_prefix = HyperV
agents_group_id = 2
scan_vm = 1
scan_networking = 1
scan_storage = 0
scan_hypervisor = 1
```

# Ejecución manual

El formato de la ejecución del plugin es el siguiente:

```
.\pandora_hyperV.exe --conf < ruta del .conf > --execute_local
```

Por ejemplo:

```
.\pandora_hyperV.exe --conf pandora_hyperv.conf --execute_local
```

Ejemplo obteniendo el .txt con el JSON

```
.\pandora_hyperV.exe --conf pandora_hyperv.conf --execute_local --save_file
```

Ejemplo de salida del JSON:

```
[
  {
    "agent_data": {
      "agent_name": "HyperV WIN-BKM50GV4DF9",
      "agent_alias": "HyperV WIN-BKM50GV4DF9",
      "os": "Windows",
      "os_version": "Windows Server",
      "interval": 300,
      "id_group": 2,
      "address": "WIN-BKM50GV4DF9",
      "description": "Hyper-V host WIN-BKM50GV4DF9 (WIN-BKM50GV4DF9)"
    },
    "module_data": [
      {
        "name": "HyperV Local Status",
        "type": "generic_proc",
        "data": 1,
        "description": "Hyper-V plugin running locally (1=OK, 0=Fail)"
      }
    ]
  },
  {
    "agent_data": {
      "agent_name": "HyperV ubuntu server",
      "agent_alias": "HyperV ubuntu server",
      "os": "Windows",
      "os_version": "Windows",
      "interval": 300,
      "id_group": 2,
      "address": "WIN-BKM50GV4DF9",
      "description": "VM ubuntu server on Hyper-V host WIN-BKM50GV4DF9"
    },
    "module_data": [
      {
        "name": "State",
        "type": "generic_data",
        "data": 3,
        "description": "VM state: 2=Running 3=Off 32768=Paused 32769=Saved 32770=Starting 32771=Stopping 32772=Pausing 32773=Resuming 32774=Saving 32775=FastSaved 0=Unknown. Current: Off",
        "min_critical": 3,
        "max_critical": 3.1
      }
    ]
  }
]
```

# Agentes y módulos generados por el plugin

Si está activado **Scan hypervisor**:

- **Agente creado:** 1 agente para el **host Hyper‑V** (el hipervisor), con nombre del estilo `HyperV <ComputerName>` si hay prefijo configurado, o `<ComputerName>` si no lo hay.
- **Módulos creados (host):**
    - **HyperV Connection Status** (modo remoto) / **HyperV Local Status** (modo local): módulo de estado de ejecución/conectividad del descubrimiento.
    - **Host Memory Total (GB)**: memoria total del host.
    - **Host Memory Free (GB)**: memoria libre del host.
    - **Service Status:** estado de la mv.

Con el token **Scan VM** se crean:

- **Agentes creados:** **1 agente por cada VM** encontrada en el host Hyper‑V (p. ej. `HyperV <NombreVM>` si hay prefijo configurado, o `<NombreVM>` si no).
- **Módulos creados (por VM):**
    - **State**: estado numérico de la VM.
    - **Status**: estado operativo/reportado por Hyper‑V.
    - **Generation**: generación de la VM.
    - **CPU usage percentage**: uso de CPU en porcentaje.
    - **Memory**: métricas de memoria asignada/consumo.
    - **Uptime**: tiempo desde que se encendió la VM.

Con el token **Scan Networking** se crean:

- **Agentes creados:** no crea agentes nuevos; **añade módulos** a los **agentes de las VMs** ya descubiertas.
- **Módulos creados (por VM y por adaptador de red):**
    - Módulos de **estado/conectividad** del adaptador (conectado/no conectado).
    - Módulos con información del **Switch virtual** asociado (vSwitch).
    - Módulos con la **MAC Address** del adaptador.
    - Módulos de **status** del adaptador reportado por Hyper‑V.
- **Caso de varios adaptadores con el mismo nombre:** si una VM tiene 2+ NICs con el mismo `Name` (p. ej. “Adaptador de red”), el plugin crea los módulos con sufijos para evitar sobrescritura: `..._1`, `..._2`, etc.; si el nombre es único, no añade numeración.

Con el token **Scan Storage** se crean:

- **Agentes creados:** no crea agentes nuevos; **añade módulos de almacenamiento** a los **agentes de las VMs** (y/o al agente del hypervisor si vuestra configuración incluye métricas del host).
- **Módulos creados (por VM):**
    - Módulos relacionados con **discos/volúmenes** reportados para la VM (tamaño/uso/estado según los datos disponibles).
    - Cuando se reporta uso por letra de unidad, los módulos se nombran con el patrón **`DiskUsed_<LETRA>`** (por ejemplo: `DiskUsed_C`, `DiskUsed_D`, …) en lugar de nombres tipo “Disk C Used GB”.
- **Objetivo:** monitorizar consumo de disco y detectar falta de espacio/crecimiento anómalo en las VMs.

Un ejemplo de Agentes creados con el plugin sería este:

[![Agentes.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/scaled-1680-/agentes.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/agentes.png)

Los módulos del host hypervisor serán estos:

[![hyper v.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/scaled-1680-/hyper-v.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/hyper-v.png)

[![detallados hyperV.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/scaled-1680-/detallados-hyperv.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/detallados-hyperv.png)

Para una MV windows podemos ver como se crean los siguientes módulos:

[![modulos windows.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/scaled-1680-/modulos-windows.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/modulos-windows.png)

[![detallados windows.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/scaled-1680-/detallados-windows.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/detallados-windows.png)

Para una MV Ubuntu podemos ver los siguientes módulos:

[![modulos ubuntu.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/scaled-1680-/modulos-ubuntu.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/modulos-ubuntu.png)

[![detallados ubuntu.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/scaled-1680-/detallados-ubuntu.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-04/detallados-ubuntu.png)