> For the complete documentation index, see [llms.txt](https://docs.powermonitor.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.powermonitor.com.br/es/documentacion-tecnica/documentacao-tecnica/visao-geral.md).

# Visión general

Componentes, tecnologías, integraciones, multi-tenancy y seguridad de la plataforma Power Monitor.

El Power Monitor es una aplicación **SaaS multi-tenant** alojada por Power Tuning en **Microsoft Azure**. Recopila metadatos y estados del entorno Power BI / Microsoft Fabric de cada cliente mediante las APIs oficiales de Microsoft, guarda esa información en una base de datos relacional aislada por organización y ejecuta verificaciones continuas que generan alertas.

## Componentes

```
                ┌──────────────────────────────────────────────┐
 Navegador ───▶ │ Portal web (SPA) + API REST                  │
 (Entra ID)     │ autenticación OpenID Connect con Entra ID    │
                │ procesamiento de escaneos en segundo plano   │
                └───────────────┬──────────────────────────────┘
                                │
                ┌───────────────▼──────────────────────────────┐
                │ Azure Functions (jobs programados y colas)   │
                │ health checks, consumo, anomalías, eventos,  │
                │ facturación, notificaciones                  │
                └───────────────┬──────────────────────────────┘
                                │
     ┌──────────────────────────┼─────────────────────────────┐
     ▼                          ▼                             ▼
 PostgreSQL               Azure Key Vault             Azure Storage Queues
 (datos por organización) (claves de cifrado)         (distribución de trabajo)
                                │
                                ▼
     APIs de Microsoft: Power BI / Fabric (REST, Admin, Scanner, XMLA),
     Microsoft Graph, Azure Resource Manager, Cost Management
```

| Componente                  | Función                                                                                                                                                                                                                                    |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Portal web y API**        | Aplicación ASP.NET Core que sirve el portal (SPA) y la API REST que este utiliza. También ejecuta el procesamiento en segundo plano de los **escaneos** (cola persistente de tareas)                                                       |
| **Azure Functions**         | Decenas de jobs programados y activados por cola: verificaciones de salud (cada 30 segundos), consumo de capacidades, detección de anomalías, eventos de actividad, costos, programaciones de capacidad, checklists, facturación y correos |
| **PostgreSQL**              | Base de datos relacional con todos los datos de las organizaciones, aislados por organización                                                                                                                                              |
| **Azure Key Vault**         | Guarda las claves utilizadas para cifrar las credenciales de los clientes                                                                                                                                                                  |
| **Azure Storage Queues**    | Distribución de trabajo entre los jobs (por ejemplo, un mensaje por organización)                                                                                                                                                          |
| **Envío de notificaciones** | Correo (SendGrid o SMTP del propio cliente) y Microsoft Teams, Slack y Telegram mediante el servicio de bot de Power Tuning                                                                                                                |
| **Observabilidad**          | Rastreo y registros estructurados con OpenTelemetry                                                                                                                                                                                        |

## Tecnologías

| Capa         | Tecnologías                                                                                                                                                                  |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Backend**  | .NET 10 / ASP.NET Core, Entity Framework Core 10 con Npgsql, NodaTime, MediatR (comandos), FluentValidation, Microsoft Identity Web (OIDC), Azure Functions (worker aislado) |
| **Frontend** | Vue.js 3, TypeScript, Vite, Vue Router, Pinia, Vue I18n (5 idiomas), Bootstrap, Axios; aplicación instalable (PWA) en celulares y tabletas                                   |
| **Datos**    | PostgreSQL, fechas en UTC (`timestamptz`)                                                                                                                                    |
| **Correo**   | Plantillas Razor renderizadas en el servidor; envío mediante SendGrid o SMTP de la organización                                                                              |

## Organización del código

La solución sigue una arquitectura en capas:

| Capa                                  | Responsabilidad                                                                                                                                                                                                                     |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Dominio**                           | Entidades, reglas de negocio, comandos y validaciones. No depende de la infraestructura                                                                                                                                             |
| **Aplicación**                        | Casos de uso y servicios consumidos por la API y por los jobs                                                                                                                                                                       |
| **Motores de escaneo y de monitoreo** | Ejecución de los escaneos de inventario y de las verificaciones de salud, con una especificación por tipo de tarea                                                                                                                  |
| **Infraestructura**                   | Integraciones: base de datos, Power BI/Fabric, Microsoft Graph, Azure (Key Vault, colas, costos), XMLA (Analysis Services), endpoints SQL de Fabric, proveedores de IA, correo, notificaciones, geolocalización de IP y facturación |
| **Web y Functions**                   | Hosts: API/portal y jobs programados                                                                                                                                                                                                |

## Integraciones externas

| Integración                                                     | Uso                                                                                                                                  |
| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **Power BI REST y Admin APIs** (incluida la Scanner API)        | Inventario, metadatos, linaje, permisos, historial de actualizaciones, gateways, capacidades, eventos de actividad                   |
| **Microsoft Fabric REST APIs**                                  | Ejecuciones de elementos de Fabric, programaciones, Mirroring, dominios                                                              |
| **API de consultas de Power BI (executeQueries)**               | Consulta DAX al modelo de la aplicación Fabric Capacity Metrics (consumo de las capacidades)                                         |
| **XMLA (Analysis Services)**                                    | Lectura de la estructura y del tamaño de los modelos (VertiPaq) en el Escaneo de Tamaño de Modelos y en la Evaluación de Rendimiento |
| **Endpoints SQL de Fabric**                                     | Query Insights de warehouses y lakehouses                                                                                            |
| **Microsoft Graph**                                             | Instalación automática; lectura de usuarios, grupos y miembros; vigencia del client secret                                           |
| **Azure Resource Manager y Cost Management**                    | Pausar, reanudar y escalar capacidades; costo de las capacidades                                                                     |
| **Proveedores de IA** (configurados por la propia organización) | Asistente de IA y sugerencias                                                                                                        |
| **Servicios de geolocalización de IP**                          | País/estado/ciudad estimados para los eventos de visualización                                                                       |

## Multi-tenancy

* Cada cliente es una **organización**, asociada a un tenant de Microsoft Entra ID.
* Todos los registros de datos de clientes pertenecen a una organización, y toda consulta se **filtra por la organización del usuario autenticado**, obtenida de la identidad del inicio de sesión, nunca de parámetros enviados por el navegador.
* Un recurso que pertenece a otra organización se trata como **inexistente** (la API no revela que existe).
* Una segunda capa restringe los datos de los usuarios con **alcance de workspaces**.

## Seguridad

* **Autenticación:** OpenID Connect con Microsoft Entra ID. Solo ingresan los usuarios registrados en la organización; el Power Monitor no tiene contraseñas propias.
* **Autorización:** perfiles y roles (Usuario y Administrador), alcance de workspaces y bloqueo de páginas. Las acciones de escritura requieren Administrador, validado en el servidor.
* **Credenciales de los clientes:** el Client ID, el Client Secret y las claves de los proveedores de IA están protegidos mediante **cifrado de sobre**: los datos se cifran con AES-256 y la clave AES se cifra con una clave RSA (RSA-OAEP-256) mantenida en **Azure Key Vault**. El secret nunca se devuelve al navegador.
* **Acceso al tenant del cliente:** mediante el Service Principal del propio cliente (client credentials) y, en acciones específicas, mediante el token delegado del administrador que las ejecuta.
* **Auditoría:** los inicios de sesión, las páginas visitadas y los cambios de configuración quedan registrados con usuario, fecha/hora, IP y valores anteriores y nuevos (**Auditoría › Eventos de la Aplicación**).
* **Solo metadatos:** el Power Monitor no copia el contenido de los datos de negocio de los modelos e informes. Consulte [Seguridad y privacidad de los datos](/es/perguntas-frequentes/duvidas-tecnicas/seguranca-e-privacidade.md).

## Páginas relacionadas

* [Flujo de escaneos](/es/documentacion-tecnica/documentacao-tecnica/fluxo-de-scans.md)
* [Monitoreo continuo](/es/documentacion-tecnica/documentacao-tecnica/monitoramento-continuo.md)
* [Modelo de datos](/es/documentacion-tecnica/documentacao-tecnica/modelo-de-dados.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.powermonitor.com.br/es/documentacion-tecnica/documentacao-tecnica/visao-geral.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
