# Discovery

Este plugin puede integrarse con el *Discovery* de Pandora FMS.

Para ello se debe cargar el paquete `.disco` correspondiente desde la librería de Pandora FMS o desde el sistema de plugins de la consola.

Una vez cargado, se podrán monitorizar recursos Azure Application Gateway creando tareas de *Discovery* desde la sección correspondiente de Cloud/Application Discovery.

Para cada tarea se solicitarán los siguientes datos en el paso **Azure Base**:

- **Azure Subscription ID:** identificador de la suscripción de Azure donde se descubrirán los Application Gateways.
- **Azure Tenant ID:** identificador del tenant de Azure Active Directory usado por el Service Principal.
- **Azure Client ID:** identificador de aplicación del Service Principal.
- **Azure Client Secret:** secreto del Service Principal.
- **Resource group:** filtro opcional para limitar el descubrimiento a un grupo de recursos. Si se deja vacío, se descubren Application Gateways de toda la suscripción.

En el paso **Application Gateway Options** se podrán configurar opciones adicionales:

- **Target agent:** agente destino donde se almacenarán todos los módulos cuando no se active la creación de agente por Application Gateway.
- **Create one agent per Application Gateway:** si está activo, cada Application Gateway genera su propio agente. Si está desactivado, todos los módulos se envían al agente indicado en **Target agent**.
- **Application Gateway agent prefix:** prefijo opcional para los agentes creados por Application Gateway. Por ejemplo, `Azure Application Gateway ` creará agentes como `Azure Application Gateway agw-production`.
- **Modules prefix:** prefijo opcional para todos los nombres de módulos generados.
- **Scan Application Gateways:** activa el descubrimiento automático de Application Gateways.
- **Entities file:** fichero temporal donde se almacena la caché de recursos descubiertos.
- **Enable entities file re-scan interval:** activa el refresco periódico del fichero temporal de entidades descubiertas.
- **Entities re-scan interval:** intervalo usado para reconstruir la caché de entidades cuando el re-scan está activado.
- **Mock Azure API URL:** URL opcional para pruebas locales. En producción debe dejarse vacío.

En el paso **Metrics** se podrán configurar las métricas y filtros:

- **Metrics time window:** ventana temporal usada para consultar métricas de Azure Monitor.
- **Azure metric interval:** granularidad de Azure Monitor en formato ISO-8601. Por defecto `PT1M`.
- **Metric timeout:** timeout en segundos para cada llamada a Azure. Si se configura `0` o un valor negativo, el plugin usará `30` segundos.
- **Max retries:** número máximo de reintentos para errores temporales de API, incluyendo rate limiting HTTP 429.
- **Output format:** formato de salida generado por el plugin. Para Discovery debe usarse `JSON`.
- **Performance modules:** crea módulos de CPU, conexiones actuales, throughput y nuevas conexiones por segundo.
- **Request modules:** crea módulos de peticiones fallidas, estado HTTP y total de peticiones.
- **Backend modules:** crea módulos de hosts sanos, hosts no sanos, peticiones por host sano y estado HTTP de backend.
- **Latency modules:** crea módulos de tiempo de conexión backend, primera respuesta, última respuesta, tiempo total y RTT de cliente.
- **Traffic modules:** crea módulos de bytes enviados y bytes recibidos.
- **Security modules:** crea módulos de protocolo TLS, errores de negociación TLS de backend y conexiones rechazadas.
- **Capacity modules:** crea módulos de unidades de cómputo, unidades de capacidad, capacidad facturada estimada y capacidad facturable fija. Estas métricas aplican a SKUs v2.
- **WAF modules:** crea módulos WAF de coincidencias, bloqueos, peticiones, reglas, bot protection, challenge y penalty box. Estas métricas aplican a SKUs WAF.
- **WebSocket modules:** crea módulos de conexiones WebSocket activas y código de cierre WebSocket.
- **Application Gateway count module:** crea el módulo de conteo de Application Gateways descubiertos.
- **Modules allow regexp:** permite definir expresiones regulares de módulos permitidos, una por línea. Si se configura, solo se crearán los módulos cuyo nombre final coincida con alguna expresión.
- **Modules deny regexp:** permite definir expresiones regulares de módulos descartados, una por línea. Si un módulo coincide con esta lista, no se crea.

Las tareas completadas con éxito tendrán un resumen de ejecución con información similar a:

- **application_gateways_discovered:** número de Application Gateways descubiertos en la ejecución actual.
- **application_gateways_vanished:** número de Application Gateways almacenados previamente que ya no aparecen en el descubrimiento actual.
- **modules:** número total de módulos generados.
- **errors:** número de errores detectados durante la ejecución.
- **scan_source:** origen del escaneo, `azure` cuando se consulta Azure o `entities_cache` cuando se reutiliza la caché.