Consulta de datos en áreas de trabajo, aplicaciones y recursos de Log Analytics en Azure Monitor

Hay dos maneras de consultar datos de varias áreas de trabajo, aplicaciones y recursos:

  • Especifica explícitamente la información del área de trabajo, la aplicación o los recursos mediante las expresiones workspace(),app()o resource(), tal como se describe en este artículo.
  • Implícitamente, al usar las consultas de contexto de recursos. Al consultar en el contexto de un recurso específico, un grupo de recursos o una suscripción, la consulta recupera los datos pertinentes de todas las áreas de trabajo que contienen datos de estos recursos. Las consultas de contexto de recursos no recuperan datos de recursos clásicos de Application Insights.

En este artículo se explica cómo usar las expresiones de workspace(), app()y resource() para consultar datos de varias áreas de trabajo, aplicaciones y recursos de Log Analytics.

Si administra suscripciones en otros inquilinos de Microsoft Entra mediante Azure Lighthouse, puede incluir las áreas de trabajo de Log Analytics creadas en esos inquilinos de cliente en las consultas.

Importante

Si usa un recurso de Application Insights basado en el área de trabajo, la telemetría se almacena en un área de trabajo de Log Analytics con todos los demás datos del registro. Use la expresión workspace() para consultar datos de aplicaciones en varias áreas de trabajo. No necesita una consulta entre áreas de trabajo para consultar datos de varias aplicaciones en la misma área de trabajo.

Permisos necesarios

  • Debe tener los permisos de Microsoft.OperationalInsights/workspaces/query/*/read para las áreas de trabajo de Log Analytics que consulte, tal y como los proporciona el Rol integrado de lector de Log Analytics, por ejemplo.
  • Para guardar una consulta, debe tener microsoft.operationalinsights/querypacks/queries/action permisos en el paquete de consultas en el que desea guardar la consulta, tal como lo proporciona el rol integrado colaborador de Log Analytics, por ejemplo.

Limitaciones

  • Las consultas entre recursos y entre servicios no admiten funciones y funciones con parámetros cuya definición incluye otras expresiones entre áreas de trabajo o entre servicios, incluidas adx(), arg(), resource(), workspace()y app().
  • Puede incluir hasta 100 áreas de trabajo de Log Analytics o recursos clásicos de Application Insights en una sola consulta.
  • Las consultas en un gran número de recursos pueden ralentizar considerablemente la consulta.
  • Las consultas entre recursos en las alertas de búsqueda de registros solo se admiten en laAPI scheduledQueryRules actual. Si usa la API de alertas de Log Analytics heredada, deberá cambiar a la API actual.
  • Las referencias a un recurso cruzado, como otra área de trabajo, deben ser explícitas y no se pueden parametrizar.

Consulta entre áreas de trabajo, aplicaciones y recursos mediante funciones

En esta sección se explica cómo consultar áreas de trabajo, aplicaciones y recursos mediante funciones con y sin usar una función.

Consulta sin usar una función

Puede consultar varios recursos desde cualquiera de las instancias de recursos. Estos recursos pueden ser áreas de trabajo y aplicaciones combinadas.

Ejemplo de una consulta en tres áreas de trabajo:

union 
  Update, 
  workspace("00000000-0000-0000-0000-000000000001").Update, 
  workspace("00000000-0000-0000-0000-000000000002").Update
| where TimeGenerated >= ago(1h)
| where UpdateState == "Needed"
| summarize dcount(Computer) by Classification

Para más información sobre los operadores union, where y summarize, consulte operador union, operador where y operador summarize.

Consulta mediante una función

Al usar las consultas entre recursos para correlacionar datos procedentes de varias áreas de trabajo de Log Analytics y varios componentes de Application Insights, la consulta puede ser compleja y difícil de mantener. Debe usar las funciones de las consultas de registro de Azure Monitor para separar la lógica de consulta del ámbito de los recursos de la consulta. Este método simplifica la estructura de la consulta. En el ejemplo siguiente se muestra cómo puede supervisar varios componentes de Application Insights y visualizar el número de solicitudes erróneas por nombre de la aplicación.

Cree una consulta, como en el ejemplo siguiente, que haga referencia al ámbito de los componentes de Application Insights. El comando withsource= SourceApp agrega una columna que designa el nombre de la aplicación que envió el registro. Guarde la consulta como función con el alias applicationsScoping.

// crossResource function that scopes my Application Insights components
union withsource= SourceApp
app('00000000-0000-0000-0000-000000000000').requests, 
app('00000000-0000-0000-0000-000000000001').requests,
app('00000000-0000-0000-0000-000000000002').requests,
app('00000000-0000-0000-0000-000000000003').requests,
app('00000000-0000-0000-0000-000000000004').requests

Ahora puede usar esta función en una consulta entre recursos como en el ejemplo siguiente. El alias de la función applicationsScoping devuelve la unión de la tabla de solicitudes de todas las aplicaciones definidas. A continuación, la consulta filtra las solicitudes erróneas y visualiza las tendencias por aplicación. El operador parse es opcional en este ejemplo. Extrae el nombre de aplicación de la propiedad SourceApp.

applicationsScoping 
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationId ')' * 
| summarize count() by applicationId, bin(timestamp, 1h) 
| render timechart

Nota:

Este método no se puede usar con alertas de búsqueda de registros porque la validación de acceso de los recursos de la regla de alertas, incluidas las áreas de trabajo y las aplicaciones, se realiza en tiempo de creación de alertas. No se admite la adición de nuevos recursos a la función después de crear la alerta. Si prefiere usar una función para el ámbito de recursos en las alertas de búsqueda de registros, debe editar la regla de alertas en el portal o con una plantilla de Azure Resource Manager para actualizar los recursos con ámbito. Como alternativa, puede incluir la lista de recursos en la consulta de alertas de búsqueda de registros.

Consulta entre áreas de trabajo de Log Analytics mediante workspace()

Use la expresión workspace() para recuperar datos de un área de trabajo específica del mismo grupo de recursos, otro grupo de recursos u otra suscripción. Puede usarla para incluir los datos de registro en una consulta de Application Insights y para consultar datos a través de varias áreas de trabajo en una consulta de registro.

Sintaxis

workspace(Identificador)

Argumentos

*Identifier*: Identifica el área de trabajo mediante uno de los formatos de la tabla siguiente.

Identificador Descripción Ejemplo
ID GUID del área de trabajo workspace("00000000-0000-0000-0000-000000000000")
Id. de recurso de Azure Identificador del recurso de Azure workspace("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail")

Ejemplos

workspace("00000000-0000-0000-0000-000000000000").Update | count
workspace("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail").Event | count
union 
( workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myRoleInstance")
| count  
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests) | where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))

Consulta entre aplicaciones clásicas de Application Insights mediante app()

Use la expresión app para recuperar datos de un recurso de Application Insights clásico específico en el mismo grupo de recursos, otro grupo de recursos u otra suscripción. Si usa un recurso de Application Insights basado en el área de trabajo, la telemetría se almacena en un área de trabajo de Log Analytics con todos los demás datos del registro. Use la expresión workspace() para consultar datos de aplicaciones en varias áreas de trabajo. No necesita una consulta entre áreas de trabajo para consultar datos de varias aplicaciones en la misma área de trabajo.

Sintaxis

app(Identificador)

Argumentos

*Identifier*: Identifica la aplicación con uno de los formatos de la tabla siguiente.

Identificador Descripción Ejemplo
id GUID de la aplicación app("00000000-0000-0000-0000-000000000000")
Id. de recurso de Azure Identificador del recurso de Azure app("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp")

Ejemplos

app("00000000-0000-0000-0000-000000000000").requests | count
app("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp").requests | count
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myColumnInstance")
| count  
union 
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests)
| where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))

Correlación de datos entre recursos mediante resource()

La expresión resource se usa en consulta de Azure Monitor con ámbito en un recurso para recuperar datos de otros recursos.

Sintaxis

resource(Identificador)

Argumentos

*Identifier*: Identifica el recurso, el grupo de recursos o la suscripción de los que se van a correlacionar los datos.

Identificador Descripción Ejemplo
Resource Incluye datos del recurso. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm")
Grupo de recursos o suscripción Incluye datos del recurso y todos los recursos que contiene. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup)

Ejemplos

union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm").Heartbeat) | summarize count() by _ResourceId, TenantId
union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup).Heartbeat) | summarize count() by _ResourceId, TenantId

Pasos siguientes

Consulte Análisis de datos de registro en Azure Monitor para obtener información general de las consultas de registros y cómo se estructuran los datos del registro de Azure Monitor.