Korrelera data i Azure Data Explorer och Azure Resource Graph med data på en Log Analytics-arbetsyta

Du kan korrelera data i Azure Data Explorer och Azure Resource Graph med data på din Log Analytics-arbetsyta och Application Insights-resurser för att förbättra din analys i Azure Monitor-loggar. Microsoft Sentinel, som även lagrar data i Log Analytics-arbetsytor, stöder frågor mellan tjänster till Azure Data Explorer men inte till Azure Resource Graph. Den här artikeln beskriver hur du kör frågor mellan tjänster från alla tjänster som lagrar data på en Log Analytics-arbetsyta.

Kör frågor mellan tjänster med hjälp av alla klientverktyg som stöder KQL-frågor (Kusto-frågespråk), inklusive Log Analytics-webbgränssnittet, arbetsböcker, PowerShell och REST-API:et.

Behörigheter som krävs

Om du vill köra en fråga mellan tjänster som korrelerar data i Azure Data Explorer eller Azure Resource Graph med data på en Log Analytics-arbetsyta behöver du:

  • Microsoft.OperationalInsights/workspaces/query/*/read behörigheter till de Log Analytics-arbetsytor som du frågar efter, till exempel den inbyggda rollen Log Analytics Reader.
  • Läsarbehörigheter till de resurser som du frågar i Azure Resource Graph.
  • Visningsbehörigheter till de tabeller som du frågar i Azure Data Explorer.

Fråga efter data i Azure Data Explorer med hjälp av adx()

Ange identifieraren för ett Azure Data Explorer-kluster i en fråga i adx mönstret följt av databasnamnet och tabellen.

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

Kombinera Azure Data Explorer-klustertabeller med en Log Analytics-arbetsyta

union Använd kommandot för att kombinera klustertabeller med en Log Analytics-arbetsyta.

Till exempel:

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

Dricks

Kortformat tillåts: ClusterName/InitialCatalog. Till exempel adx('help/Samples') översätts till adx('help.kusto.windows.net/Samples').

När du använder operatorn join i stället för union måste du använda en hint för att kombinera data i Azure Data Explorer-klustret med Log Analytics-arbetsytan. Använd Hint.remote={Direction of the Log Analytics Workspace}.

Till exempel:

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

Ansluta data från ett Azure Data Explorer-kluster i en klientorganisation med en Azure Monitor-resurs i en annan

Frågor mellan klientorganisationer mellan tjänsterna stöds inte. Du är inloggad på en enda klient för att köra frågan som sträcker sig över båda resurserna.

Om Azure Data Explorer-resursen finns i Klient A och Log Analytics-arbetsytan finns i klient B använder du någon av följande metoder:

  • Använd Azure Data Explorer för att lägga till roller för huvudkonton i olika klientorganisationer. Lägg till ditt användar-ID i klientorganisation B som behörig användare i Azure Data Explorer-klustret. Kontrollera att egenskapen TrustedExternalTenant i Azure Data Explorer-klustret innehåller klient B. Kör korsfrågan helt i klient B.
  • Använd Lighthouse för att projicera Azure Monitor-resursen i klient A.

Anslut till Azure Data Explorer-kluster från olika klientorganisationer

Kusto Explorer loggar automatiskt in dig på den klientorganisation som användarkontot ursprungligen tillhör. För att få åtkomst till resurser i andra klienter med samma användarkonto måste du uttryckligen ange TenantId i anslutningssträng:

Data Source=https://ade.applicationinsights.io/subscriptions/SubscriptionId/resourcegroups/ResourceGroupName;Initial Catalog=NetDefaultDB;AAD Federated Security=True;Authority ID=TenantId

Fråga efter data i Azure Resource Graph med hjälp av arg() (förhandsversion)

arg("") Ange mönstret följt av tabellnamnet för Azure Resource Graph.

Till exempel:

arg("").<Azure-Resource-Graph-table-name>

Här är några exempel på Azure Log Analytics-frågor som använder de nya frågefunktionerna i Azure Resource Graph:

  • Filtrera en Log Analytics-fråga baserat på resultatet av en Azure Resource Graph-fråga:

    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
    
  • Skapa en aviseringsregel som endast gäller för vissa resurser som tas från en ARG-fråga:

    • Exkludera resurser baserat på taggar – till exempel för att inte utlösa aviseringar för virtuella datorer med taggen "Test".

      arg("").Resources
      | where tags.environment=~'Test'
      | project name 
      
    • Hämta prestandadata som rör CPU-användning och filtrera till resurser med taggen "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"
      

Fler användningsfall:

  • Använd en tagg för att avgöra om virtuella datorer ska köra 24 x 7 eller stängas av på natten.
  • Visa aviseringar på alla servrar som innehåller ett visst antal kärnor.

Skapa en avisering baserat på en fråga mellan tjänster från Log Analytics-arbetsytan

Om du vill skapa en aviseringsregel baserat på en fråga mellan tjänster från Din Log Analytics-arbetsyta följer du stegen i Skapa eller redigera en varningsregel för loggsökning och väljer din Log Analytics-arbetsyta på fliken Omfång .

Kommentar

Du kan också köra frågor mellan tjänster från Azure Data Explorer och Azure Resource Graph till en Log Analytics-arbetsyta genom att välja relevant resurs som omfång för din avisering.

Begränsningar

Allmänna frågebegränsningar mellan tjänster

  • Frågor mellan tjänster stöder inte parametriserade funktioner och funktioner vars definition omfattar andra uttryck mellan arbetsytor eller korstjänster, inklusive adx(), arg(), resource(), workspace()och app().
  • Frågor mellan tjänster stöder endast ".show" -funktioner. Med den här funktionen kan frågor mellan kluster referera till en Azure Monitor-, Azure Data Explorer- eller Azure Resource Graph-tabellfunktion direkt. Följande kommandon stöds med frågan mellan tjänster:
    • .show functions
    • .show function {FunctionName}
    • .show database {DatabaseName} schema as json
  • Databasnamn är skiftlägeskänsliga.
  • Det går inte att identifiera tidsstämpelkolumnen i klustret. Log Analytics-fråge-API:et skickar inte tidsfiltret.
  • Frågor mellan tjänster stöder endast datahämtning.
  • Private Link (privata slutpunkter) och IP-begränsningar stöder inte frågor mellan tjänster.
  • mv-expand är begränsad till 2 000 poster.
  • Azure Monitor-loggar stöder external_table() inte funktionen, vilket gör att du kan köra frågor mot externa tabeller i Azure Data Explorer. Om du vill köra frågor mot en extern tabell definierar du external_table(<external-table-name>) som en parameterlös funktion i Azure Data Explorer. Du kan sedan anropa funktionen med uttrycket adx("").<function-name>.

Begränsningar för frågor mellan tjänster i Azure Resource Graph

  • Microsoft Sentinel stöder inte frågor mellan tjänster till Azure Resource Graph.
  • När du kör frågor mot Azure Resource Graph-data från Azure Monitor:
    • Frågan returnerar endast de första 1 000 posterna.
    • Azure Monitor returnerar inte Azure Resource Graph-frågefel.
    • Log Analytics-frågeredigeraren markerar giltiga Azure Resource Graph-frågor som syntaxfel.
    • Dessa operatorer stöds inte: smv-apply(), rand(), arg_max(), arg_min(), avg(), avg_if(), countif(), sumif(), percentile(), percentiles(), , percentilew(), percentilesw(), stdev(), , stdevif(), stdevp(), variance(), variancep(). varianceif()

Kombinera Azure Resource Graph-tabeller med en Log Analytics-arbetsyta

union Använd kommandot för att kombinera klustertabeller med en Log Analytics-arbetsyta.

Till exempel:

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

När du använder operatorn join i stället för union måste du använda en hint för att kombinera data i Azure Resource Graph med data på Log Analytics-arbetsytan. Använd Hint.remote={Direction of the Log Analytics Workspace}. Till exempel:

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"

Nästa steg