Configure Azure Log Analytics para Power BI
Power BI se integra con Azure Log Analytics para permitir que administradores y propietarios de áreas de trabajo Premium configuren una conexión de Log Analytics a su suscripción de Power BI. En este artículo se describe cómo funciona la integración entre Log Analytics y Power BI, y cómo configurarla para el entorno.
Hay dos elementos para que Azure Log Analytics funcione para Power BI:
- Configure su suscripción en Azure Portal.
- Habilite Log Analytics para Power BI en el portal de administrador de Power BI.
Las secciones siguientes lo conducen a través de los pasos a realizar de cada una.
Prerrequisitos
Para poder configurar la integración de Log Analytics desde Power BI, debe crear un área de trabajo de Log Analytics en Azure Portal. También debe conceder permiso en Azure para que el servicio de Power BI escriba registros. Los requisitos exactos son los siguientes:
- Acceso de colaborador a la suscripción de Azure.
- Registre el proveedor de recursos "microsoft.insights" en la suscripción de Azure donde recopilará los datos de registro de Power BI.
- El usuario que configurará la integración de Log Analytics en Power BI debe tener el rol Colaborador de Log Analytics del área de trabajo de Log Analytics. Vea las preguntas más frecuentes sobre soluciones alternativas si no se puede asignar el rol Propietario.
Habilite el proveedor de recursos "microsoft.insights"
Log Analytics necesita que se habilite el proveedor de recursos "microsoft.insights" en el nivel de suscripción de Azure. Los pasos siguientes le guían por el proceso.
Inicie sesión en Azure Portal y seleccione la suscripción que quiere usar con Log Analytics y que contiene las áreas de trabajo de Log Analytics. En la sección Configuración, seleccione Proveedores de recursos, como se muestra en la siguiente imagen.
Busque microsoft.insights enProveedores de recursos. Después, seleccione Register (Registrar).
Establecimiento de permisos
Asegúrese de que el usuario que configure la integración de Log Analytics tenga el rol Colaborador de Log Analytics del área de trabajo de Log Analytics. Al seleccionar Control de acceso (IAM) para la suscripción en Azure Portal y, después, Asignaciones de roles en las selecciones superiores del panel, el usuario actual deberá ver al menos una entrada: Colaborador de Log Analytics para el usuario que configurará Log Analytics:
Una vez que se han completado estas etapas, finaliza la parte de configuración de Azure Log Analytics. En la sección siguiente se muestra cómo continuar y completar la configuración en el portal de administración de Power BI.
Permita el registro de nivel de área de trabajo desde el portal de administrador
Un administrador de Power BI debe completar el siguiente paso a fin de habilitar Azure Log Analytics para áreas de trabajo de Power BI Premium. Esta configuración permitirá a los administradores de áreas de trabajo de Power BI Premium enviar sus registros de área de trabajo a Azure Log Analytics cuando se hayan cumplido los requisitos previos.
En el Portal de administrador de Power BI, vaya a Configuración de inquilinos > Configuración de auditoría y uso y expanda Conexiones de Azure Log Analytics para administradores del área de trabajo. Para permitir que los administradores del área de trabajo habiliten Log Analytics, cambie el control deslizante a Habilitado y especifique los grupos de seguridad necesarios en Aplicar a, tal como se muestra en la imagen siguiente.
Configure el registro en un área de trabajo Premium
En el área de trabajo Premium, los administradores pueden habilitar Log Analytics. Para ello, vaya a Configuración como se muestra en la imagen siguiente.
En el panel Configuración, seleccione Conexiones de Azure y expanda Log Analytics, como se muestra en la imagen siguiente.
Seleccione la suscripción de Azure, el grupo de recursos y, después, el área de trabajo de Log Analytics configurada en la sección anterior. A continuación, elija Guardar. Cuando se completa correctamente, la sección expandida de Log Analytics de nivel de inquilino tendrá un aspecto similar al de la imagen siguiente.
Desconexión de Azure Log Analytics
Puede desconectarse de Azure Log Analytics para dejar de enviar registros a Azure. Para desconectarse, en la Configuración de área de trabajo de Power BI, vaya a la configuración de Log Analytics. Seleccione Desconectar de Azure. A continuación, elija Guardar para desconectar.
Nota
Cuando se desconecta un área de trabajo de Power BI de Azure Log Analytics, los registros no se eliminan. Los datos permanecen y siguen las directivas de almacenamiento y retención que estableció allí.
Escenarios de uso
Hay muchas maneras en que Azure Log Analytics y Power BI pueden ayudar a resolver los desafíos reales de la organización. Tenga en cuenta lo siguiente.
- Identificación de períodos de actividad alta o inusual del motor de Analysis Services por capacidad, área de trabajo, informe o usuario.
- Análisis del rendimiento de las consultas y las tendencias, incluidas las operaciones de DirectQuery externas.
- Analice la duración de la actualización del modelo semántico, las superposiciones y los pasos de procesamiento.
- Análisis de las operaciones personalizadas enviadas mediante el punto de conexión XMLA Premium.
Envíe comentarios a la Comunidad de Power BI sobre cómo usa el registro y de que manera esto ayudó a la organización.
Condiciones de error y soluciones
En la tabla siguiente se proporciona una colección de errores comunes, los eventos o configuraciones que los desencadenan y las resoluciones sugeridas.
Condición desencadenadora | Tipo | Mensaje |
---|---|---|
No tiene permiso para escribir en el área de trabajo de Log Analytics | Error: no se puede continuar | Necesita permisos de escritura en esta área de trabajo de Log Analytics para conectarla a Power BI. Póngase en contacto con la persona de la organización que administre las suscripciones de Azure para solucionar este problema. |
No tiene permiso para escribir en la cuenta del área de trabajo de Log Analytics | Error: no se puede continuar | Necesita permisos de escritura en esta área de trabajo de Log Analytics para conectarla a Power BI. |
No tiene acceso a ninguna suscripción de Azure | Error: no se puede continuar | No tiene acceso a ninguna suscripción de Azure. Pida a la persona que administra las suscripciones de Azure de la organización que le conceda acceso de colaborador o superior. |
No tiene acceso a ningún área de trabajo de Azure Log Analytics dentro de esa suscripción | Error: no se puede continuar | No tiene acceso a un área de trabajo de Azure Log Analytics. Pida a la persona que administra las suscripciones de Azure de la organización que le agregue al rol de colaborador o propietario de Log Analytics. |
Log Analytics de nivel de área de trabajo deshabilitado al intentar conectarse | Información | Pida al administrador del inquilino que conceda a los administradores del área de trabajo permiso para conectar áreas de trabajo de Log Analytics. |
Log Analytics de nivel de área de trabajo deshabilitado al intentar desconectarse | Información | El administrador del inquilino ha revocado el permiso para que los administradores del área de trabajo conecten sus propias áreas de trabajo de Azure Log Analytics. Si se desconecta, no podrá conectarse a otra. |
Eventos y esquema
Después de habilitar Azure Log Analytics, comienza a registrar las siguientes categorías de eventos. Para obtener más información sobre estos eventos, vea Eventos de seguimiento de Analysis Services.
- AggregateTableRewriteQuery
- Comando
- Deadlock
- DirectQuery
- Descubra
- Error
- ProgressReport
- Consultar
- Inicialización de sesión
- VertiPaqSEQuery
- notificación
En la siguiente tabla se describe el esquema.
Propiedad | Propiedad de Azure Analysis Services existente | Descripción |
---|---|---|
TimeGenerated | Marca de tiempo (UTC) de cuando se generó el registro. | |
OperationName | EventClass_s | Evento de seguimiento de Analysis Services asociado al registro. Consulte la página de documentación de eventos de seguimiento de AS para obtener más detalles sobre los posibles eventos para cada categoría. |
CorrelationId | Identificador de los eventos correlacionados. Se puede utilizar para identificar eventos correlacionados en varias tablas. | |
PowerBIWorkspaceId | Identificador único del área de trabajo que contiene el artefacto sobre el que se opera. | |
PremiumCapacityId | Identificador único de la capacidad Premium en la que se hospeda el artefacto sobre el que se opera. | |
ApplicationContext | ApplicationContext_s | Contenedor de propiedades de identificadores únicos que proporcionan detalles sobre la aplicación que ejecuta la solicitud. Por ejemplo, id. de informe. |
ApplicationName | ApplicationName_s | Contiene el nombre de la aplicación cliente que ha creado la conexión con el servidor. Esta columna se rellena con los valores que pasa la aplicación, en lugar de con el nombre que se muestra para el programa. |
ArtifactId | Identificador único del recurso que registra los datos. | |
ArtifactKind | Tipo de artefacto que registra la operación, por ejemplo, modelo semántico. | |
CpuTimeMs | CPUTime_s | Cantidad de tiempo de CPU (en milisegundos) que utiliza el evento. |
ArtifactName | DatabaseName_s | Nombre del artefacto de Power BI que registra esta operación. |
LogAnalyticsCategory | Único | Categoría de eventos de seguimiento de Analysis Services asociada al registro. Consulte la página de documentación de eventos de seguimiento de AS para obtener más detalles sobre los posibles categorías de eventos. |
DatasetMode | Modo del modelo semántico. Importación, DirectQuery o Composición. | |
DurationMs | Duration_s | Cantidad de tiempo (en milisegundos) que tarda la operación. |
Usuario | User_s | Usuario asociado a la operación en ejecución. Se utiliza cuando se debe suplantar la identidad de un usuario final en el servidor. |
ExecutingUser | EffectiveUsername_s | El usuario que ejecuta la operación. |
OperationDetailName | EventSubclass_s | Más información sobre el evento de seguimiento de Analysis Services asociado al registro. Consulte la propiedad "Subclase" de la página de documentación del evento de seguimiento para obtener más detalles sobre los valores posibles, por ejemplo, Comando Empezar. |
XmlaObjectPath | ObjectPath_s | Ruta del objeto. Lista separada por comas de elementos primarios, empezando por el elemento primario del objeto. |
PowerBIWorkspaceName | Nombre del área de trabajo de Power BI que contiene el artefacto. | |
StatusCode | Error_s | Código de estado de la operación. Indica si es correcta o no. |
ProgressCounter | ProgressTotal_s | Contador del progreso. |
XmlaProperties | RequestProperties_s | Propiedades de la solicitud XMLA. |
XmlaSessionId | SPID_s | Identificador de la sesión de Analysis Services. |
Level | Severity_s | Contiene el nivel de gravedad de la operación que se registra. Correcto, Informativo, Advertencia o Error. |
Identidad | Información sobre el usuario y las notificaciones. | |
Estado | Estado de la operación. | |
EventText | TextData_s | Contiene información detallada asociada a la operación, por ejemplo, consulta DAX. |
CustomerTenantId | Identificador del inquilino de Power BI del cliente. | |
XmlaRequestId | RootActivityId_g | Identificador único de la solicitud. |
ReplicaId | Identificador de réplica que le permitirá identificar la réplica cuando esté habilitada la Escalabilidad horizontal de consulta (QSO). La réplica de lectura y escritura siempre tiene ReplicaId='AAA' y las réplicas de solo lectura tienen ReplicaId a partir de "AAB". Para los modelos semánticos no habilitados para QSO, el ReplicaId es siempre 'AAA'. |
Evento ExecutionMetrics
Para cada solicitud Discover, Command y Query, se genera un evento denominado ExecutionMetrics al final de la solicitud. Este evento contiene métricas de ejecución para la solicitud, lo que puede ayudarle a diagnosticar y solucionar problemas de forma más eficaz. El seguimiento ExecutionMetrics se correlaciona con el evento [Discover|Command|Query]End más cercano.
La siguiente consulta KQL recupera los eventos ExecutionMetrics para todas las operaciones de actualización de un modelo semántico durante el último día:
let commands = PowerBIDatasetsWorkspace
| where TimeGenerated > ago(1d)
| where ArtifactId =~ "[Semantic Model Id]"
| where OperationName in ("CommandEnd")
| where EventText contains "<Refresh"
| project TimeGenerated, ArtifactId, CommandOperationName = OperationName, XmlaRequestId, CorrelationId, CommandText = EventText;
let executionMetrics = PowerBIDatasetsWorkspace
| where OperationName == "ExecutionMetrics"
| project TimeGenerated, XmlaRequestId, CorrelationId, EventText;
commands
| join kind=leftouter executionMetrics on XmlaRequestId
La siguiente consulta de KQL recupera los eventos que se limitaron durante el último día por área de trabajo, elemento y usuario:
let executionMetrics = PowerBIDatasetsWorkspace
| where TimeGenerated > ago(1d)
| where OperationName == "ExecutionMetrics"
| extend eventTextJson = parse_json(EventText)
| extend capacityThrottlingMs=toint(eventTextJson.capacityThrottlingMs)
| where capacityThrottlingMs > 0;
let commands = PowerBIDatasetsWorkspace
| where OperationName in ("CommandEnd", "QueryEnd", "DiscoverEnd")
| project
TimeGenerated,
ExecutingUser,
ArtifactId,
PowerBIWorkspaceId,
CommandOperationName = OperationName,
XmlaRequestId,
CorrelationId,
CommandText = EventText;
commands
| join kind=inner executionMetrics on XmlaRequestId
| project
TimeGenerated,
ArtifactId,
PowerBIWorkspaceId,
ExecutingUser,
CommandOperationName,
XmlaRequestId,
EventText,
CommandText,
capacityThrottlingMs
| summarize countThrottling = count(), avgThrottlingDuration = avg(capacityThrottlingMs) by PowerBIWorkspaceId, ArtifactId, ExecutingUser, CommandOperationName
Las estadísticas se presentan como texto JSON en la propiedad EventText, consulte los ejemplos siguientes.
{
"timeStart": "2024-03-20T12:39:59.681Z",
"timeEnd": "2024-03-20T13:01:14.241Z",
"durationMs": 1274559,
"vertipaqJobCpuTimeMs": 156,
"mEngineCpuTimeMs": 9617484,
"totalCpuTimeMs": 9618469,
"executionDelayMs": 10,
"approximatePeakMemConsumptionKB": 1683409,
"mEnginePeakMemoryKB": 1676816,
"tabularConnectionTimeoutMs": 18000000,
"refreshParallelism": 16,
"vertipaqTotalRows": 114,
"intendedUsage": 2
}
En la tabla siguiente se describen todas las propiedades posibles. No todas las propiedades se emiten en cada evento, ya que el contenido dependerá de la solicitud y del modelo semántico.
Propiedad | Descripción |
---|---|
timeStart | Marca de tiempo (UTC) del momento de inicio de la solicitud. |
timeEnd | Marca de tiempo (UTC) del momento de finalización de la solicitud. |
durationMs | Duración total de la ejecución. |
datasourceConnectionThrottleTimeMs | Tiempo total de limitación después de alcanzar el límite de conexión del origen de datos. Obtenga más información sobre el número máximo de conexiones simultáneas aquí. |
externalQueryExecutionTimeMs | Tiempo total invertido en ejecutar todas las consultas de orígenes de datos externos durante la solicitud. |
directQueryConnectionTimeMs | Tiempo total invertido en crear una nueva conexión de DirectQuery durante la solicitud. |
directQueryIterationTimeMs | Tiempo total invertido en iterar los resultados devueltos por las consultas de DirectQuery. |
directQueryTotalTimeMs | Tiempo total invertido en ejecutar y leer todas las consultas de DirectQuery durante la solicitud. |
executionDelayMs | Tiempo total invertido en esperar a la disponibilidad de los subprocesos del grupo de subprocesos del motor de Analysis Services. |
totalCpuTimeMs | Tiempo total de CPU de la solicitud. |
vertipaqJobCpuTimeMs | Tiempo total de CPU invertido por el motor de Vertipaq. |
mEngineCpuTimeMs | Tiempo total de CPU invertido por el motor de PowerQuery. |
queryProcessingCpuTimeMs | Tiempo total de CPU invertido por las tareas en el subproceso del grupo de subprocesos de consulta de Analysis Services. |
approximatePeakMemoryConsumptionKB | Consumo máximo aproximado de memoria total durante la solicitud. |
mEnginePeakMemoryKB | Tamaño aproximado de la confirmación de memoria máxima (en kilobytes) en todos los contenedores de mashup del motor de PowerQuery. |
directQueryTimeoutMs | Tiempo de espera asociado a consultas de DirectQuery. |
externalQueryTimeoutMs | Tiempo de espera asociado a consultas a orígenes de datos externos. |
tabularConnectionTimeoutMs | Tiempo de espera asociado a conexiones con orígenes de datos tabulares externos (p. ej., SQL). |
refreshParallelism | MaxParallelism efectivo usado en la solicitud. |
vertipaqTotalRows | Número total de filas procesadas por el motor de Vertipaq durante una operación de actualización. |
queryResultRows | Número total de filas devueltas como resultado de la consulta DAX. |
directQueryTotalRows | Número total de filas leídas de las distintas consultas de DirectQuery. |
directQueryRequestCount | Número total de consultas del motor de almacenamiento de DirectQuery ejecutadas por el motor DAX. |
errorCount | Número total de errores para la solicitud actual. |
qsoReplicaVersion | Versión de réplica para modelos semánticos habilitados para QSO, representados en formato FILETIME. |
intendedUsage | Uso previsto: valor predeterminado (0); actualización programada o de API (1); actualización a petición (2); actualización del icono del panel o la caché de consultas (3) |
commandType | Tipo de comando de Analysis Services solicitado por el cliente (por ejemplo, Batch, Instrucción, Copia de seguridad,...) |
discoverType | Tipo de detección solicitado por el cliente. Consulte EventSubclass para obtener una lista de tipos de detección. |
queryDialect | Tipo de dialecto usado por el cliente para consultar el servidor: desconocido (-1); MDX (0); DMX (1); SQL (2); DAX (3); JSON (4) |
capacityThrottlingMs | Tiempo total que se retrasó la solicitud debido a la limitación de capacidad. Obtenga más información sobre la limitación aquí. |
- Todas las duraciones y los tiempos de CPU se indican en milisegundos.
- Es posible encontrar propiedades adicionales más allá de las descritas en la tabla anterior y se deben considerar como no documentadas y sujetas a cambios.
Consultas KQL de Log Analytics de ejemplo
La siguiente colección de consultas de muestras puede ser útil al usar Azure Log Analytics con Power BI. Se pueden ejecutar directamente en Azure Portal o mediante las API para consultar los datos más recientes, normalmente entre 5 y 10 minutos de antigüedad.
// log count per day for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| summarize count() by format_datetime(TimeGenerated, 'yyyy-MM-dd')
// average query duration by day for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| where OperationName == 'QueryEnd'
| summarize avg(DurationMs) by format_datetime(TimeGenerated, 'yyyy-MM-dd')
//query duration percentiles for a single day in 1 hour bins
PowerBIDatasetsWorkspace
| where TimeGenerated >= todatetime('2021-04-28') and TimeGenerated <= todatetime('2021-04-29')
| where OperationName == 'QueryEnd'
| summarize percentiles(DurationMs, 0.5, 0.9) by bin(TimeGenerated, 1h)
// refresh durations by workspace and semantic model for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| where OperationName == 'CommandEnd'
| where ExecutingUser contains 'Power BI Service'
| where EventText contains 'refresh'
| project PowerBIWorkspaceName, DatasetName = ArtifactName, DurationMs
// query count, distinctUsers, avgCPU, avgDuration by workspace for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| where OperationName == "QueryEnd"
| summarize QueryCount=count()
, Users = dcount(ExecutingUser)
, AvgCPU = avg(CpuTimeMs)
, AvgDuration = avg(DurationMs)
by PowerBIWorkspaceId
Plantilla de informe de Power BI de ejemplo
Explore y obtenga información sobre los datos de Power BI de Azure Log Analytics mediante una plantilla de informe de Power BI de código abierto en GitHub.
Contenido relacionado
Los artículos siguientes pueden ayudarle a obtener más información sobre Power BI y su integración con Azure Log Analytics.