Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
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:
- Uppsättning insikter och tjänster (till exempel Application Insights, Container Insights, VM Insights) aktiverade och deras konfiguration.
- Antal och typ av övervakade resurser.
- Mängden data som samlas in från varje övervakad resurs.
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)
Datavolymtrender för arbetsytebaserade resurser
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
- Information om hur avgifter beräknas för data på en Log Analytics arbetsyta och olika konfigurationsalternativ för att minska dina avgifter finns i Azure Monitor Logs pricing details.
- En beskrivning av de olika typerna av Azure Monitor avgifter och hur du analyserar dem på din Azure faktura finns i Azure Monitor kostnad och användning.
- Metodtips för att konfigurera och hantera Azure Monitor för att minimera dina avgifter finns i Azure Monitor bästa praxis – Kostnadshantering.
- Information om hur du använder transformeringar för att minska mängden data som du samlar in på en Log Analytics arbetsyta genom att filtrera oönskade poster och kolumner finns i Datainsamlingstransformeringar i Azure Monitor (förhandsversion).