Használat elemzése a Log Analytics-munkaterületen

Az Azure Monitor költségei jelentősen eltérhetnek a Log Analytics-munkaterületen gyűjtött adatok mennyiségétől függően. Erre a kötetre hatással van a munkaterületet használó megoldások készlete és az egyes felhasználók által gyűjtött adatok mennyisége. Ez a cikk útmutatást nyújt az összegyűjtött adatok elemzéséhez az adatbetöltési költségek szabályozásához. Segít meghatározni a vártnál magasabb használat okát, valamint előrejelezni a költségeket a további erőforrások monitorozása és a különböző Azure Monitor-funkciók konfigurálása során.

A vártnál magasabb használat okai

Minden Log Analytics-munkaterület külön szolgáltatásként kerül felszámításra, és hozzájárul az Azure-előfizetés számlájához. Az adatbetöltés mennyisége az alábbi tényezőktől függően jelentős lehet:

  • Az engedélyezett elemzések és szolgáltatások, valamint azok konfigurációja
  • Figyelt erőforrások száma és típusa
  • Az egyes figyelt erőforrásokból gyűjtött adatok mennyisége

Ezen tényezők váratlan növekedése megnövelheti az adatmegőrzési díjakat. A cikk további részében az ilyen helyzetek észlelésére, majd az összegyűjtött adatok elemzésére szolgáló módszereket talál a megnövekedett használat forrásának azonosítására és csökkentésére.

Használatelemzés az Azure Monitorban

Az elemzést az Azure Monitor meglévő eszközeivel kell kezdenie. Ezek nem igényelnek konfigurálást, és gyakran minimális erőfeszítéssel biztosítják a szükséges információkat. Ha mélyebb elemzésre van szüksége az összegyűjtött adatokról, mint a meglévő Azure Monitor-funkciókról, az alábbi napló lekérdezések bármelyikét használhatja a Log Analyticsben.

Log Analytics-munkaterület elemzései

A Log Analytics-munkaterület Elemzések segítségével gyorsan megismerheti a munkaterületen lévő adatokat, beleértve a következőket:

  • A főtáblában a legtöbb adatkötetet betöltő adattáblák
  • Az adatokhoz hozzájáruló leggyakoribb erőforrások
  • Az adatbetöltés trendje

A betöltés megoldás és táblázat szerinti bontását a Használat lapon találja. Ez segít gyorsan azonosítani azokat a táblákat, amelyek hozzájárulnak az adatmennyiség nagy részében. Emellett az adatgyűjtés időbeli trendje is látható annak megállapításához, hogy az adatgyűjtés folyamatosan nő-e az idő múlásával, vagy egy adott konfigurációs változásra reagálva hirtelen megnövekedett-e.

Az előre összeállított lekérdezésekhez válassza a További lekérdezések lehetőséget, amelyek segítenek az adatminták további megértésében.

Használat és becsült költségek

Az egyes munkaterületek Használati és Becsült költségek lapján lévő, megoldásonkénti adatbetöltési diagramon látható az elküldött adatok teljes mennyisége, valamint az egyes megoldások által az elmúlt 31 napban küldött adatok mennyisége. Ez segít meghatározni a trendeket, például azt, hogy a növekedés az általános adathasználatból vagy egy adott megoldás általi használatból származik-e.

Naplólekérdezések

A Log Analyticsbennapló lekérdezéseket is használhat, ha mélyebb elemzésre van szüksége az összegyűjtött adatokban. A Log Analytics-munkaterületek minden táblája a következő szabványos oszlopokkal rendelkezik, amelyek segíthetnek a számlázható adatok elemzésében.

  • _IsBillable azonosítja azokat a rekordokat, amelyek esetében betöltési díj van. Ezzel az oszloppal kiszűrhetők a nem számlázható adatok.
  • _BilledSize a rekord méretét bájtban adja meg.

Adatmennyiség megoldásonként

Elemezze egy adott szolgáltatás vagy megoldás által gyűjtött számlázható adatok mennyiségét. Ezek a lekérdezések a Usage táblát használják, amely a munkaterület minden táblájának használati adatait gyűjti.

Megjegyzés

A záradék csak TimeGenerated annak biztosítására vonatkozik, hogy a Azure Portal lekérdezési felülete az alapértelmezett 24 órán túlra nézzen vissza. A Használati adattípus StartTime használatakor adja EndTime meg az eredményeket megjelenítő időgyűjtőket.

Számlázható adatmennyiség megoldás szerint az elmúlt hónapban

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), Solution 
| render columnchart

Számlázható adatmennyiség típus szerint az elmúlt hónapban

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

Számlázható adatmennyiség megoldás szerint és típus szerint az elmúlt hónapban

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

Számlázható adatmennyiség adott eseményekhez Ha azt tapasztalja, hogy egy adott adattípus túl sok adatot gyűjt, érdemes lehet elemezni a táblában lévő adatokat, hogy meghatározza a növekvő rekordokat. Ez a példa szűri a Event tábla adott eseményazonosítóit, majd megadja az egyes azonosítók számát. Ezeket a lekérdezéseket más táblák oszlopai alapján módosíthatja.

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)

Adatmennyiség számítógépenként

Elemezheti a virtuális gépekről vagy virtuális gépek készletéből gyűjtött számlázható adatok mennyiségét. A Usage tábla nem tartalmaz információt a virtuális gépekről gyűjtött adatokról, ezért ezek a lekérdezések a find operátorral keresnek minden olyan táblában, amely tartalmaz egy számítógépnevet. A használati típus nincs megadva, mert ez csak az adattrendek elemzésére vonatkozik.

Figyelmeztetés

Ritkán használjon keresési lekérdezéseket, mert az adattípusok közötti vizsgálatok végrehajtása erőforrás-igényes . Ha nincs szüksége az eredményekre előfizetésenként, erőforráscsoportonként vagy erőforrásnévként, használja a Használati táblát a fenti lekérdezésekhez hasonlóan.

Számlázható adatmennyiség számítógépenként

find where TimeGenerated > ago(24h) 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

Számlázható események száma számítógépenként

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

Adatmennyiség Azure-erőforrás, erőforráscsoport vagy előfizetés szerint

Egy adott erőforrásból vagy erőforráskészletből gyűjtött számlázható adatok mennyiségének elemzése. Ezek a lekérdezések az Azure-ban üzemeltetett erőforrásokból származó adatok _ResourceId és _SubscriptionId oszlopait használják.

Figyelmeztetés

Ritkán használjon keresési lekérdezéseket, mert az adattípusok közötti vizsgálatok végrehajtása erőforrás-igényes . Ha nincs szüksége az eredményekre előfizetésenként, erőforráscsoportonként vagy erőforrásnévként, használja a Használati táblát a fenti lekérdezésekhez hasonlóan.

Számlázható adatmennyiség erőforrás-azonosító szerint

find where TimeGenerated > ago(24h) project _ResourceId, _BilledSize, _IsBillable
| where _IsBillable == true 
| summarize BillableDataBytes = sum(_BilledSize) by _ResourceId 
| sort by BillableDataBytes nulls last

Számlázható adatmennyiség erőforráscsoport szerint

find where TimeGenerated > ago(24h) 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

Hasznos lehet elemezni a _ResourceId :

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

Számlázható adatmennyiség előfizetés szerint

find where TimeGenerated > ago(24h) project _BilledSize, _IsBillable, _SubscriptionId
| where _IsBillable == true 
| summarize BillableDataBytes = sum(_BilledSize) by _SubscriptionId 
| sort by BillableDataBytes nulls last

Gyakori adattípusok lekérdezése

Ha azt tapasztalja, hogy egy adott adattípushoz túlzottan számlázható adatok tartoznak, akkor előfordulhat, hogy lekérdezést kell végrehajtania a táblában lévő adatok elemzéséhez. A következő lekérdezések néhány gyakori adattípushoz nyújtanak példákat:

Biztonsági megoldás

SecurityEvent 
| summarize AggregatedValue = count() by EventID

Naplókezelési megoldás

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

Perf adattípus

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

Esemény adattípus

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

Rendszernapló adattípus

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

AzureDiagnostics adattípus

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

Application Insights-adatok

Az Alkalmazás Elemzések gyűjtött adatok mennyiségének vizsgálatára két módszer létezik attól függően, hogy klasszikus vagy munkaterület-alapú alkalmazással rendelkezik-e. Használja az _BilledSize egyes betöltési eseményeken elérhető tulajdonságot a munkaterület-alapú és a klasszikus erőforrásokhoz is. A systemEvents táblában összesített információkat is használhat a klasszikus erőforrásokhoz.

Megjegyzés

Az ebben a szakaszban található lekérdezések munkaterület-alapú és klasszikus alkalmazás-Elemzések erőforráshoz is használhatók, mivel a visszamenőleges kompatibilitás lehetővé teszi a régi táblanevek használatát. Munkaterület-alapú erőforrás esetén nyissa meg a Naplókat a Log Analytics-munkaterület menüjéből. Klasszikus erőforrás esetén nyissa meg a Naplókat az Alkalmazás Elemzések menüből.

A műveletek az elmúlt 30 nap legtöbb adatkötetét generálják (munkaterület-alapú vagy klasszikus)

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

Az elmúlt 24 órában betöltött adatmennyiség (klasszikus)

systemEvents
| where timestamp >= ago(24h)
| where type == "Billing"
| extend BillingTelemetryType = tostring(dimensions["BillingTelemetryType"])
| extend BillingTelemetrySizeInBytes = todouble(measurements["BillingTelemetrySize"])
| summarize sum(BillingTelemetrySizeInBytes)

Adatmennyiség az elmúlt 24 órában betöltött típus szerint (klasszikus)

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

Az elmúlt 24 órában betöltött eseménytípusok száma (klasszikus)

systemEvents
| where timestamp >= startofday(ago(30d))
| where type == "Billing"
| extend BillingTelemetryType = tostring(dimensions["BillingTelemetryType"])
| summarize count() by BillingTelemetryType, bin(timestamp, 1d)
| render barchart  

A munkaterület-alapú alkalmazás-Elemzések-erőforrások adatmennyiség-trendjeinek megtekintéséhez használjon egy lekérdezést, amely tartalmazza az Összes Application Insights-táblát. Az alábbi lekérdezések a munkaterület-alapú erőforrásokra jellemző táblák nevét használják.

Adatmennyiség-trendek egy munkaterület összes alkalmazás-Elemzések-erőforrásához az elmúlt héten

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)
| render areachart 

Egy adott alkalmazás adatmennyiség-trendjei Elemzések erőforrások egy munkaterületen az elmúlt héten

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

Az adatokat küldő csomópontok ismertetése

Ha nincs túl sok adat egy adott forrásból, előfordulhat, hogy túl sok ügynök küld adatokat.

Figyelmeztetés

Ritkán használjon keresési lekérdezéseket, mert az adattípusok közötti vizsgálatok végrehajtása erőforrás-igényes . Ha nincs szüksége az eredményekre előfizetésenként, erőforráscsoportonként vagy erőforrásnévként, használja a Használati táblát a fenti lekérdezésekhez hasonlóan.

Azon ügynökcsomópontok száma, amelyek az elmúlt hónapban naponta szívverést küldenek

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

Az elmúlt 24 órában adatokat küldő csomópontok száma

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

Az egyes csomópontok által az elmúlt 24 órában küldött adatmennyiség

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

Az örökölt csomópontonkénti tarifacsomag szerint számlázott csomópontok

Az örökölt csomópontonkénti tarifacsomag óránkénti részletességgel számlálja meg a csomópontokat, és nem számolja azokat a csomópontokat sem, amelyek csak biztonsági adattípusokat küldenek. Azoknak a számítógépeknek a listájának lekéréséhez, amelyek csomópontként lesznek számlázva, ha a munkaterület az örökölt Csomópontonkénti tarifacsomagban található, keresse meg azokat a csomópontokat, amelyek számlázott adattípusokat küldenek, mivel egyes adattípusok ingyenesek. Ebben az esetben használja a teljes tartománynév bal szélső mezőjét.

Az alábbi lekérdezések az óránként számlázott adatokat tartalmazó számítógépek számát adják vissza. A számlán szereplő egységek száma csomóponti hónapokban van megadva, amelyet a lekérdezés jelöl billableNodeMonthsPerDay . Ha a munkaterületen telepítve van az Update Management megoldás, adja hozzá az Update and UpdateSummary adattípusokat a where záradékban szereplő listához.

find where TimeGenerated >= startofday(ago(7d)) and TimeGenerated < startofday(now()) project Computer, _IsBillable, Type, TimeGenerated
| where Type !in ("SecurityAlert", "SecurityBaseline", "SecurityBaselineSummary", "SecurityDetection", "SecurityEvent", "WindowsFirewall", "MaliciousIPCommunication", "LinuxAuditLog", "SysmonEvent", "ProtectionStatus", "WindowsEvent")
| 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

Megjegyzés

A tényleges számlázási algoritmus további összetettséggel is jár, ha a fenti lekérdezésben nem szereplő megoldáscélzást használ.

Biztonsági és automatizálási csomópontok száma

Eltérő biztonsági csomópontok száma

union
(
    Heartbeat
    | where (Solutions has 'security' or Solutions has 'antimalware' or Solutions has 'securitycenter')
    | project Computer
),
(
    ProtectionStatus
    | where Computer !in (Heartbeat | project Computer)
    | project Computer
)
| distinct Computer
| project lowComputer = tolower(Computer)
| distinct lowComputer
| count

Különböző Automation-csomópontok száma

 ConfigurationData 
 | where (ConfigDataType == "WindowsServices" or ConfigDataType == "Software" or ConfigDataType =="Daemons") 
 | extend lowComputer = tolower(Computer) | summarize by lowComputer 
 | join (
     Heartbeat 
       | where SCAgentChannel == "Direct"
       | extend lowComputer = tolower(Computer) | summarize by lowComputer, ComputerEnvironment
 ) on lowComputer
 | summarize count() by ComputerEnvironment | sort by ComputerEnvironment asc

Későn érkező adatok

Ha rekordokkal Usage jelentett magas adatbetöltést figyel meg, de nem figyeli meg ugyanazokat az eredményeket, amelyek közvetlenül az adattípuson vannak összegezve _BilledSize , előfordulhat, hogy késve érkeznek az adatok. Ez az, amikor az adatokat régi időbélyegekkel betöltik.

Előfordulhat például, hogy egy ügynök csatlakozási problémát tapasztal, és az újracsatlakozás után halmozott adatokat küld. Vagy előfordulhat, hogy egy gazdagépen helytelen az idő. Ez látszólagos eltérést eredményezhet a Használati adattípus által jelentett betöltött adatok és a TimeGenerated által megadott egy adott napra _BilledSize összegző lekérdezés között, amely az esemény létrejöttének időbélyege.

A későn érkező adatokkal kapcsolatos problémák diagnosztizálásához használja a _TimeReceived oszlopot a TimeGenerated oszlop mellett. _TimeReceived Az az idő, amikor a rekordot az Azure Monitor betöltési pontja megkapta az Azure-felhőben.

Az alábbi példa a W3CIISLog-adatok 2021. május 2-i nagy mennyiségű adatmennyiségére válaszul szolgál az ezen betöltött adatok időbélyegeinek azonosításához. Az where TimeGenerated > datetime(1970-01-01) utasítás a Log Analytics felhasználói felületére mutat, amely az összes adat áttekintésére szolgál.

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 

Következő lépések