Standardkolumner i Azure Monitor-loggar

Data i Azure Monitor-loggar lagras som en uppsättning poster i antingen en Log Analytics-arbetsyta eller Application Insights-program, var och en med en viss datatyp som har en unik uppsättning kolumner. Många datatyper har standardkolumner som är vanliga för flera typer. Den här artikeln beskriver dessa kolumner och innehåller exempel på hur du kan använda dem i frågor.

Arbetsytebaserade program i Application Insights lagrar sina data på en Log Analytics-arbetsyta och använder samma standardkolumner som andra tabeller på arbetsytan. Klassiska program lagrar sina data separat och har olika standardkolumner enligt beskrivningen i den här artikeln.

Kommentar

Vissa av standardkolumnerna visas inte i schemavyn eller intellisense i Log Analytics, och de visas inte i frågeresultat om du inte uttryckligen anger kolumnen i utdata.

TenantId

Kolumnen TenantId innehåller arbetsyte-ID:t för Log Analytics-arbetsytan.

TimeGenerated

Kolumnen TimeGenerated innehåller datum och tid då posten skapades av datakällan. Mer information finns i Loggdatainmatningstid i Azure Monitor .

TimeGenerated innehåller en gemensam kolumn som du kan använda för att filtrera eller sammanfatta efter tid. När du väljer ett tidsintervall för en vy eller instrumentpanel i Azure-portalen använder den TimeGenerated för att filtrera resultatet.

Kommentar

Tabeller som stöder klassiska Application Insights-resurser använder kolumnen Tidsstämpel i stället för kolumnen TimeGenerated .

Kommentar

Värdet TimeGenerated får inte vara äldre än 2 dagar innan det tas emot eller mer än en dag i framtiden. Om värdet i vissa fall är äldre än 2 dagar eller mer än en dag i framtiden ersätts det med den faktiska mottagna tiden.

Exempel

Följande fråga returnerar antalet felhändelser som skapats för varje dag föregående vecka.

Event
| where EventLevelName == "Error" 
| where TimeGenerated between(startofweek(ago(7days))..endofweek(ago(7days))) 
| summarize count() by bin(TimeGenerated, 1day) 
| sort by TimeGenerated asc 

_TimeReceived

Kolumnen _TimeReceived innehåller datum och tid då posten togs emot av Azure Monitor-inmatningspunkten i Azure-molnet. Detta kan vara användbart för att identifiera problem med svarstid mellan datakällan och molnet. Ett exempel är ett nätverksproblem som orsakar en fördröjning när data skickas från en agent. Mer information finns i Loggdatainmatningstid i Azure Monitor .

Kommentar

Kolumnen _TimeReceived beräknas varje gång den används. Den här processen är resursintensiv. Avstå från att använda den för att filtrera ett stort antal poster. Om du använder den här funktionen kan det leda till ökad varaktighet för frågekörning.

Följande fråga ger den genomsnittliga svarstiden per timme för händelseposter från en agent. Detta inkluderar tiden från agenten till molnet och den totala tiden för posten att vara tillgänglig för loggfrågor.

Event
| where TimeGenerated > ago(1d) 
| project TimeGenerated, TimeReceived = _TimeReceived, IngestionTime = ingestion_time() 
| extend AgentLatency = toreal(datetime_diff('Millisecond',TimeReceived,TimeGenerated)) / 1000
| extend TotalLatency = toreal(datetime_diff('Millisecond',IngestionTime,TimeGenerated)) / 1000
| summarize avg(AgentLatency), avg(TotalLatency) by bin(TimeGenerated,1hr)

Typ

Kolumnen Typ innehåller namnet på den tabell som posten hämtades från och som även kan betraktas som posttyp. Den här kolumnen är användbar i frågor som kombinerar poster från flera tabeller, till exempel de som använder operatorn search , för att skilja mellan poster av olika typer. $table kan användas i stället för Typ i vissa frågor.

Kommentar

Tabeller som stöder klassiska Application Insights-resurser använder kolumnen itemType i stället för kolumnen Typ .

Exempel

Följande fråga returnerar antalet poster efter typ som samlats in under den senaste timmen.

search * 
| where TimeGenerated > ago(1h)
| summarize count() by Type

_Itemid

Kolumnen _ItemId innehåller en unik identifierare för posten.

_ResourceId

Kolumnen _ResourceId innehåller en unik identifierare för resursen som posten är associerad med. Detta ger dig en standardkolumn som du kan använda för att begränsa frågan till endast poster från en viss resurs eller för att koppla relaterade data mellan flera tabeller.

För Azure-resurser är värdet för _ResourceId URL:en för Azure-resurs-ID. Kolumnen är begränsad till Azure-resurser, inklusive Azure Arc-resurser , eller anpassade loggar som angav resurs-ID under inmatning.

Kommentar

Vissa datatyper har redan fält som innehåller Azure-resurs-ID eller åtminstone delar av det som prenumerations-ID. Även om dessa fält sparas för bakåtkompatibilitet rekommenderar vi att du använder _ResourceId för att utföra korskorrelation eftersom det blir mer konsekvent.

Exempel

Följande fråga kopplar prestanda- och händelsedata för varje dator. Den visar alla händelser med ett ID på 101 och processoranvändning över 50 %.

Perf 
| where CounterName == "% User Time" and CounterValue  > 50 and _ResourceId != "" 
| join kind=inner (     
    Event 
    | where EventID == 101 
) on _ResourceId

Följande fråga kopplar AzureActivity-poster till SecurityEvent-poster. Den visar alla aktivitetsåtgärder med användare som har loggat in på dessa datorer.

AzureActivity 
| where  
    OperationName in ("Restart Virtual Machine", "Create or Update Virtual Machine", "Delete Virtual Machine")  
    and ActivityStatus == "Succeeded"  
| join kind= leftouter (    
   SecurityEvent 
   | where EventID == 4624  
   | summarize LoggedOnAccounts = makeset(Account) by _ResourceId 
) on _ResourceId  

Följande fråga parsar _ResourceId och aggregerar fakturerade datavolymer per Azure-resursgrupp.

union withsource = tt * 
| where _IsBillable == true 
| parse tolower(_ResourceId) with "/subscriptions/" subscriptionId "/resourcegroups/" 
    resourceGroup "/providers/" provider "/" resourceType "/" resourceName   
| summarize Bytes=sum(_BilledSize) by resourceGroup | sort by Bytes nulls last 

Använd dessa union withsource = tt * frågor sparsamt eftersom genomsökningar mellan datatyper är dyra att köra.

Det är alltid effektivare att använda kolumnen _SubscriptionId än att extrahera den genom att parsa kolumnen _ResourceId.

_SubscriptionId

Kolumnen _SubscriptionId innehåller prenumerations-ID för resursen som posten är associerad med. Detta ger dig en standardkolumn som du kan använda för att begränsa frågan till endast poster från en viss prenumeration eller för att jämföra olika prenumerationer.

För Azure-resurser är värdet för __SubscriptionId prenumerationsdelen av Azure-resurs-ID :ens URL. Kolumnen är begränsad till Azure-resurser, inklusive Azure Arc-resurser , eller anpassade loggar som angav prenumerations-ID under inmatning.

Kommentar

Vissa datatyper har redan fält som innehåller Azure-prenumerations-ID . Även om dessa fält sparas för bakåtkompatibilitet rekommenderar vi att du använder kolumnen _SubscriptionId för att utföra korskorrelation eftersom den blir mer konsekvent.

Exempel

Följande fråga undersöker prestandadata för datorer i en specifik prenumeration.

Perf 
| where TimeGenerated > ago(24h) and CounterName == "memoryAllocatableBytes"
| where _SubscriptionId == "ebb79bc0-aa86-44a7-8111-cabbe0c43993"
| summarize avgMemoryAllocatableBytes = avg(CounterValue) by Computer

Följande fråga parsar _ResourceId och aggregerar fakturerade datavolymer per Azure-prenumeration.

union withsource = tt * 
| where _IsBillable == true 
| summarize Bytes=sum(_BilledSize) by _SubscriptionId | sort by Bytes nulls last 

Använd dessa union withsource = tt * frågor sparsamt eftersom genomsökningar mellan datatyper är dyra att köra.

_IsBillable

Kolumnen _IsBillable anger om inmatade data anses vara fakturerbara. Data med _IsBillable lika false med medför inte datainmatning, kvarhållning eller arkivavgifter.

Exempel

Om du vill hämta en lista över datorer som skickar fakturerade datatyper använder du följande fråga:

Kommentar

Använd frågor med union withsource = tt * sparsamt eftersom genomsökningar mellan datatyper är dyra att köra.

union withsource = tt * 
| where _IsBillable == true 
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize TotalVolumeBytes=sum(_BilledSize) by computerName

Detta kan utökas för att returnera antalet datorer per timme som skickar fakturerade datatyper:

union withsource = tt * 
| where _IsBillable == true 
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize dcount(computerName) by bin(TimeGenerated, 1h) | sort by TimeGenerated asc

_BilledSize

Kolumnen _BilledSize anger storleken i byte av data som debiteras till ditt Azure-konto om _IsBillable är sant. Mer information om hur den fakturerade storleken beräknas finns i Beräkning av datastorlek.

Exempel

Om du vill se storleken på fakturerbara händelser som matas in per dator använder du kolumnen _BilledSize som ger storleken i byte:

union withsource = tt * 
| where _IsBillable == true 
| summarize Bytes=sum(_BilledSize) by  Computer | sort by Bytes nulls last 

Om du vill se storleken på fakturerbara händelser som matas in per prenumeration använder du följande fråga:

union withsource=table * 
| where _IsBillable == true 
| summarize Bytes=sum(_BilledSize) by  _SubscriptionId | sort by Bytes nulls last 

Om du vill se storleken på fakturerbara händelser som matas in per resursgrupp använder du följande fråga:

union withsource=table * 
| where _IsBillable == true 
| parse _ResourceId with "/subscriptions/" SubscriptionId "/resourcegroups/" ResourceGroupName "/" *
| summarize Bytes=sum(_BilledSize) by  _SubscriptionId, ResourceGroupName | sort by Bytes nulls last 

Om du vill se antalet händelser som matas in per dator använder du följande fråga:

union withsource = tt *
| summarize count() by Computer | sort by count_ nulls last

Om du vill se antalet fakturerbara händelser som matas in per dator använder du följande fråga:

union withsource = tt * 
| where _IsBillable == true 
| summarize count() by Computer  | sort by count_ nulls last

Om du vill se antalet fakturerbara datatyper från en viss dator använder du följande fråga:

union withsource = tt *
| where Computer == "computer name"
| where _IsBillable == true 
| summarize count() by tt | sort by count_ nulls last 

Nästa steg