Correlacionar dados no Azure Data Explorer e no Azure Resource Graph com dados em um workspace do Log Analytics
Você pode correlacionar dados no Azure Data Explorer e no Azure Resource Graph com dados em seu workspace do Log Analytics e recursos do Application Insights para aprimorar sua análise nos Logs do Azure Monitor. O Microsoft Sentinel, que também armazena dados em workspaces do Log Analytics, dá suporte a consultas entre serviços ao Azure Data Explorer, mas não ao Azure Resource Graph. Este artigo explica como executar consultas entre serviços de qualquer serviço que armazene dados em um workspace do Log Analytics.
Execute consultas entre serviços usando qualquer ferramenta de cliente que dê suporte a consultas de KQL (Linguagem de Consulta Kusto), incluindo a interface do usuário da Web do Log Analytics, pastas de trabalho, PowerShell e a API REST.
Permissões exigidas
Para executar uma consulta entre serviços que correlaciona dados no Azure Data Explorer ou no Azure Resource Graph com dados em um workspace do Log Analytics, você precisa:
- Permissões
Microsoft.OperationalInsights/workspaces/query/*/read
para os workspaces do Log Analytics que você consulta, conforme fornecido pela função integrada Leitor do Log Analytics, por exemplo. - Permissões de leitor para os recursos que você consulta no Azure Resource Graph.
- Permissões do visualizador para as tabelas que você consulta no Azure Data Explorer.
Considerações sobre implementação
Considerações gerais entre serviços
Os nomes dos bancos de dados diferenciam maiúsculas de minúsculas.
Use funções não parametrizadas e funções cuja definição não inclua outras expressões entre workspaces ou entre serviços, inclusive
adx()
,arg()
,resource()
,workspace()
eapp()
.Consultas entre serviços dão suporte apenas à recuperação de dados.
As consultas entre serviços dão suporte apenas a comandos ".show". Essa funcionalidade permite que as consultas entre clusters façam referência a uma função tabular do Azure Monitor, Azure Data Explorer ou do Azure Resource Graph diretamente. Há suporte para os seguintes comandos na consulta entre serviços:
.show functions
.show function {FunctionName}
.show database {DatabaseName} schema as json
mv-expand
dá suporte a até 2.000 registros.Os Logs do Azure Monitor não dão suporte à função
external_table()
, que permite consultar tabelas externas no Azure Data Explorer. Para consultar uma tabela externa, definaexternal_table(<external-table-name>)
como uma função sem parâmetros no Azure Data Explorer. Em seguida, você pode chamar a função usando a expressãoadx("").<function-name>
.Ao usar o operador
join
em vez da união, você precisará usar umhint
para combinar os dados no Azure Data Explorer com dados no workspace do Log Analytics. UseHint.remote={direction of the Log Analytics workspace}
.Por exemplo:
AzureDiagnostics | join hint.remote=left adx("cluster=ClusterURI").AzureDiagnostics on (ColumnName)
Não há suporte para identificação da coluna Carimbo de data/hora em um cluster. A API de Consulta do Log Analytics não passa o filtro de tempo.
Os clusters do Data Explorer configurados com restrições de IP ou Link Privado (pontos de extremidade privados) não dão suporte a consultas entre serviços.
Considerações de consulta entre serviços do Azure Resource Graph
- Ao consultar dados do Azure Resource Graph do Azure Monitor:
- O operador
join
permite combinar dados de uma tabela do Azure Resource Graph com uma tabela em seu workspace do Log Analytics. - A consulta retorna apenas os primeiros 1.000 registros.
- O Azure Monitor não retorna erros de consulta do Azure Resource Graph.
- O editor de consultas do Log Analytics marca consultas válidas do Azure Resource Graph como erros de sintaxe.
- Não há suporte para estes operadores:
smv-apply()
,rand()
,arg_max()
,arg_min()
,avg()
,avg_if()
,countif()
,sumif()
,percentile()
,percentiles()
,percentilew()
,percentilesw()
,stdev()
,stdevif()
,stdevp()
,variance()
,variancep()
evarianceif()
.
- O operador
- O Microsoft Sentinel não dá suporte a consultas entre serviços no Azure Resource Graph.
Consultar dados no Azure Data Explorer usando adx()
Insira o identificador de um cluster do Azure Data Explorer em uma consulta dentro do padrão adx
, depois o nome e a tabela do banco de dados.
adx('https://help.kusto.windows.net/Samples').StormEvents
Combinar tabelas de cluster do Azure Data Explorer com um workspace do Log Analytics
Use o comando union
para combinar tabelas de cluster com um workspace do Log Analytics.
Por exemplo:
union customEvents, adx('https://help.kusto.windows.net/Samples').StormEvents
| take 10
let CL1 = adx('https://help.kusto.windows.net/Samples').StormEvents;
union customEvents, CL1 | take 10
Dica
É permitido usar um formato abreviado: ClusterName/InitialCatalog. Por exemplo, adx('help/Samples')
é interpretado como adx('help.kusto.windows.net/Samples')
.
Unir dados de um cluster do Azure Data Explorer em um locatário com um recurso do Azure Monitor em outro locatário
Não há suporte para consultas entre locatários entre os serviços. Você está conectado a um locatário para executar uma consulta que abrange os dois recursos.
Caso o recurso do Azure Data Explorer esteja no Locatário A e o workspace do Log Analytics esteja no Locatário B, use um dos seguintes métodos:
- Use o Azure Data Explorer para adicionar funções para entidades de segurança em locatários diferentes. Insira sua ID de usuário no Locatário B como um usuário autorizado no cluster do Azure Data Explorer. Verifique se a propriedade TrustedExternalTenant do cluster do Azure Data Explorer contém o Locatário B. Depois, execute uma consulta cruzada e completa nesse locatário.
- Use o Lighthouse para projetar o recurso do Azure Monitor no Locatário A.
Conectar-se aos clusters do Azure Data Explorer de diferentes locatários
O Kusto Explorer estabelece uma conexão de modo automático entre você e o locatário ao qual a conta de usuário pertence originalmente. Para acessar os recursos em outros locatários usando a mesma conta de usuário, será necessário especificar o TenantId
de modo explícito na cadeia de conexão:
Data Source=https://ade.applicationinsights.io/subscriptions/SubscriptionId/resourcegroups/ResourceGroupName;Initial Catalog=NetDefaultDB;AAD Federated Security=True;Authority ID=TenantId
Consultar dados no Azure Resource Graph usando arg() (versão prévia)
Insira o padrão arg("")
, seguido pelo nome da tabela Resource Graph do Azure.
Por exemplo:
arg("").<Azure-Resource-Graph-table-name>
Dica
O operador arg()
agora está disponível para busca avançada na plataforma unificada do Microsoft Defender. Esse recurso permite que você consulte somente dados do Microsoft Sentinel. Leia mais em Usar o operador arg() para consultas do Azure Resource Graph.
Aqui estão alguns exemplos de consultas do Azure Log Analytics que usam os novos recursos de consulta entre serviços do Azure Resource Graph:
Filtre uma consulta do Log Analytics com base nos resultados de uma consulta do Azure Resource Graph:
arg("").Resources | where type == "microsoft.compute/virtualmachines" and properties.hardwareProfile.vmSize startswith "Standard_D" | join ( Heartbeat | where TimeGenerated > ago(1d) | distinct Computer ) on $left.name == $right.Computer
Crie uma regra de alerta que se aplique somente a determinados recursos extraídos de uma consulta ARG:
Excluir recursos com base em marcas - por exemplo, não disparar alertas para VMs com uma marca "Test".
arg("").Resources | where tags.environment=~'Test' | project name
Recupere dados de desempenho relacionados à utilização da CPU e filtre os recursos com a marca "prod".
InsightsMetrics | where Name == "UtilizationPercentage" | lookup ( arg("").Resources | where type == 'microsoft.compute/virtualmachines' | project _ResourceId=tolower(id), tags ) on _ResourceId | where tostring(tags.Env) == "Prod"
Mais casos de uso:
- Use uma marca para determinar se as VMs devem ser executadas 24 horas por dia, 7 dias por semana ou devem ser desligadas à noite.
- Mostrar alertas em qualquer servidor que contenha um determinado número de núcleos.
Criar um alerta com base em uma consulta entre serviços no workspace do Log Analytics
Para criar uma regra de alerta com base em uma consulta entre serviços no seu workspace do Log Analytics, siga as etapas em Criar ou editar uma regra de alerta de pesquisa de log, selecionando seu workspace do Log Analytics, na guia Escopo.
Observação
Você também pode executar consultas entre serviços do Azure Data Explorer e do Azure Resource Graph para um workspace do Log Analytics. Para isso, selecione o recurso relevante como o escopo do alerta.
Combinar tabelas do Azure Resource Graph com um workspace do Log Analytics
Use o comando union
para combinar tabelas de cluster com um workspace do Log Analytics.
Por exemplo:
union AzureActivity, arg("").Resources
| take 10
let CL1 = arg("").Resources ;
union AzureActivity, CL1 | take 10
Ao usar o join
operador em vez da união, você precisará usar um hint
para combinar os dados no Azure Resource Graph com dados no workspace do Log Analytics. Use Hint.remote={Direction of the Log Analytics Workspace}
. Por exemplo:
Perf | where ObjectName == "Memory" and (CounterName == "Available MBytes Memory")
| extend _ResourceId = replace_string(replace_string(replace_string(_ResourceId, 'microsoft.compute', 'Microsoft.Compute'), 'virtualmachines','virtualMachines'),"resourcegroups","resourceGroups")
| join hint.remote=left (arg("").Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project _ResourceId=id, tags) on _ResourceId | project-away _ResourceId1 | where tostring(tags.env) == "prod"