Discovery Azure Health Events El plugin Azure Service Health Events descubre los eventos de estado del servicio que afectan a las suscripciones de Azure accesibles para una aplicación registrada. Los eventos se agrupan por región impactada y se convierten en agentes y módulos de Pandora FMS. Introducción El plugin Azure Service Health Events descubre los eventos de estado del servicio que afectan a las suscripciones de Azure accesibles para una aplicación registrada. Los eventos se agrupan por región impactada y se convierten en agentes y módulos de Pandora FMS. El plugin permite: Consultar todas las suscripciones visibles para el Service Principal. Recuperar eventos de Azure Service Health mediante la API de Azure Resource Health. Agrupar los eventos por región impactada. Crear un agente por región o concentrar todos los módulos en un único agente. Aplicar filtros en Azure y filtros locales mediante expresiones regulares. Detectar eventos nuevos o actualizados entre ejecuciones. Mantener un registro JSONL de los eventos para búsquedas posteriores. Detectar regiones que dejan de aparecer en la consulta. Requisitos Pandora FMS con Discovery y capacidad para cargar el paquete .disco . Conectividad HTTPS desde el servidor de Pandora FMS hacia: https://login.microsoftonline.com https://management.azure.com Una aplicación registrada en Microsoft Entra ID con Service Principal. Un secreto de cliente válido. Acceso de lectura a todas las suscripciones que se quieran monitorizar. Un grupo de agentes válido en la definición de la tarea Discovery. El grupo All no es válido. Configuración en Azure En Microsoft Entra ID se debe crear una aplicación registrada y generar un secreto de cliente. Para configurar la tarea se necesitan: Tenant ID : identificador del tenant de Microsoft Entra ID. Client ID : identificador de la aplicación registrada. Client secret : valor del secreto creado para la aplicación. El plugin utiliza OAuth 2.0 Client Credentials y solicita un token para el ámbito: https://management.azure.com/.default Permisos La opción recomendada es asignar al Service Principal el rol Reader en cada suscripción que se quiera monitorizar. Como mínimo, una función personalizada debe permitir enumerar las suscripciones accesibles y leer los eventos de Service Health, incluyendo Microsoft.ResourceHealth/events/read . Los detalles sensibles de algunos avisos de seguridad pueden estar ocultos para identidades sin permisos elevados. El plugin consulta el listado de eventos, pero no ejecuta la operación adicional fetchEventDetails para obtener contenido sensible. Configuración de la tarea Discovery El asistente contiene cuatro pasos visibles. 1. Task definition Se configuran los datos generales de la tarea Discovery: Nombre de la tarea. Grupo de agentes. Intervalo de ejecución. Debe seleccionarse un grupo real de Pandora FMS. No se debe utilizar All , ya que el plugin rechaza identificadores de grupo vacíos o menores o iguales a cero. 2. Azure credentials Campo Obligatorio Descripción Tenant ID Sí Tenant de Microsoft Entra ID. Client ID Sí Identificador de la aplicación registrada. Client secret Sí Secreto de la aplicación. API endpoint No Vacío utiliza https://management.azure.com . Solo se modifica para nubes soberanas o entornos personalizados. Login endpoint No Vacío utiliza https://login.microsoftonline.com . Solo se modifica para nubes soberanas o entornos personalizados. 3. Azure event query and filters Campo Valor predeterminado Descripción Event history in days 15 Periodo consultado, entre 1 y 365 días. Azure API filter Vacío Expresión enviada a Azure mediante $filter . Subscription allow regexp Vacío Expresiones aplicadas al ID y al nombre de la suscripción. Region allow regexp Vacío Regiones que puede aceptar el plugin. Service allow regexp Vacío Servicios impactados que puede aceptar el plugin. Event type allow regexp Vacío Tipos de evento permitidos. Status allow regexp Vacío Estados regionales o generales permitidos. Level allow regexp Vacío Niveles permitidos. Event search allow regexp Vacío Al menos una expresión debe coincidir con el texto completo del evento. Event search deny regexp Vacío Descarta los eventos que coincidan. First run events are new Desactivado Si se activa, todos los eventos de la primera ejecución se consideran nuevos. 4. Agents modules and execution Campo Valor predeterminado Descripción Create agent per impacted region Activado Crea un agente por cada región. Desactivado utiliza Target agent . Target agent Azure Service Health Events Agente único utilizado cuando no se crea un agente por región. Agent prefix Azure Service Health Prefijo de los agentes regionales. Module prefix Vacío Prefijo añadido al nombre final de los módulos. State modules Activado Crea el módulo Connection . Event count modules Activado Crea los cinco módulos de recuento. Event detail modules Activado Crea Events y New events . Maximum event detail length 16000 Máximo de caracteres de los módulos de detalle. El mínimo efectivo es 1000. Modules allow regexp Vacío Solo crea módulos cuyo nombre final coincida. Modules deny regexp Vacío Descarta módulos cuyo nombre final coincida. Write event log Activado Habilita el registro JSONL. Maximum event log size 20 Rota el log al alcanzar este tamaño. HTTP timeout 30 Tiempo máximo por petición. Cero o un valor negativo se convierte en 30 segundos. Maximum retries 2 Reintentos para HTTP 429 y errores temporales de Azure. Verify SSL certificates Activado Debe permanecer activo en producción. Proxy URL Vacío Proxy HTTP o HTTPS opcional. Mock Azure API URL Vacío Campo reservado para pruebas; debe permanecer vacío en producción. Filtros Filtro aplicado por Azure Azure API filter se envía directamente a la API y reduce los eventos devueltos por Azure. La documentación oficial muestra expresiones sobre servicio y región, por ejemplo: service eq 'Virtual Machines' or region eq 'West US' El plugin no valida ni modifica esta expresión. Una sintaxis no aceptada por Azure hará que la suscripción correspondiente devuelva un error. Filtros locales de eventos Los demás filtros se aplican localmente después de descargar los eventos. Cada textarea acepta una expresión regular por línea: ^West Europe$ ^Spain Central$ Las expresiones no distinguen entre mayúsculas y minúsculas. Se ignoran las líneas vacías y las que comienzan por # . Los filtros allow funcionan de esta forma: Si están vacíos, permiten todos los valores. Si contienen expresiones, al menos una debe coincidir. El filtro Event search allow regexp busca sobre suscripción, tracking ID, título, resumen, estado, nivel, tipo, subtipo, servicio y región. Event search deny regexp busca sobre los mismos campos y tiene prioridad para descartar el evento. Filtros de módulos Los filtros Modules allow regexp y Modules deny regexp se aplican al nombre final del módulo, después de añadir prefijos y, en modo de agente único, el nombre de la región. Si un módulo coincide simultáneamente con allow y deny, prevalece deny. Ejemplo para conservar únicamente conexión y contadores: Connection$|events count$ Agentes y Módulos generados Un agente por región Con Create agent per impacted region activado, el nombre se forma así: Ejemplo: Azure Service Health West Europe Agente único Con la opción desactivada, todos los módulos se asignan a Target agent . Para evitar colisiones, cada módulo incorpora la región: West Europe Events count Spain Central Events count Si también se configura Module prefix , este aparece antes de la región. Módulos generados Todos los módulos se asignan al grupo de módulos Azure Service Health Events . Módulo Tipo Módulo Pandora Dato Connection generic_proc 1 si la región aparece en la consulta actual y 0 si ha desaparecido. Events count generic_data Número de eventos únicos que afectan a la región. New events count generic_data Número de eventos nuevos o actualizados desde la ejecución anterior. Active events count generic_data Eventos con estado regional o general Active Critical events count generic_data Eventos con nivel Critical Warning events count generic_data Eventos con nivel Warning Events generic_data_string Detalle de todos los eventos coincidentes. New events generic_data_string Detalle de eventos nuevos o actualizados; devuelve el entero 0 cuando no existen novedades. Los módulos de detalle incluyen, cuando están disponibles: título, tracking ID, suscripción, estado, nivel, tipo, subtipo, fechas, servicio, región y resumen. Si el texto supera el máximo configurado, se trunca y se indica que el contenido completo está disponible en el log JSONL.