Executar consultas entre logs de recursos no Azure MonitorPerform cross-resource log queries in Azure Monitor

Anteriormente, com o Azure Monitor, você só podia analisar dados no workspace atual, e isso limitava sua capacidade de consultar vários workspaces definidos em sua assinatura.Previously with Azure Monitor, you could only analyze data from within the current workspace, and it limited your ability to query across multiple workspaces defined in your subscription. Além disso, você pode pesquisar somente itens de telemetria coletados do seu aplicativo baseado na web com o Application Insights diretamente no Application Insights ou do Visual Studio.Additionally, you could only search telemetry items collected from your web-based application with Application Insights directly in Application Insights or from Visual Studio. Isso também tornou um desafio para analisar nativamente dados de aplicativo e operacionais juntos.This also made it a challenge to natively analyze operational and application data together.

Agora você pode consultar não apenas em vários workspaces de Application Insights, mas também os dados de um aplicativo Application Insights específico no mesmo grupo de recursos, outro grupo de recursos ou outra assinatura.Now you can query not only across multiple Log Analytics workspaces, but also data from a specific Application Insights app in the same resource group, another resource group, or another subscription. Isso fornece uma exibição de seus dados de todo o sistema.This provides you with a system-wide view of your data. Esses tipos de consultas só podem ser realizados no Log Analytics.You can only perform these types of queries in Log Analytics.

Limites de consulta entre recursosCross-resource query limits

  • O número de recursos de Application Insights e espaços de trabalho de Log Analytics que você pode incluir em uma única consulta é limitado a 100.The number of Application Insights resources and Log Analytics workspaces that you can include in a single query is limited to 100.
  • Não há suporte para a consulta entre recursos no designer de exibição.Cross-resource query is not supported in View Designer. Você pode criar uma consulta em Log Analytics e fixá-la no painel do Azure para Visualizar uma consulta de log.You can Author a query in Log Analytics and pin it to Azure dashboard to visualize a log query.
  • Há suporte para a consulta entre recursos em alertas de log na nova API do scheduledQueryRules.Cross-resource query in log alerts is supported in the new scheduledQueryRules API. Por padrão, o Azure Monitor usa a API herdada de alertas do Log Analytics para a criação de novas regras de alertas de log do portal do Azure, mas você pode mudar para a API herdada de alertas de log.By default, Azure Monitor uses the legacy Log Analytics Alert API for creating new log alert rules from Azure portal, unless you switch from legacy Log Alerts API. Após a mudança, a nova API torna-se o padrão para novas regras de alerta no portal do Azure e permite criar regras de alertas de log de consulta de recursos cruzados.After the switch, the new API becomes the default for new alert rules in Azure portal and it lets you create cross-resource query log alerts rules. Você pode criar regras de alerta do log de consultas entre recursos sem fazer a alternância usando o modelo Azure Resource Manager para a API scheduledQueryRules – mas essa regra de alerta é gerenciável, embora a API scheduledQueryRules e não de portal do Azure .You can create cross-resource query log alert rules without making the switch by using the Azure Resource Manager template for scheduledQueryRules API – but this alert rule is manageable though scheduledQueryRules API and not from Azure portal.

Consultar em workspaces do Log Analytics e do Application InsightsQuerying across Log Analytics workspaces and from Application Insights

Para fazer referência a outro workspace em sua consulta, use o identificador workspace e, para um aplicativo do Application Insights, use o identificador aplicativo.To reference another workspace in your query, use the workspace identifier, and for an app from Application Insights, use the app identifier.

Identificar recursos do workspaceIdentifying workspace resources

Os exemplos a seguir demonstram consultas em workspaces do Log Analytics para retornar contagens resumidas de logs da tabela de Atualização em um workspace chamado 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.

A identificação de um workspace pode ser realizada de várias maneiras:Identifying a workspace can be accomplished one of several ways:

  • Nome de recurso – é um nome legível do workspace, também conhecido como nome do componente.Resource name - is a human-readable name of the workspace, sometimes referred to as component name.

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

  • Nome qualificado – é o "nome completo" do workspace, composto pelo nome da assinatura, pelo grupo de recursos e pelo nome do componente neste formato: subscriptionName/resourceGroup/componentName.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

    Observação

    Como os nomes de assinatura do Azure não são exclusivos, esse identificador pode ser ambíguo.Because Azure subscription names are not unique, this identifier might be ambiguous.

  • ID do workspace – uma ID do workspace é o identificador exclusivo e imutável atribuído a cada workspace representado como um identificador global exclusivo (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

  • ID de recurso do Azure – a identidade exclusiva definida pelo Azure do workspace.Azure Resource ID – the Azure-defined unique identity of the workspace. Use a ID do Recurso quando o nome do recurso for ambíguo.You use the Resource ID when the resource name is ambiguous. Para workspaces, o formato é: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/workspacess/componentName.For workspaces, the format is: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/workspaces/componentName.

    Por exemplo:For example:

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

Identificar um aplicativoIdentifying an application

Os exemplos a seguir retornam uma contagem resumida de solicitações feitas em relação a um aplicativo chamado fabrikamapp no Application Insights.The following examples return a summarized count of requests made against an app named fabrikamapp in Application Insights.

A identificação de um aplicativo no Application Insights pode ser realizada com a expressão app(Identifier) .Identifying an application in Application Insights can be accomplished with the app(Identifier) expression. O argumento Identificador especifica o aplicativo usando um dos seguintes:The Identifier argument specifies the app using one of the following:

  • Nome de recurso – é um nome legível do aplicativo, também conhecido como o nome do componente.Resource name - is a human readable name of the app, sometimes referred to as the component name.

    app("fabrikamapp")

    Observação

    A identificação de um aplicativo por nome pressupõe exclusividade em todas as assinaturas acessíveis.Identifying an application by name assumes uniqueness across all accessible subscriptions. Se você tiver vários aplicativos com o nome especificado, a consulta falhará devido à ambiguidade.If you have multiple applications with the specified name, the query fails because of the ambiguity. Nesse caso, você deve usar um dos outros identificadores.In this case, you must use one of the other identifiers.

  • Nome qualificado – é o "nome completo" do aplicativo, composto pelo nome da assinatura, pelo grupo de recursos e pelo nome do componente neste formato: subscriptionName/resourceGroup/componentName.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

    Observação

    Como os nomes de assinatura do Azure não são exclusivos, esse identificador pode ser ambíguo.Because Azure subscription names are not unique, this identifier might be ambiguous.

  • ID – o GUID de aplicativo do aplicativo.ID - the app GUID of the application.

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

  • ID de recurso do Azure – a identidade exclusiva definida pelo Azure do aplicativo.Azure Resource ID - the Azure-defined unique identity of the app. Use a ID do Recurso quando o nome do recurso for ambíguo.You use the Resource ID when the resource name is ambiguous. O formato é: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/components/componentName.The format is: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/components/componentName.

    Por exemplo:For example:

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

Executar uma consulta em vários recursosPerforming a query across multiple resources

Você pode consultar vários recursos de qualquer uma das suas instâncias de recursos, que podem ser workspaces e aplicativos combinados.You can query multiple resources from any of your resource instances, these can be workspaces and apps combined.

Exemplo de consulta em dois workspaces: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

Usando consulta entre recursos para vários recursosUsing cross-resource query for multiple resources

Ao usar consultas entre recursos para correlacionar dados de vários workspaces do Log Analytics e recursos do Application Insights, a consulta pode se tornar complexa e difícil de manter.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. Você deve aproveitar as funções nas consultas de log do Azure Monitor para separar a lógica de consulta do escopo dos recursos da consulta, o que simplifica a estrutura da 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. O exemplo a seguir demonstra como você pode monitorar vários recursos do Application Insights e visualizar a contagem de solicitações com falha pelo nome do aplicativo.The following example demonstrates how you can monitor multiple Application Insights resources and visualize the count of failed requests by application name.

Crie uma consulta como a seguinte que referencia o escopo dos recursos do Application Insights.Create a query like the following that references the scope of Application Insights resources. O comando withsource= SourceApp adiciona uma coluna que designa o nome do aplicativo que enviou o log.The withsource= SourceApp command adds a column that designates the application name that sent the log. Salve a consulta como função com o 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

Agora você pode usar essa função em uma consulta entre recursos, como a seguir.You can now use this function in a cross-resource query like the following. O alias de função applicationsScoping retorna a união da tabela de solicitações de todos os aplicativos definidos.The function alias applicationsScoping returns the union of the requests table from all the defined applications. A consulta então filtra solicitações com falha e visualiza as tendências por aplicativo.The query then filters for failed requests and visualizes the trends by application. O operador parse é opcional neste exemplo.The parse operator is optional in this example. Ele extrai o nome do aplicativo do SourceApp propriedade.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

Observação

Esse método não pode ser usado com alertas de log porque a validação de acesso dos recursos de regra de alerta, incluindo espaços de trabalho e aplicativos, é executada no momento da criação do 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. Não há suporte para a adição de novos recursos à função após a criação do alerta.Adding new resources to the function after the alert creation isn’t supported. Se preferir usar a função para o escopo de recursos em alertas de log, você precisará editar a regra de alerta no portal ou com um modelo do Resource Manager para atualizar os recursos com escopo.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. Como alternativa, você pode incluir a lista de recursos na consulta de alerta de log.Alternatively, you can include the list of resources in the log alert query.

Gráfico de tempo

Próximas etapasNext steps