Compartir vía


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:

  • Explícito : dirija el área de trabajo, la aplicación o el recurso mediante las expresiones workspace(),app()o resource(), tal como se describe en este artículo.
  • Implícito: use 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 explícitas workspace(), app()y resource() para consultar datos de varias áreas de trabajo, aplicaciones y recursos de Log Analytics.

Al administrar suscripciones en otros inquilinos de Microsoft Entra con Azure Lighthouse, las áreas de trabajo de Log Analytics creadas en esos inquilinos de cliente están disponibles para su uso en las consultas entre áreas de trabajo.

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

Acción Permisos necesarios
Comprobación del estado del área de trabajo Permisos de Microsoft.OperationalInsights/workspaces/query/*/read para las áreas de trabajo de Log Analytics que consulte, como los que proporciona el Rol integrado de lector de Log Analytics, por ejemplo.
Almacenamiento de una consulta Permiso microsoft.operationalinsights/querypacks/queries/action 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.

Consideraciones

  • Las consultas entre recursos y entre servicios no admiten funciones y funciones parametrizadas 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.

Uso de funciones para simplificar las consultas

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

Consulta sin usar una función

Siempre puede usar expresiones explícitas directamente para consultar varios 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 obtener más información, vea Operador de unión, operador where y operador de resumen.

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. Debería utilizar las funciones en las consultas de registro de Azure Monitor para separar la lógica de consulta del alcance de los recursos consultados. 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 alerta, incluidas las áreas de trabajo y las aplicaciones, se realiza en el momento de la creación de la alerta. 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: los formatos de identificador explícitos de la tabla siguiente son la mejor manera de consultar áreas de trabajo, ya que son las más eficaces.

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

No se recomiendan otros identificadores de área de trabajo que solo usen el nombre del área de trabajo o el nombre del recurso del área de trabajo, ya que producen un rendimiento reducido y posibles errores al consultar entre áreas de trabajo.

Ejemplos

workspace("00000000-0000-0000-0000-000000000000").Update | count
workspace("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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: los formatos de identificador explícitos de la tabla siguiente son la mejor manera de consultar aplicaciones, ya que son las más eficaces.

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

Ejemplos

app("00000000-0000-0000-0000-000000000000").requests | count
app("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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
Recurso 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

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.