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.

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').

Ao usar o join operador em vez da união, você terá de usar um hint para combinar os dados no cluster do Azure Data Explorer com o workspace do Log Analytics. Use Hint.remote={Direction of the Log Analytics Workspace}.

Por exemplo:

AzureDiagnostics
| join hint.remote=left adx("cluster=ClusterURI").AzureDiagnostics on (ColumnName)

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>

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.

Limitações

Limitações gerais da consulta entre serviços

  • As consultas entre 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().
  • As consultas entre serviços dão suporte apenas às funções ".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
  • Os nomes dos bancos de dados diferenciam maiúsculas de minúsculas.
  • Não há suporte para identificar a coluna Carimbo de data/hora no cluster. A API de Consulta do Log Analytics não passará o filtro de tempo.
  • Consultas entre serviços dão suporte apenas à recuperação de dados.
  • Link Privado (pontos de extremidade privados) e restrições de IP não dão suporte a consultas entre serviços.
  • mv-expand é limitado a 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, defina external_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ão adx("").<function-name>.

Limitações da consulta entre serviços do Azure Resource Graph

  • O Microsoft Sentinel não dá suporte a consultas entre serviços no Azure Resource Graph.
  • Ao consultar dados do Azure Resource Graph do Azure Monitor:
    • 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() e varianceif().

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"

Próximas etapas