# Azure Backups

# Introducción

Este plugin tiene como objetivo monitorizar el estado de las **copias de seguridad en Microsoft Azure**, permitiendo comprobar de forma continua si los recursos protegidos están realizando sus backups correctamente. Gracias a esta monitorización es posible detectar fallos en las copias de seguridad, conocer el estado de protección de los recursos y verificar cuándo se realizó el último backup, lo que ayuda a garantizar la disponibilidad de los datos y la capacidad de recuperación ante incidencias.

El plugin se conecta al entorno de **Azure** para obtener información de los servicios de backup configurados en la suscripción. Con estos datos genera diferentes métricas relacionadas con el estado de las copias de seguridad, como el tiempo transcurrido desde el último backup, el número de puntos de recuperación disponibles o el estado general de la protección.

Posteriormente, esta información se envía a **Pandora FMS**, donde se crean los agentes y módulos necesarios para visualizar y supervisar el estado de los backups desde la consola de monitorización. De esta forma, el cliente puede tener una visión clara y centralizada del estado de sus copias de seguridad en Azure y actuar rápidamente ante cualquier problema.

# Matriz de compatibilidad

<table border="1" id="bkmrk-sistemas-donde-se-ha-1" style="width: 647px;"><tbody><tr><td style="width: 306px;">**Sistemas donde se ha probado**</td><td style="width: 341px;">Rocky linux</td></tr><tr><td style="width: 306px;">**Sistemas donde funciona**</td><td style="width: 341px;">Cualquier sistema linux</td></tr></tbody></table>

# Prerrequisitos

- Conectividad a la API de Azure

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

- Credenciales

**SUBSCRIPTION\_ID**

Ve a tu subscripción, podras encontrar el subscription ID, en el menu de arriba.

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

**TENANT\_ID**

Para obtener el ID de inquilino. Vaya al Portal Azure y busque «Entra Id». En la página Overview overview.se muestra el ID del Directorio (tenant). Copie este ID. Ese es su tenant\_id

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

.

**CLIENT\_ID AND SECRET**

Para el ID de cliente y el secreto, tendrá que crearlos como un registro de aplicación.

Para crear un nuevo registro de aplicación, deberá seguir los pasos que se indican a continuación:

[https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application)

Allí obtendrá el ID de la aplicación (ID de cliente) y creará también el secreto del cliente. A continuación, puede copiar los valores y utilizar.

- Permisos

Para hacer las solicitudes a través de la api, la cuenta utilizada para autenticar en la ejecución requiere de unos determinados permisos.

<span style="text-decoration: underline;">Asignación de permisos</span>

Debe asignar un rol a la cuenta con la que vaya a operar la *app*, para ello acceda a **Home** y entre en **Suscription**:

[![image-1687444674025.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/scaled-1680-/image-1687444674025.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/image-1687444674025.png)

Dentro de la suscripción, seleccione **Access control (IAM)**:

[![image-1687444709078.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/scaled-1680-/image-1687444709078.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/image-1687444709078.png)

Se agregará una nueva asignación de rol en la debe seleccionar **Reader** para la *app* creada:

La app creada se puede buscar en miembros (servicio principal)

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

**Guarde los cambios pulsando *Save*** .

A partir de ese momento podrá conectar con el servicio y hacer solicitudes a través de este plugin.

# Parámetros

**Parámetros**

<table border="1" id="bkmrk---conf-ruta-al-archi" style="width: 516px;"><tbody><tr><td style="width: 113px;">--conf</td><td style="width: 403px;">Ruta al archivo de configuración</td></tr></tbody></table>

<div id="bkmrk-archivo-de-configura"><div><div>**Archivo de configuración (--conf)**</div></div></div><div id="bkmrk-"></div>```
agents_group_name = < Nombre del grupo de destino para los agentes creados >
agent_name        = < Nombre del agente que contentendrá los módulos (solo si agent_per_mv no esta activado) >
interval          = < Intervalo de creación del agente >
agent_prefix      = < Prefijo para los agentes creados >
module_prefix     = < Prefijo para los módulos creados >

transfer_mode      = < Modo de transferencia, tentacle o local >
tentacle_ip        = < IP de la máquina destino para los agentes creados >
tentacle_port      = < Puerto de tentacle, por defecto : 41121 >
tentacle_opts      = < Opciones adicionales de tentacle client >

use_proxy         = < Marcar esta opcion para poder especificar una url de proxy >
proxy_url         = < Url proxy >
ssl_check         = < Marcar para habilitar el chequeo ssl >
agent_per_vm      = < Habilitar para crear un agente por maquina virtual >
debug_mode        = < Habilitar para activar el modo debug >

allow_regexp = < Patron de regexp. Las métricas que coincidan con el patron se monitorizaran >
deny_regexp = < Patron de regexp. Las métricas que coincidan con el patron se descartaran >
creds_b64 = < Credenciales en base64 del archivo JSON para autenticar >
```

<span style="text-decoration: underline;">Ejemplo</span>

```
agents_group_name = azure   
agent_name        = Azure backups
interval          = 3600
threads           = 1
temporal          = 0
data_dir          = "/var/spool/pandora/data_in/"
agent_prefix      = 
module_prefix     = 

transfer_mode     = "tentacle"
tentacle_client   = "tentacle_client"
tentacle_ip       = "192.168.50.61"
tentacle_port     = 41121
tentacle_opts     = 

use_proxy         = 0
proxy_url         = 
ssl_check         = 0
agent_per_vm      = 0
debug_mode        = 1

allow_regexp      = 
deny_regexp       = 

creds_b64 = oiZJDNNJKCDJndkdKDNJDKDKNDhjdkdmdNHFJFKfFMFNFJFKk5IinDJFJKFKfmnfDHHDKDKDldjjDfmFJFNFFMNFNFMFNFmFNFFJJFmf==
```

# Ejecucion manual

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

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

Por ejemplo:

```shell
./pandora_azure_backup --conf /usr/share/pandora_server/util/plugin/azure.conf
```

La ejecución devolverá una salida en formato JSON con información sobre la ejecución, y generará un fichero XML para cada agente monitorizado que enviará al servidor de Pandora FMS por el método de transferencia indicado en la configuración.

Por ejemplo:

```JSON
{"summary": {"Total agents": 3}
```

# Discovery

Este plugin puede integrarse con el *Discovery* de Pandora FMS.

Para ello se debe cargar el paquete ".disco" que puede descargar desde la librería de Pandora FMS:

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

Una vez cargado, se podrán monitorizar entornos de Azure Microsoft Compute creando tareas de *Discovery* desde la sección *Management &gt; Discovery &gt; Cloud*.

Para cada tarea se solicitarán los siguientes datos mínimos:

- **Azure credentials**: Credenciales de conexión al API de Microsoft Azure a usar por la tarea. Se deben registrar previamente en el almacén de credenciales de Pandora FMS.
- **Use proxy:** Habilitar para poder especificar una direccion proxy
- **Proxy url:** Url del proxy
- **Verify proxy SSL:** Habilitar chequeo ssl
- **Tentacle IP**: IP del servidor de Tentacle al que enviar los datos de los agentes. Normalmente este parámetro no se modificará.
- **Tentacle port**: Puerto del servidor de Tentacle al que enviar los datos. Normalmente este parámetro no se modificará.
- **Tentacle extra options**: Opciones adicionales para el envio de datos mediante el cliente de Tentacle. Normalmente este parámetro no se modificará.

[![Captura desde 2026-03-05 17-26-51.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-03/scaled-1680-/captura-desde-2026-03-05-17-26-51.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-03/captura-desde-2026-03-05-17-26-51.png)

Finalmente se podrá ajustar la monitorización que se desee:

- **Agent name:** Nombre del agente que contentendrá los módulos (solo si Agent per item no esta activado)
- **Use prefix for modules:** Para poder especificar un prefijo para los módulos creados
- **Prefix for modules created:** Prefijo para los módulos creados
- **Use prefix for agents:** Para poder especificar un prefijo para los agentes creados
- **Prefix for agents created:** Prefijo para los agentes creados
- **Regexp to filter modules:** Habilitar para poder especificar un patron de regexp
- **Allow regexp:** Patron de regexp. Los backups de items que coincidan con el patron se monitorizaran
- **Regexp to discard modules:**Habilitar para poder especificar un patron de regexp
- **Deny regexp:** Patron de regexp. Los backups de items que coincidan con el patron se descartaran
- **Agent per item:** Habilitar para crear un agente por cada item que contendrá los backups de este
- **Debug mode:** Habilitar para obtener más información en la salida de la ejecución de la tarea

[![Captura desde 2026-03-05 17-35-09.png](https://pandorafms.com/guides/public/uploads/images/gallery/2026-03/scaled-1680-/captura-desde-2026-03-05-17-35-09.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2026-03/captura-desde-2026-03-05-17-35-09.png)

Las tareas que se completen exitosamente dispondrán de un sumario de ejecución con la siguiente información:

- **Total agents**: Número total de agentes generados por la tarea.

Las tareas que no se completen exitosamente dispondrán de un sumario de ejecución registrando los errores producidos.

# Agentes y módulos generados por el plugin

La ejecución del plugin, creara un unico agente o uno por cada item si esta habilitado el token agent\_per\_vm. Creara los siguientes módulos:

<table border="1" id="bkmrk-%3Citem_name%3E-last-bac" style="border-collapse: collapse; width: 100%; height: 477.866px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 80.0333px;"><td style="height: 80.0333px;">&lt;item\_name&gt; Last backup</td><td style="height: 80.0333px;">Indica el tiempo transcurrido desde la última copia de seguridad realizada para ese recurso. Esta métrica permite detectar rápidamente si un backup lleva demasiado tiempo sin ejecutarse.</td></tr><tr style="height: 80.0333px;"><td style="height: 80.0333px;">&lt;item\_name&gt; Recovery points</td><td style="height: 80.0333px;">Muestra el número total de puntos de recuperación disponibles para el recurso. La descripción del módulo también indica cuántos backups se han completado correctamente y cuántos han fallado.</td></tr><tr style="height: 80.0333px;"><td style="height: 80.0333px;">&lt;item\_name&gt; Protection state</td><td style="height: 80.0333px;">Indica el estado de la protección del recurso dentro del sistema de backups de Azure. Permite saber si el recurso está correctamente protegido o si la protección está detenida, pausada o presenta algún error.</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">&lt;item\_name&gt; Last backup status</td><td style="height: 29.6333px;">Estado del último backup realizado. Permite conocer si la última ejecución fue correcta o si presentó algún problema.</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">&lt;item\_name&gt; Health status</td><td style="height: 29.6333px;">Estado general de salud del recurso dentro del sistema de backup, indicando si Azure detecta alguna acción recomendada o requerida.</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">&lt;item\_name&gt; Protection status</td><td style="height: 29.6333px;">Indica si la protección del recurso se encuentra en estado saludable o si existe algún problema que pueda afectar a la correcta realización de las copias de seguridad.</td></tr></tbody></table>

Los módulos "Protection state", "Last backup status", "Health status", y "Protection status" crean un módulo de valor númerico, agenciado a un estado, siendo estas las equivalencias :  
  
**Protection State**

<table border="1" id="bkmrk-" style="border-collapse: collapse; width: 100%; height: 207.433px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.6333px;"><td style="height: 29.6333px;">Protected</td><td style="height: 29.6333px;">1</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">IRPending</td><td style="height: 29.6333px;">2</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">Invalid</td><td style="height: 29.6333px;">3</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">BackupsSuspended</td><td style="height: 29.6333px;">4</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">ProtectionPaused</td><td style="height: 29.6333px;">5</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">ProtectionStopped</td><td style="height: 29.6333px;">6</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">ProtectionError</td><td style="height: 29.6333px;">7</td></tr></tbody></table>

**Last backup status**

<table border="1" id="bkmrk-healthy-1-irpending-" style="border-collapse: collapse; width: 100%; height: 118.533px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.6333px;"><td style="height: 29.6333px;">Healthy</td><td style="height: 29.6333px;">1</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">IRPending</td><td style="height: 29.6333px;">2</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">Invalid</td><td style="height: 29.6333px;">3</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">Unhealthy</td><td style="height: 29.6333px;">4</td></tr></tbody></table>

**Health status**

<table border="1" id="bkmrk-passed-1-actionsugge" style="border-collapse: collapse; width: 100%; height: 118.533px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.6333px;"><td style="height: 29.6333px;">Passed</td><td style="height: 29.6333px;">1</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">ActionSuggested</td><td style="height: 29.6333px;">2</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">ActionRequired</td><td style="height: 29.6333px;">3</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">Invalid</td><td style="height: 29.6333px;">4</td></tr></tbody></table>

**Protection status**

<table border="1" id="bkmrk-healthy-1-unhealthy-" style="border-collapse: collapse; width: 100%; height: 59.2666px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.6333px;"><td style="height: 29.6333px;">Healthy</td><td style="height: 29.6333px;">1</td></tr><tr style="height: 29.6333px;"><td style="height: 29.6333px;">Unhealthy</td><td style="height: 29.6333px;">2</td></tr></tbody></table>

<p class="callout info">**item name** es el **nombre del recurso que tiene configurada la copia de seguridad en Azure**. Es decir, identifica al elemento protegido dentro del sistema de backups, como puede ser una **máquina virtual, una base de datos o un recurso de almacenamiento**.</p>