Analysera användning på en Log Analytics-arbetsyta

Azure Monitor kostnaderna kan variera avsevärt beroende på mängden data som samlas in på din Log Analytics arbetsyta. Den uppsättning lösningar som använder arbetsytan och mängden data som varje lösning samlar in påverkar den här volymen.

Den här artikeln innehåller vägledning om hur du analyserar dina insamlade data som hjälper dig att kontrollera dina kostnader för datainmatning. Det hjälper dig att:

  • Fastställa orsaken till högre användning än förväntat.
  • Förutse dina kostnader när du övervakar fler resurser och konfigurerar olika Azure Monitor-funktioner.

Skärmbild som visar utdata för en exempelfråga i Log Analytics.

Tips

Strategier för att minska dina Azure Monitor-kostnader finns i Kostnadsoptimering och Azure Monitor.

Orsaker till högre användning än förväntat

Varje Log Analytics-arbetsyta debiteras som en separat tjänst och bidrar till fakturan för din Azure-prenumeration. Mängden datainmatning kan vara betydande, beroende på följande:

En oväntad ökning av någon av dessa faktorer kan leda till ökade avgifter för datakvarhållning. Resten av den här artikeln innehåller metoder för att identifiera en sådan situation och sedan analysera insamlade data för att identifiera och minimera källan till den ökade användningen.

Skicka avisering när datainsamlingen är hög

För att undvika oväntade fakturor konfigurerar du proaktiva meddelanden för överdriven användning. Genom att ta emot meddelanden konfigureras du för att åtgärda eventuella avvikelser före faktureringsperiodens slut.

Följande exempel är en varningsregel för loggsökning som skickar en avisering om den fakturerbara datavolymen som har matats in under de senaste 24 timmarna är större än 50 GB. Ändra inställningen Aviseringslogik för att använda ett annat tröskelvärde baserat på förväntad användning i din miljö. Du kan också öka frekvensen för att kontrollera användningen flera gånger varje dag, men det här alternativet resulterar i en högre avgift för aviseringsregeln.

Inställning Värde
Omfattning
Målomfång Välj din Log Analytics-arbetsyta.
Tillstånd
Fråga Usage \| where IsBillable \| summarize DataGB = sum(Quantity / 1000)
Mått Mått: DataGB
Sammansättningstyp: Totalt
Sammansättningskornighet: 1 dag
Aviseringslogik Operator: Större än
Tröskelvärde: 50
Utvärderingsfrekvens: 1 dag
Åtgärder Välj eller lägg till en åtgärdsgrupp för att meddela dig när tröskelvärdet överskrids.
Detaljer
Allvarlighet Varning
Namn på aviseringsregel Fakturerbar datavolym som är större än 50 GB på 24 timmar.

Analysera användning med inbyggda verktyg

Starta analysen med befintliga verktyg i Azure Monitor. Dessa verktyg kräver ingen konfiguration och kan ofta ge den information du behöver med minimal ansträngning. Om du behöver djupare analys av dina insamlade data än befintliga Azure Monitor-funktioner använder du någon av följande loggfrågor i Log Analytics.

Insikter om Log Analytics-arbetsyta

Log Analytics Workspace Insights ger dig en snabb förståelse av data på din arbetsyta. Det här är till exempel några av de insikter som du kan upptäcka:

  • Datatabeller som matar in mest datavolym i huvudtabellen.
  • De viktigaste resurserna som bidrar med data.
  • Trend för datainmatning.

Fliken Användning innehåller en uppdelning av inmatning efter lösning och tabell. Den här informationen hjälper dig att snabbt identifiera de tabeller som bidrar till huvuddelen av din datavolym. Fliken visar också trender för datainsamling över tid. Se om datainsamlingen ökade stadigt över tid eller plötsligt ökade som svar på en konfigurationsändring.

Välj Ytterligare frågor för fördefinierade frågor som hjälper dig att bättre förstå dina datamönster.

Användning och uppskattade kostnader

Diagrammet Datainmatning per lösning på sidan Användning och uppskattade kostnader för varje arbetsyta visar den totala mängden data som skickats och hur mycket varje lösning skickar under de senaste 31 dagarna. Den här informationen hjälper dig att fastställa trender, till exempel om en ökning kommer från den totala dataanvändningen eller användningen av en viss lösning.

Fråga fakturerbar datavolym från tabellen Användning

Analysera mängden fakturerbara data som samlas in av en viss tjänst eller lösning. Dessa frågor använder tabellen Användning som samlar in användningsdata för varje tabell på arbetsytan.

Anteckning

-satsen med TimeGenerated är bara för att säkerställa att frågeupplevelsen i Azure Portal ser tillbaka bortom standardvärdet 24 timmar. När du använder datatypen Användning, representerar StartTime och EndTime de tidsenheter som resultaten presenteras för.

Fakturerbar datavolym efter typ under den senaste månaden

Usage 
| where TimeGenerated > ago(32d)
| where StartTime >= startofday(ago(31d)) and EndTime < startofday(now())
| where IsBillable == true
| summarize BillableDataGB = sum(Quantity) / 1000. by bin(StartTime, 1d), DataType 
| render columnchart

Fakturerbar datavolym efter tabellplan under den senaste månaden

Visa mängden data som matas in i varje tabellplan (analysloggar, grundläggande loggar eller extraloggar). Den här Plan kolumnen lades till i tabellen Användning i mitten av maj 2026. Data som matas in tidigare än så kommer inte att ha den här kolumnen ifylld.

Usage 
| where TimeGenerated > ago(32d)
| where StartTime >= startofday(ago(31d)) and EndTime < startofday(now())
| where IsBillable == true
| summarize BillableDataGB = sum(Quantity) / 1000. by bin(StartTime, 1d), Plan
| render columnchart

Fakturerbar datavolym efter lösning och typ under den senaste månaden

Usage 
| where TimeGenerated > ago(32d)
| where StartTime >= startofday(ago(31d)) and EndTime < startofday(now())
| where IsBillable == true
| summarize BillableDataGB = sum(Quantity) / 1000 by Solution, DataType
| sort by Solution asc, DataType asc

Fler exempelfrågor finns i Frågor för tabellen Användning.

Hämta fakturerbar datavolym från händelsedata

Använd loggfrågor i Log Analytics för djupare analys av dina insamlade data. Varje tabell i en Log Analytics arbetsyta har följande standardkolumner som kan hjälpa dig att analysera fakturerbara data:

  • _IsBillable identifierar poster som medför en inmatningsavgift. Använd den här kolumnen för att filtrera bort icke-fakturerbara data.
  • _BilledSize anger postens storlek i bytes.

Fakturerbar datavolym för specifika händelser

Om du upptäcker att en viss datatyp samlar in överdrivna data kanske du vill analysera data i tabellen för att fastställa specifika poster som ökar. Det här exemplet filtrerar specifika händelse-ID:t i Event tabellen och ger sedan ett antal för varje ID. Du kan ändra den här frågan med hjälp av kolumnerna från andra tabeller.

Event
| where TimeGenerated > startofday(ago(31d)) and TimeGenerated < startofday(now()) 
| where EventID == 5145 or EventID == 5156
| where _IsBillable == true
| summarize count(), Bytes=sum(_BilledSize) by EventID, bin(TimeGenerated, 1d)

Fler exempelfrågor finns i Frågor för tabellen Händelse.

Datavolym efter Azure-resurs, resursgrupp eller prenumeration

Du kan analysera mängden fakturerbara data som samlas in från en viss resurs eller uppsättning resurser. Dessa frågor använder kolumnerna _ResourceId och _SubscriptionId för data från resurser som finns i Azure.

Varning

Använd sökfrågor sparsamt eftersom genomsökningar mellan datatyper är resursintensiva att köra. Om du inte behöver resultat per prenumeration, resursgrupp eller resursnamn använder du användningstabellfrågorna i Fråga om fakturerbar datavolym från tabellen Användning.

Fakturerbar datavolym efter resurs-ID för den senaste hela dagen

find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _ResourceId, _BilledSize, _IsBillable
| where _IsBillable == true 
| summarize BillableDataBytes = sum(_BilledSize) by _ResourceId 
| sort by BillableDataBytes nulls last

Fakturerbar datavolym per resursgrupp för den senaste hela dagen

find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _ResourceId, _BilledSize, _IsBillable
| where _IsBillable == true 
| summarize BillableDataBytes = sum(_BilledSize) by _ResourceId
| extend resourceGroup = tostring(split(_ResourceId, "/")[4] )
| summarize BillableDataBytes = sum(BillableDataBytes) by resourceGroup 
| sort by BillableDataBytes nulls last

Det kan vara bra att parsa _ResourceId:

| parse tolower(_ResourceId) with "/subscriptions/" subscriptionId "/resourcegroups/" 
    resourceGroup "/providers/" provider "/" resourceType "/" resourceName   

Fakturerbar datavolym per prenumeration för den senaste hela dagen

find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _BilledSize, _IsBillable, _SubscriptionId
| where _IsBillable == true 
| summarize BillableDataBytes = sum(_BilledSize) by _SubscriptionId 
| sort by BillableDataBytes nulls last

Tips

För arbetsytor med stora datavolymer kan de frågor som visas i det här avsnittet, vilka hämtar stora mängder rådata, behöva begränsas till en enda dag. Om du vill spåra trender över tid kan du överväga att konfigurera en Power BI-rapport och använda inkrementell uppdatering för att samla in datavolymer per resurs en gång om dagen.

Datavolym per dator

Du kan analysera mängden fakturerbara data som samlas in från en virtuell dator eller en uppsättning virtuella datorer. Tabellen Användning har inte kornigheten för att visa datavolymer för specifika virtuella datorer, så dessa frågor använder sökoperatorn för att söka i alla tabeller som innehåller ett datornamn. Användningstypen utelämnas eftersom den här frågan endast är avsedd för analys av datatrender.

Varning

Använd sökfrågor sparsamt eftersom genomsökningar mellan datatyper är resursintensiva att köra. Om du inte behöver resultat per prenumeration, resursgrupp eller resursnamn använder du användningstabellfrågorna i Fråga om fakturerbar datavolym från tabellen Användning.

Fakturerbar datavolym per dator för den senaste hela dagen

find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _BilledSize, _IsBillable, Computer, Type
| where _IsBillable == true and Type != "Usage"
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| summarize BillableDataBytes = sum(_BilledSize) by  computerName 
| sort by BillableDataBytes desc nulls last

Antal fakturerbara händelser per dator för den senaste hela dagen

find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _IsBillable, Computer, Type
| where _IsBillable == true and Type != "Usage"
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| summarize eventCount = count() by computerName  
| sort by eventCount desc nulls last

Fråga efter datavolym för vanliga datatyper

Om du upptäcker att du har för stora fakturerbara data för en viss datatyp kan du behöva utföra en fråga för att analysera data i tabellen. Följande frågor innehåller exempel på några vanliga datatyper:

Säkerhetslösning

SecurityEvent 
| summarize AggregatedValue = count() by EventID
| order by AggregatedValue desc nulls last

Mer exempelfrågor finns i Frågor för tabellen SecurityEvent .

Log Management-lösning

Usage 
| where Solution == "LogManagement" and iff(isnotnull(toint(IsBillable)), IsBillable == true, IsBillable == "true") == true 
| summarize AggregatedValue = count() by DataType
| order by AggregatedValue desc nulls last

Fler exempelfrågor finns i Frågor för tabellen Användning.

Perf-datatyp

Perf 
| summarize AggregatedValue = count() by CounterPath
Perf 
| summarize AggregatedValue = count() by CounterName

Mer exempelfrågor finns i Frågor för tabellen Perf .

Händelsedatatyp

Event 
| summarize AggregatedValue = count() by EventID
Event 
| summarize AggregatedValue = count() by EventLog, EventLevelName

Fler exempelfrågor finns i Frågor för tabellen Händelse.

Syslog-datatyp

Syslog 
| summarize AggregatedValue = count() by Facility, SeverityLevel
Syslog 
| summarize AggregatedValue = count() by ProcessName

Mer exempelfrågor finns i Frågor för syslog-tabellen .

AzureDiagnostics-datatyp

AzureDiagnostics 
| summarize AggregatedValue = count() by ResourceProvider, ResourceId

Mer exempelfrågor finns i Frågor för AzureDiagnostics-tabellen .

Fråga Application Insights-datavolym

Följande frågor gäller för Application Insights-resurser, inklusive klassiska resurser som lagrar data utanför en Log Analytics arbetsyta. Använd egenskapen _BilledSize som är tillgänglig för varje inmatad händelse för både arbetsytebaserade och klassiska resurser. För klassiska resurser kan du också använda aggregerad information i tabellen systemEvents .

Anteckning

Frågeförfrågningar mot Application Insights-tabeller, förutom SystemEvents, fungerar för både en arbetsytebaserad och klassisk Application Insights-resurs. Med bakåtkompatibilitet kan du fortsätta att använda äldre tabellnamn. För en resurs baserad på en arbetsyta öppnar du Loggar på menyn för Log Analytics-arbetsyta. Öppna Loggar på Application Insights-menyn för en klassisk resurs.

Beroendeoperationer genererar den största datavolymen under de senaste 30 dagarna (arbetsytebaserad eller klassisk)

dependencies
| where timestamp >= startofday(ago(30d))
| summarize sum(_BilledSize) by operation_Name
| render barchart  

Daglig datavolym efter typ för den här Application Insights-resursen under de senaste 7 dagarna (endast klassisk)

systemEvents
| where timestamp >= startofday(ago(7d)) and timestamp < startofday(now())
| where type == "Billing"
| extend BillingTelemetryType = tostring(dimensions["BillingTelemetryType"])
| extend BillingTelemetrySizeInBytes = todouble(measurements["BillingTelemetrySize"])
| summarize sum(BillingTelemetrySizeInBytes) by BillingTelemetryType, bin(timestamp, 1d)  

Om du vill titta på datavolymtrenderna för arbetsytebaserade Application Insights-resurser använder du en fråga som innehåller alla Application Insights-tabeller. Följande frågor använder tabellnamnen som är specifika för arbetsytebaserade resurser.

Daglig datavolym efter typ för alla Application Insights-resurser på en arbetsyta i 7 dagar

union AppAvailabilityResults,
      AppBrowserTimings,
      AppDependencies,
      AppExceptions,
      AppEvents,
      AppMetrics,
      AppPageViews,
      AppPerformanceCounters,
      AppRequests,
      AppSystemEvents,
      AppTraces
| where TimeGenerated >= startofday(ago(7d)) and TimeGenerated < startofday(now())
| summarize sum(_BilledSize) by _ResourceId, bin(TimeGenerated, 1d)

Om du bara vill titta på datavolymtrenderna för en enda Application Insights-resurs lägger du till följande rad tidigare summarize i föregående fråga:

| where _ResourceId contains "<myAppInsightsResourceName>"

Tips

För arbetsytor med stora datavolymer, begränsa frågor såsom den föregående som riktar sig mot stora mängder rådata, till en enda dag. Om du vill spåra trender över tid kan du överväga att konfigurera en Power BI-rapport och använda inkrementell uppdatering för att samla in datavolymer per resurs en gång om dagen.

Förstå noder som skickar data

Om du inte ser överdrivna data från en viss källa kan du ha ett överdrivet antal agenter som skickar data.

Antal agentnoder som skickar ett pulsslag varje dag den senaste månaden

Heartbeat 
| where TimeGenerated > startofday(ago(31d))
| summarize nodes = dcount(Computer) by bin(TimeGenerated, 1d)    
| render timechart

Fler exempelfrågor finns i Frågor för tabellen Pulsslag.

Varning

Använd sökfrågor sparsamt eftersom genomsökningar mellan datatyper är resursintensiva att köra. Om du inte behöver resultat per prenumeration, resursgrupp eller resursnamn använder du användningstabellfrågorna i Fråga om fakturerbar datavolym från tabellen Användning.

Antal noder som skickar data under de senaste 24 timmarna

find where TimeGenerated > ago(24h) project Computer
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize nodes = dcount(computerName)

Datavolym som skickats av varje nod under de senaste 24 timmarna

find where TimeGenerated > ago(24h) project _BilledSize, Computer
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize TotalVolumeBytes=sum(_BilledSize) by computerName

Noder som faktureras enligt den äldre prisnivån per nod

Den äldre prisnivån per nod fakturerar noder med kornighet per timme. Den räknar inte heller noder som bara skickar en uppsättning säkerhetsdatatyper. Om du vill hämta en lista över datorer som faktureras som noder om arbetsytan finns på den äldre prisnivån Per nod letar du efter noder som skickar fakturerade datatyper eftersom vissa datatyper är kostnadsfria. I det här fallet använder du fältet längst till vänster i det fullständigt kvalificerade domännamnet.

Följande frågor returnerar antalet datorer med fakturerade data per timme. Antalet enheter på din faktura anges i nodmånader, vilket sökfrågan representerar som billableNodeMonthsPerDay. Om arbetsytan har lösningen Uppdateringshantering installerad lägger du till datatyperna Update och UpdateSummary i listan i where -satsen.

find where TimeGenerated >= startofday(ago(7d)) and TimeGenerated < startofday(now()) project Computer, _IsBillable, Type, TimeGenerated
| where Type !in ("SecurityAlert", "SecurityBaseline", "SecurityBaselineSummary", "SecurityDetection", "SecurityEvent", "WindowsFirewall", "LinuxAuditLog", "ProtectionStatus", "WindowsEvent", "MDCFileIntegrityMonitoringEvents", "DeviceCustomFileEvents", "DeviceCustomRegistryEvents")
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| where _IsBillable == true
| summarize billableNodesPerHour=dcount(computerName) by bin(TimeGenerated, 1h)
| summarize billableNodesPerDay = sum(billableNodesPerHour)/24., billableNodeMonthsPerDay = sum(billableNodesPerHour)/24./31.  by day=bin(TimeGenerated, 1d)
| sort by day asc

Anteckning

Viss komplexitet i den faktiska faktureringsalgoritmen när riktning mot lösningar används representeras inte i föregående förfrågan.

Diagnostisera data som inkommer sent

Om du ser att hög datainmatning rapporteras med hjälp av Usage-poster, men när du inte ser samma resultat när du summerar _BilledSize direkt på datatypen, kan sent anländande data vara orsaken. Den här situationen uppstår när data matas in med gamla tidsstämplar.

En agent kan till exempel ha ett anslutningsproblem och skicka ackumulerade data när den återansluter. Eller så kan en värd ha en felaktig tid. Båda exemplen kan resultera i en uppenbar avvikelse mellan inmatade data som rapporterats av datatypen Användning och en fråga som summerar _BilledSize över rådata för en viss dag som anges av TimeGenerated, tidsstämpeln när händelsen genererades.

Om du vill diagnostisera dataproblem som inkommer sent använder du kolumnen _TimeReceived och kolumnen TimeGenerated . Egenskapen _TimeReceived är den tid då Azure Monitor tar emot posten.

Följande exempel svarar på stora inmatade datavolymer med W3CIISLog-data den 2 maj 2021 för att identifiera tidsstämplarna för dessa inmatade data. Instruktionen where TimeGenerated > datetime(1970-01-01) ingår för att ge ledtråden till Log Analytics-användargränssnittet för att titta över alla data.

W3CIISLog
| where TimeGenerated > datetime(1970-01-01)
| where _TimeReceived >= datetime(2021-05-02) and _TimeReceived < datetime(2021-05-03) 
| where _IsBillable == true
| summarize BillableDataMB = sum(_BilledSize)/1.E6 by bin(TimeGenerated, 1d)
| sort by TimeGenerated asc 

Nästa steg