Realización de consultas de registro en Azure Monitor que abarcan entre áreas de trabajo y aplicacionesPerform log query in Azure Monitor that span across workspaces and apps

Los registros de Azure Monitor admiten consultas en varias áreas de trabajo de Log Analytics y la aplicación Application Insights en el mismo grupo de recursos, otro grupo de recursos u otra suscripción.Azure Monitor Logs support query across multiple Log Analytics workspaces and Application Insights app in the same resource group, another resource group, or another subscription. Gracias a esto se consigue una vista total del sistema de datos.This provides you with a system-wide view of your data.

Hay dos métodos para consultar datos almacenados en varias áreas de trabajo y aplicaciones:There are two methods to query data that is stored in multiple workspace and apps:

  1. Explícitamente especificando los detalles del área de trabajo y la aplicación.Explicitly by specifying the workspace and app details. Esta técnica se detalla en este artículo.This technique is detailed in this article.
  2. Usar implícitamente consultas de contexto de recursos.Implicitly using resource-context queries. Al consultar en el contexto de un recurso específico, un grupo de recursos o una suscripción, los datos pertinentes se capturarán de todas las áreas de trabajo que contengan datos de estos recursos.When you query in the context of a specific resource, resource group or a subscription, the relevant data will be fetched from all workspaces that contains data for these resources. Los datos de Application Insights que se almacenan en aplicaciones no se capturarán.Application Insights data that is stored in apps, will not be fetched.

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.If you are using a workspace-based Application Insights resource telemetry is stored in a Log Analytics workspace with all other log data. Use la expresión log() para escribir una consulta que incluya la aplicación en varias áreas de trabajo.Use the log() expression to write a query that includes application in multiple workspaces. Si tiene varias aplicaciones en la misma área de trabajo, no se necesita realizar una consulta entre áreas de trabajo.For multiple applications in the same workspace, you don't need a cross workspace query.

Límites de la consulta entre recursosCross-resource query limits

  • El número de recursos de Application Insights y de áreas de trabajo de Log Analytics que se pueden incluir en una sola consulta se limita a 100.The number of Application Insights resources and Log Analytics workspaces that you can include in a single query is limited to 100.
  • No se admite la consulta entre recursos en el Diseñador de vistas.Cross-resource query is not supported in View Designer. Puede crear una consulta en Log Analytics y anclarla al panel de Azure para visualizar una consulta de registro.You can Author a query in Log Analytics and pin it to Azure dashboard to visualize a log query.
  • Las consulta entre recursos en las alertas de registro solo se admiten en la API scheduledQueryRules actual.Cross-resource queries in log alerts are only supported in the current scheduledQueryRules API. Si usa la API de alertas de Log Analytics heredada, deberá cambiar a la API actual.If you're using the legacy Log Analytics Alerts API, you'll need to switch to the current API.

Consultas a través de áreas de trabajo de Log Analytics y desde Application InsightsQuerying across Log Analytics workspaces and from Application Insights

Para hacer referencia a otra área de trabajo en la consulta, use el identificador del área de trabajo, y, para una aplicación de Application Insights, use el identificador de la aplicación.To reference another workspace in your query, use the workspace identifier, and for an app from Application Insights, use the app identifier.

Identificación de los recursos del área de trabajoIdentifying workspace resources

En los ejemplos siguientes se muestran consultas en las áreas de trabajo de Log Analytics que devuelven recuentos de registros resumidos desde la tabla Update en un área de trabajo denominada contosoretail-it.The following examples demonstrate queries across Log Analytics workspaces to return summarized counts of logs from the Update table on a workspace named contosoretail-it.

La identificación de un área de trabajo se puede lograr de varias maneras:Identifying a workspace can be accomplished one of several ways:

  • Nombre del recurso:- es un nombre legible del área de trabajo; a veces se denomina nombre del componente.Resource name - is a human-readable name of the workspace, sometimes referred to as component name.

    workspace("contosoretail-it").Update | count

  • Nombre completo: es el nombre completo del área de trabajo, compuesto por el nombre de la suscripción, el grupo de recursos y el nombre del componente con este formato: nombreSuscripción/grupoDeRecursos/nombreDeComponente.Qualified name - is the “full name” of the workspace, composed of the subscription name, resource group, and component name in this format: subscriptionName/resourceGroup/componentName.

    workspace('contoso/contosoretail/contosoretail-it').Update | count

    Nota

    Dado que los nombres de suscripción de Azure no son únicos, este identificador podría ser ambiguo.Because Azure subscription names are not unique, this identifier might be ambiguous.

  • Identificador del área de trabajo: es el identificador único e inmutable asignado a cada área de trabajo que se representa como identificador único global (GUID).Workspace ID - A workspace ID is the unique, immutable, identifier assigned to each workspace represented as a globally unique identifier (GUID).

    workspace("b459b4u5-912x-46d5-9cb1-p43069212nb4").Update | count

  • Identificador de recurso de Azure: identidad única definida por Azure del área de trabajo.Azure Resource ID – the Azure-defined unique identity of the workspace. Se usa cuando el nombre del recurso es ambiguo.You use the Resource ID when the resource name is ambiguous. Para las áreas de trabajo, el formato es: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/workspaces/componentName.For workspaces, the format is: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/workspaces/componentName.

    Por ejemplo:For example:

    workspace("/subscriptions/e427519-5645-8x4e-1v67-3b84b59a1985/resourcegroups/ContosoAzureHQ/providers/Microsoft.OperationalInsights/workspaces/contosoretail-it").Update | count
    

Identificación de una aplicaciónIdentifying an application

Los ejemplos siguientes devuelven un recuento resumido de las solicitudes realizadas en una aplicación denominada fabrikamapp de Application Insights.The following examples return a summarized count of requests made against an app named fabrikamapp in Application Insights.

Una aplicación de Application Insights se puede identificar con la expresión app(Identifier) .Identifying an application in Application Insights can be accomplished with the app(Identifier) expression. El argumento Identifier especifica la aplicación que usa uno de los siguientes:The Identifier argument specifies the app using one of the following:

  • Nombre del recurso: es el nombre legible de la aplicación; a veces se denomina nombre del componente.Resource name - is a human readable name of the app, sometimes referred to as the component name.

    app("fabrikamapp")

    Nota

    En la identificación de una aplicación por nombre se da por supuesto que es único en todas las suscripciones accesibles.Identifying an application by name assumes uniqueness across all accessible subscriptions. Si tiene varias aplicaciones con el nombre especificado, la consulta produce un error debido a la ambigüedad.If you have multiple applications with the specified name, the query fails because of the ambiguity. En este caso debe usar uno de los otros identificadores.In this case, you must use one of the other identifiers.

  • Nombre completo: es el nombre completo de la aplicación, compuesto por el nombre de la suscripción, el grupo de recursos y el nombre del componente con este formato: nombreSuscripción/grupoDeRecursos/nombreDeComponente.Qualified name - is the “full name” of the app, composed of the subscription name, resource group, and component name in this format: subscriptionName/resourceGroup/componentName.

    app("AI-Prototype/Fabrikam/fabrikamapp").requests | count

    Nota

    Dado que los nombres de suscripción de Azure no son únicos, este identificador podría ser ambiguo.Because Azure subscription names are not unique, this identifier might be ambiguous.

  • ID: el identificador único global de la aplicación.ID - the app GUID of the application.

    app("b459b4f6-912x-46d5-9cb1-b43069212ab4").requests | count

  • Identificador de recurso de Azure: identidad única definida por Azure de la aplicación.Azure Resource ID - the Azure-defined unique identity of the app. Se usa cuando el nombre del recurso es ambiguo.You use the Resource ID when the resource name is ambiguous. El formato es: /subscriptions/IdSuscripción/resourcegroups/grupoDeRecursos/providers/microsoft.OperationalInsights/components/nombreDeComponente.The format is: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/components/componentName.

    Por ejemplo:For example:

    app("/subscriptions/b459b4f6-912x-46d5-9cb1-b43069212ab4/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp").requests | count
    

Realizar una consulta en varios recursosPerforming a query across multiple resources

Puede consultar varios recursos desde cualquiera de las instancias de recursos; estas pueden ser áreas de trabajo y aplicaciones combinadas.You can query multiple resources from any of your resource instances, these can be workspaces and apps combined.

Ejemplo de consulta en dos áreas de trabajo:Example for query across two workspaces:

union Update, workspace("contosoretail-it").Update, workspace("b459b4u5-912x-46d5-9cb1-p43069212nb4").Update
| where TimeGenerated >= ago(1h)
| where UpdateState == "Needed"
| summarize dcount(Computer) by Classification

Uso de una consulta entre recursos para varios recursosUsing cross-resource query for multiple resources

Al usar las consultas entre recursos para correlacionar datos procedentes de varios recursos del área de trabajo de Log Analytics y de Application Insights, la consulta puede ser compleja y difícil de mantener.When using cross-resource queries to correlate data from multiple Log Analytics workspaces and Application Insights resources, the query can become complex and difficult to maintain. Debe aprovechar 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, lo que simplifica la estructura de la consulta.You should leverage functions in Azure Monitor log queries to separate the query logic from the scoping of the query resources, which simplifies the query structure. En el ejemplo siguiente se muestra cómo puede supervisar varios recursos de Application Insights y visualizar el número de solicitudes erróneas por nombre de la aplicación.The following example demonstrates how you can monitor multiple Application Insights resources and visualize the count of failed requests by application name.

Cree una consulta similar a la siguiente que haga referencia al ámbito de recursos de Application Insights.Create a query like the following that references the scope of Application Insights resources. El comando withsource= SourceApp agrega una columna que designa el nombre de la aplicación que envió el registro.The withsource= SourceApp command adds a column that designates the application name that sent the log. Guarde la consulta como función con el alias applicationsScoping.Save the query as function with the alias applicationsScoping.

// crossResource function that scopes my Application Insights resources
union withsource= SourceApp
app('Contoso-app1').requests, 
app('Contoso-app2').requests,
app('Contoso-app3').requests,
app('Contoso-app4').requests,
app('Contoso-app5').requests

Ahora puede usar esta función en una consulta entre recursos similar a la siguiente.You can now use this function in a cross-resource query like the following. El alias de la función applicationsScoping devuelve la unión de la tabla de solicitudes de todas las aplicaciones definidas.The function alias applicationsScoping returns the union of the requests table from all the defined applications. A continuación, la consulta filtra las solicitudes erróneas y visualiza las tendencias por aplicación.The query then filters for failed requests and visualizes the trends by application. El operador parse es opcional en este ejemplo.The parse operator is optional in this example. Extrae el nombre de la aplicación de la propiedad SourceApp.It extracts the application name from SourceApp property.

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

Nota

Este método no se puede usar con alertas de registro porque la validación de acceso de los recursos para las reglas de alertas (incluidas las áreas de trabajo y las aplicaciones) se realiza en el momento de la creación de la alerta.This method can't be used with log alerts because the access validation of the alert rule resources, including workspaces and applications, is performed at alert creation time. No se admite la adición de nuevos recursos a la función después de crear la alerta.Adding new resources to the function after the alert creation isn’t supported. Si prefiere usar la función para el ámbito de los recursos en las alertas de registro, debe editar la regla de alertas en el portal o usar una plantilla de Resource Manager para actualizar los recursos de ámbito.If you prefer to use function for resource scoping in log alerts, you need to edit the alert rule in the portal or with a Resource Manager template to update the scoped resources. También puede incluir la lista de recursos en la consulta de alerta de registro.Alternatively, you can include the list of resources in the log alert query.

Gráfica de tiempo

Pasos siguientesNext steps