Correlacione dados no Azure Data Explorer e no Azure Resource Graph com dados em um espaço de trabalho do Log Analytics

Você pode correlacionar dados no Azure Data Explorer e no Azure Resource Graph com dados em seu espaço de trabalho do Log Analytics e recursos do Application Insights para aprimorar sua análise no Azure Monitor Logs. O Microsoft Sentinel, que também armazena dados em espaços de trabalho do Log Analytics, dá suporte a consultas entre serviços para o Azure Data Explorer, mas não para o Azure Resource Graph. Este artigo explica como executar consultas entre serviços de qualquer serviço que armazene dados em um espaço de trabalho do Log Analytics.

Execute consultas entre serviços usando qualquer ferramenta de cliente que ofereça suporte a consultas KQL (Kusto Query Language), incluindo a interface do usuário da Web do Log Analytics, pastas de trabalho, PowerShell e a API REST.

Permissões necessárias

Para executar uma consulta entre serviços que correlaciona dados no Azure Data Explorer ou no Azure Resource Graph com dados em um espaço de trabalho do Log Analytics, você precisa:

  • Microsoft.OperationalInsights/workspaces/query/*/readpermissões para os espaços de trabalho do Log Analytics que você consulta, conforme fornecido pela função interna Log Analytics Reader, por exemplo.
  • Permissões de leitor para os recursos consultados no Azure Resource Graph.
  • Permissões de 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 adx padrão, seguido pelo nome do banco de dados e pela tabela.

adx('https://help.kusto.windows.net/Samples').StormEvents

Combinar tabelas de cluster do Azure Data Explorer com um espaço de trabalho do Log Analytics

Use o union comando para combinar tabelas de cluster com um espaço de trabalho 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

Gorjeta

O formato abreviado é permitido: ClusterName/InitialCatalog. Por exemplo, adx('help/Samples') é traduzido para adx('help.kusto.windows.net/Samples').

Quando você usa o join operador em vez de união, é necessário usar um hint para combinar os dados no cluster do Azure Data Explorer com o espaço de trabalho do Log Analytics. Hint.remote={Direction of the Log Analytics Workspace}Utilize.

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

As consultas entre inquilinos entre os serviços não são suportadas. Você está conectado a um único locatário para executar a consulta que abrange ambos os recursos.

Se o recurso do Azure Data Explorer estiver no Locatário A e o espaço de trabalho do Log Analytics estiver no Locatário B, use um dos seguintes métodos:

  • Use o Azure Data Explorer para adicionar funções para entidades em locatários diferentes. Adicione o ID de utilizador no Inquilino B como um utilizador autorizado no cluster do Azure Data Explorer. Valide se a propriedade TrustedExternalTenant no cluster do Azure Data Explorer contém o Locatário B. Execute a consulta cruzada totalmente no Locatário B.
  • Use o Lighthouse para projetar o recurso Azure Monitor no Locatário A.

Conectar-se a clusters do Azure Data Explorer de locatários diferentes

Kusto Explorer automaticamente entra você no locatário ao qual a conta de usuário pertence originalmente. Para acessar recursos em outros locatários com a mesma conta de usuário, você deve especificar TenantId explicitamente 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() (Preview)

Insira o arg("") padrão, seguido pelo nome da tabela do Gráfico de Recursos 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 apenas a determinados recursos retirados de uma consulta ARG:

    • Exclua recursos com base em tags – por exemplo, para não disparar alertas para VMs com uma tag "Test".

      arg("").Resources
      | where tags.environment=~'Test'
      | project name 
      
    • Recupere dados de desempenho relacionados à utilização da CPU e filtre para recursos com a tag "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 tag para determinar se as VMs devem ser executadas 24 horas por dia, 7 dias por semana ou se 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 a partir do seu espaço de trabalho do Log Analytics

Para criar uma regra de alerta com base em uma consulta entre serviços do seu espaço de trabalho do Log Analytics, siga as etapas em Criar ou editar uma regra de alerta de pesquisa de log, selecionando seu espaço de trabalho do Log Analytics, na guia Escopo .

Nota

Você também pode executar consultas entre serviços do Azure Data Explorer e do Azure Resource Graph para um espaço de trabalho do Log Analytics, selecionando o recurso relevante como o escopo do seu alerta.

Limitações

Limitações gerais de consultas entre serviços

  • As consultas 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().
  • As consultas entre serviços suportam apenas funções ".show ". Esse recurso permite que consultas entre clusters façam referência diretamente a uma função tabular do Azure Monitor, Azure Data Explorer ou Azure Resource Graph. Os seguintes comandos são suportados com a 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 a identificação da coluna Carimbo de data/hora no cluster. A API de Consulta do Log Analytics não passará no filtro de tempo.
  • As consultas entre serviços suportam apenas a recuperação de dados.
  • Link privado (pontos de extremidade privados) e restrições de IP não suportam consultas entre serviços.
  • mv-expand é limitado a 2.000 registros.
  • Os Logs do Azure Monitor não dão suporte à external_table() função, 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 de consulta entre serviços do Azure Resource Graph

  • O Microsoft Sentinel não oferece suporte a consultas entre serviços para o Azure Resource Graph.
  • Quando consulta os dados do Azure Resource Graph a partir 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.
    • Estes operadores não são suportados: smv-apply(), rand(), arg_max(), arg_min()sumif()variancep()stdevp()varianceif()variance()stdevif()stdev()percentilesw()percentiles()countif()percentilew()avg()avg_if()percentile().

Combinar tabelas do Azure Resource Graph com um espaço de trabalho do Log Analytics

Use o union comando para combinar tabelas de cluster com um espaço de trabalho do Log Analytics.

Por exemplo:

union AzureActivity, arg("").Resources
| take 10
let CL1 = arg("").Resources ;
union AzureActivity, CL1 | take 10

Quando você usa o join operador em vez de união, precisa usar um hint para combinar os dados no Azure Resource Graph com os dados no espaço de trabalho do Log Analytics. Hint.remote={Direction of the Log Analytics Workspace}Utilize. 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óximos passos