Consultar dados em espaços de trabalho, aplicativos e recursos do Log Analytics no Azure Monitor

Há duas maneiras de consultar dados de vários espaços de trabalho, aplicativos e recursos:

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

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

Se você gerenciar assinaturas em outros locatários do Microsoft Entra por meio do Azure Lighthouse, poderá incluir espaços de trabalho do Log Analytics criados nesses locatários de clientes em suas consultas.

Importante

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

Permissões necessárias

  • Você deve ter Microsoft.OperationalInsights/workspaces/query/*/read permissões para os espaços de trabalho do Log Analytics consultados, conforme fornecido pela função interna do Log Analytics Reader, por exemplo.
  • Para salvar uma consulta, você deve ter microsoft.operationalinsights/querypacks/queries/action permissões para o pacote de consultas onde deseja salvá-la, conforme fornecido pela função interna Colaborador do Log Analytics, por exemplo.

Limitações

  • As consultas entre recursos e entre serviços não suportam funções parametrizadas e funções cuja definição inclui outras expressões entre espaços de trabalho ou entre serviços, incluindo adx(), arg(), , resource()workspace()e app().
  • Você pode incluir até 100 espaços de trabalho do Log Analytics ou recursos clássicos do Application Insights em uma única consulta.
  • Consultar um grande número de recursos pode tornar a consulta substancialmente mais lenta.
  • As consultas entre recursos em alertas de pesquisa de log só são suportadas na API scheduledQueryRules atual. Se estiver a utilizar a API de Alertas do Log Analytics herdada, terá de mudar para a API atual.
  • As referências a um recurso cruzado, como outro espaço de trabalho, devem ser explícitas e não podem ser parametrizadas.

Consulta entre espaços de trabalho, aplicativos e recursos usando funções

Esta seção explica como consultar espaços de trabalho, 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 de suas instâncias de recurso. Esses recursos podem ser espaços de trabalho e aplicativos combinados.

Exemplo de uma consulta em três espaços de trabalho:

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 o sindicato, onde, e resumir operadores, consulte operador união, onde operador, e resumir operador.

Consultar usando uma função

Quando você usa consultas entre recursos para correlacionar dados de vários espaços de trabalho do Log Analytics e componentes do Application Insights, a consulta pode se tornar complexa e difícil de manter. Você deve usar funções nas consultas de log do Azure Monitor para separar a lógica de consulta do escopo dos recursos de consulta. Esse método simplifica a estrutura da consulta. O exemplo a seguir demonstra como você pode monitorar vários componentes do Application Insights e visualizar a contagem de solicitações com falha por nome do aplicativo.

Crie uma consulta como o exemplo a seguir que faz referência ao escopo dos componentes do Application Insights. O withsource= SourceApp comando adiciona uma coluna que designa o nome do aplicativo que enviou o log. Salve a consulta como uma 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 o exemplo a seguir. O alias de função retorna a união da tabela de solicitações de todos os aplicativos definidos applicationsScoping . Em seguida, a consulta filtra solicitações com falha e visualiza as tendências por aplicativo. O parse operador é opcional neste exemplo. Ele extrai o nome do aplicativo da SourceApp propriedade.

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

Nota

Esse método não pode ser usado com alertas de pesquisa de log porque a validação de acesso dos recursos da regra de alerta, incluindo espaços de trabalho e aplicativos, é executada no momento da criação do alerta. Não há suporte para a adição de novos recursos à função após a criação do alerta. Se preferir usar uma função para o escopo de recursos em alertas de pesquisa de log, 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 log.

Consultar espaços de trabalho do Log Analytics usando workspace()

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

Sintaxe

workspace(Identificador)

Argumentos

*Identifier*: Identifica o espaço de trabalho usando um dos formatos na tabela a seguir.

Identificador Description Exemplo
ID GUID do espaço de trabalho espaço de trabalho("00000000-0000-0000-0000-0000000000000")
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 app expressão para recuperar dados de um recurso clássico específico do Application Insights no mesmo grupo de recursos, outro grupo de recursos ou outra assinatura. Se você estiver usando um recurso do Application Insights baseado em espaço de trabalho, a telemetria será armazenada em um espaço de trabalho do Log Analytics com todos os outros dados de log. Use a workspace() expressão para consultar dados de aplicativos em vários espaços de trabalho. Você não precisa de uma consulta entre espaços de trabalho para consultar dados de vários aplicativos no mesmo espaço de trabalho.

Sintaxe

app(Identificador)

Argumentos

*Identifier*: Identifica o aplicativo usando um dos formatos na tabela abaixo.

Identificador Description Exemplo
ID GUID do aplicativo aplicativo("00000000-0000-0000-0000-0000000000000")
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"))

Correlacione dados entre recursos usando resource()

A resource expressão é 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, grupo de recursos ou assinatura a partir do qual correlacionar dados.

Identificador Description Exemplo
Recurso Inclui dados para o recurso. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm")
Grupo de Recursos ou Subscrição Inclui dados para o recurso e todos os recursos que ele contém. resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxx/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óximos passos

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