Consultar dados em workspaces do Log Analytics, aplicativos e recursos no Azure Monitor

Há duas maneiras de consultar dados de vários workspaces, aplicativos e recursos:

  • Especificando explicitamente as informações do workspace, do aplicativo ou do recurso usando as expressões workspace(), app() ou resource(), conforme descrito neste artigo.
  • Usando implicitamente consultas de contexto de recurso. Quando você fizer a consulta no contexto de um recurso específico, de um grupo de recursos ou de uma assinatura, a consulta vai recuperar os dados relevantes de todos os workspaces que contêm dados para esses recursos. As consultas de contexto de recurso não recuperam dados de recursos clássicos do Application Insights.

Este artigo explica como usar as expressões workspace(), app() e resource() para consultar dados de vários workspaces do Log Analytics, aplicativos e recursos.

Se você gerenciar assinaturas em outros locatários do Microsoft Entra por meio do Azure Lighthouse, você poderá incluir workspaces do Log Analytics criados nesses locatários do cliente em suas consultas.

Importante

Se você estiver usando um recurso do Application Insights baseado em workspace, a telemetria é armazenada no workspace do Log Analytics com todos os outros dados do log. Use a expressão workspace() para consultar dados de aplicativos em vários workspaces. Você não precisa de uma consulta entre workspaces para consultar dados de vários aplicativos no mesmo workspace.

Permissões necessárias

  • Você deve ter permissões Microsoft.OperationalInsights/workspaces/query/*/read para os workspaces do Log Analytics que você consulta, conforme fornecido pela função interna Leitor do Log Analytics, por exemplo.
  • Para salvar uma consulta, você precisa ter permissões microsoft.operationalinsights/querypacks/queries/action no pacote de consultas em que deseja salvar a consulta, conforme fornecido pela função interna Colaborador do Log Analytics, por exemplo.

Limitações

  • As consultas entre recursos e serviços não dão suporte a funções parametrizadas e a funções cuja definição inclui outras expressões entre workspaces ou entre serviços, incluindo adx(), arg(), resource(), workspace() e app().
  • Você pode incluir até 100 workspaces do Log Analytics ou recursos clássicos do Application Insights em uma só consulta.
  • A consulta em um grande número de recursos pode reduzir substancialmente a consulta.
  • Só há suporte para consultas entre recursos nos alertas de pesquisa de logs na API scheduledQueryRules atual. Se você estiver usando a API Alertas do Log Analytics herdada, será necessário mudar para a API atual.
  • As referências a recursos cruzados, como outro workspace, devem ser explícitas e não podem ser parametrizadas.

Consulta em workspaces, aplicativos e recursos usando funções

Esta seção explica como consultar workspaces, aplicativos e recursos usando funções com e sem o uso de uma função.

Consultar sem usar uma função

Você pode consultar vários recursos de qualquer uma das suas instâncias de recursos. Esses recursos podem ser workspaces e aplicativos combinados.

Exemplo de consulta em dois workspaces:

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 obter mais informações sobre a união, onde e resumir operadores, consulte o operador union, operador wheree operador summarize.

Consultar usando uma função

Ao usar consultas entre recursos para correlacionar dados de vários workspaces do Log Analytics e componentes do Application Insights, a consulta pode se tornar complexa e difícil de manter. 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. Esse método simplifica a estrutura de consulta. O exemplo a seguir demonstra como você pode monitorar vários componentes do Application Insights e visualizar o número de solicitações com falha pelo nome do aplicativo.

Crie uma consulta como a seguinte que referencia o escopo dos componentes do Application Insights. O comando withsource= SourceApp adiciona uma coluna que designa o nome do aplicativo que enviou o log. Salve essa consulta como função com o 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

Agora você pode usar essa função em uma consulta entre recursos, como no exemplo a seguir. O alias de função applicationsScoping retorna a união da tabela de solicitações de todos os aplicativos definidos. A consulta então filtra solicitações com falha e visualiza as tendências por aplicativo. O operador parse é opcional neste exemplo. Ele extrai o nome do aplicativo da propriedade SourceApp.

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

Observação

Esse método não pode ser usado com alertas de pesquisa de logs, porque a validação de acesso dos recursos de regra de alerta, incluindo workspaces e aplicativos, é feita no momento da criação do alerta. Não é possível adicionar novos recursos à função depois da criação do alerta. Se preferir usar uma função para a definição de escopo de recursos em alertas de pesquisa de logs, edite a regra de alerta no portal ou com um modelo do Azure Resource Manager para atualizar os recursos com escopo. Como alternativa, você pode incluir a lista de recursos na consulta de alerta de pesquisa de logs.

Consulta em workspaces do Log Analytics usando workspace()

Use a expressão workspace() para recuperar dados de um workspace específico no mesmo grupo de recursos, em outro grupo de recursos ou em outra assinatura. Você pode usar essa expressão para incluir dados de log em consultas do Application Insights e para consultar dados em vários workspaces em uma consulta de log.

Sintaxe

workspace(Identificador)

Argumentos

*Identifier*: identifica o workspace usando um dos formatos da tabela a seguir.

Identificador Descrição Exemplo
ID GUID do workspace workspace("00000000-0000-0000-0000-000000000000")
ID do recurso do Azure Identificador do recurso do Azure workspace("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail")

Exemplos

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 em aplicativos clássicos do Application Insights usando app()

Use a expressão app para recuperar dados de um recurso específico do Application Insights no mesmo grupo de recursos, em outro grupo de recursos ou em outra assinatura. Se você estiver usando um recurso do Application Insights baseado em workspace, a telemetria é armazenada no workspace do Log Analytics com todos os outros dados do log. Use a expressão workspace() para consultar dados de aplicativos em vários workspaces. Você não precisa de uma consulta entre workspaces para consultar dados de vários aplicativos no mesmo workspace.

Sintaxe

app(Identificador)

Argumentos

*Identifier*: identifica o aplicativo usando um dos formatos da tabela abaixo.

Identificador Descrição Exemplo
ID GUID do aplicativo app("00000000-0000-0000-0000-000000000000")
ID do recurso do Azure Identificador do recurso do Azure app("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp")

Exemplos

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"))

Correlacionar dados entre recursos usando resource()

A expressão resource é usada em uma consulta do Azure Monitor com escopo para um recurso para recuperar dados de outros recursos.

Sintaxe

resource(Identificador)

Argumentos

*Identifier*: identifica o recurso, a assinatura ou o grupo de recursos do qual os dados serão correlacionados.

Identificador Descrição Exemplo
Recurso Inclui dados para o recurso. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm")
Grupo de recursos ou assinatura Inclui dados para o recurso e todos os recursos que ele contém. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup)

Exemplos

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

Próximas etapas

Consulte Analisar dados de log no Azure Monitorpara obter uma visão geral das consultas de log e de como os dados de log do Azure Monitor estão estruturados.