Kolumny standardowe w dziennikach usługi Azure Monitor

Dane w dziennikach usługi Azure Monitor są przechowywane jako zestaw rekordów w obszarze roboczym usługi Log Analytics lub aplikacji Szczegółowe informacje aplikacji, z których każdy ma określony typ danych z unikatowym zestawem kolumn. Wiele typów danych będzie zawierać standardowe kolumny, które są wspólne dla wielu typów. W tym artykule opisano te kolumny i przedstawiono przykłady użycia ich w zapytaniach.

Aplikacje oparte na obszarze roboczym w usłudze Application Szczegółowe informacje przechowują swoje dane w obszarze roboczym usługi Log Analytics i używają tych samych standardowych kolumn co inne tabele w obszarze roboczym. Aplikacje klasyczne przechowują swoje dane oddzielnie i mają różne standardowe kolumny określone w tym artykule.

Uwaga

Niektóre kolumny standardowe nie będą wyświetlane w widoku schematu ani funkcji IntelliSense w usłudze Log Analytics i nie będą wyświetlane w wynikach zapytania, chyba że jawnie określisz kolumnę w danych wyjściowych.

TenantId

Kolumna TenantId zawiera identyfikator obszaru roboczego dla obszaru roboczego usługi Log Analytics.

TimeGenerated

Kolumna TimeGenerated zawiera datę i godzinę utworzenia rekordu przez źródło danych. Aby uzyskać więcej informacji, zobacz Czas pozyskiwania danych dzienników w usłudze Azure Monitor .

Funkcja TimeGenerated udostępnia wspólną kolumnę służącą do filtrowania lub podsumowywania według czasu. Po wybraniu zakresu czasu widoku lub pulpitu nawigacyjnego w witrynie Azure Portal do filtrowania wyników jest używany czasGenerated .

Uwaga

Tabele obsługujące klasyczne zasoby aplikacji Szczegółowe informacje używają kolumny Sygnatura czasowa zamiast kolumny TimeGenerated.

Uwaga

Wartość TimeGenerated nie może być starsza niż 2 dni przed odebraniem czasu lub więcej niż dzień w przyszłości. Jeśli w jakiejś sytuacji wartość jest starsza niż 2 dni lub więcej niż dzień w przyszłości, zostanie zamieniona na rzeczywisty czas odebrania.

Przykłady

Następujące zapytanie zwraca liczbę zdarzeń błędów utworzonych dla każdego dnia w poprzednim tygodniu.

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

_TimeReceived

Kolumna _TimeReceived zawiera datę i godzinę odebrania rekordu przez punkt pozyskiwania usługi Azure Monitor w chmurze platformy Azure. Może to być przydatne do identyfikowania problemów z opóźnieniami między źródłem danych a chmurą. Przykładem może być problem z siecią powodujący opóźnienie wysyłania danych z agenta. Aby uzyskać więcej informacji, zobacz Czas pozyskiwania danych dzienników w usłudze Azure Monitor .

Uwaga

Kolumna _TimeReceived jest obliczana za każdym razem, gdy jest używana. Ten proces intensywnie obciąża zasoby. Powstrzymaj się od używania go do filtrowania dużej liczby rekordów. Użycie tej funkcji cyklicznie może prowadzić do zwiększenia czasu wykonywania zapytania.

Poniższe zapytanie daje średnie opóźnienie o godzinę dla rekordów zdarzeń z agenta. Obejmuje to czas od agenta do chmury oraz łączny czas, przez który rekord będzie dostępny dla zapytań dziennika.

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

Kolumna Typ zawiera nazwę tabeli, z której został pobrany rekord, z którego można również traktować jako typ rekordu. Ta kolumna jest przydatna w zapytaniach łączących rekordy z wielu tabel, takich jak te, które używają search operatora, aby odróżnić rekordy różnych typów. $table można użyć zamiast typu w niektórych zapytaniach.

Uwaga

Tabele obsługujące klasyczne zasoby aplikacji Szczegółowe informacje używają kolumny itemType zamiast kolumny Type.

Przykłady

Poniższe zapytanie zwraca liczbę rekordów według typu zebranego w ciągu ostatniej godziny.

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

_Itemid

Kolumna _ItemId zawiera unikatowy identyfikator rekordu.

_ResourceId

Kolumna _ResourceId zawiera unikatowy identyfikator zasobu, z którymi jest skojarzony rekord. Dzięki temu można użyć standardowej kolumny w celu określenia zakresu zapytania tylko do rekordów z określonego zasobu lub sprzężenia powiązanych danych w wielu tabelach.

W przypadku zasobów platformy Azure wartość _ResourceId to adres URL identyfikatora zasobu platformy Azure. Kolumna jest ograniczona do zasobów platformy Azure, w tym zasobów usługi Azure Arc lub do dzienników niestandardowych, które wskazywały identyfikator zasobu podczas pozyskiwania.

Uwaga

Niektóre typy danych zawierają już pola zawierające identyfikator zasobu platformy Azure lub co najmniej części, takie jak identyfikator subskrypcji. Chociaż te pola są przechowywane w celu zapewnienia zgodności z poprzednimi wersjami, zaleca się użycie _ResourceId do wykonywania korelacji krzyżowej, ponieważ będzie bardziej spójne.

Przykłady

Następujące zapytanie łączy dane dotyczące wydajności i zdarzeń dla każdego komputera. Przedstawia wszystkie zdarzenia o identyfikatorze 101 i wykorzystaniu procesora powyżej 50%.

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

Następujące zapytanie łączy rekordy AzureActivity z rekordami SecurityEvent . Przedstawia wszystkie operacje działań z użytkownikami, którzy zostali zalogowani do tych maszyn.

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  

Poniższe zapytanie analizuje _ResourceId i agreguje rozliczane woluminy danych na grupę zasobów platformy Azure.

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 

Użyj tych union withsource = tt * zapytań oszczędnie, ponieważ skanowanie między typami danych jest kosztowne do wykonania.

Zawsze bardziej wydajne jest używanie kolumny _SubscriptionId niż wyodrębnianie jej przez analizowanie kolumny _ResourceId.

_Subscriptionid

Kolumna _SubscriptionId zawiera identyfikator subskrypcji zasobu, z którymi jest skojarzony rekord. Dzięki temu można użyć standardowej kolumny w celu określenia zakresu zapytania tylko do rekordów z określonej subskrypcji lub porównania różnych subskrypcji.

W przypadku zasobów platformy Azure wartość __SubscriptionId jest częścią subskrypcji adresu URL identyfikatora zasobu platformy Azure. Kolumna jest ograniczona do zasobów platformy Azure, w tym zasobów usługi Azure Arc lub do dzienników niestandardowych, które wskazywały identyfikator subskrypcji podczas pozyskiwania.

Uwaga

Niektóre typy danych zawierają już pola zawierające identyfikator subskrypcji platformy Azure. Chociaż te pola są przechowywane w celu zapewnienia zgodności z poprzednimi wersjami, zaleca się użycie kolumny _SubscriptionId do wykonania korelacji krzyżowej, ponieważ będzie bardziej spójna.

Przykłady

Poniższe zapytanie analizuje dane wydajności dla komputerów z określoną subskrypcją.

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

Poniższe zapytanie analizuje _ResourceId i agreguje rozliczane woluminy danych na subskrypcję platformy Azure.

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

Użyj tych union withsource = tt * zapytań oszczędnie, ponieważ skanowanie między typami danych jest kosztowne do wykonania.

_IsBillable

Kolumna _IsBillable określa, czy pozyskane dane są uznawane za rozliczane. Dane z _IsBillable równe nie powodują naliczania false opłat za pozyskiwanie, przechowywanie ani archiwizowanie danych.

Przykłady

Aby uzyskać listę komputerów wysyłających rozliczane typy danych, użyj następującego zapytania:

Uwaga

Używaj zapytań ze union withsource = tt * oszczędnym działaniem, ponieważ operacje skanowania między typami danych są kosztowne do wykonania.

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

Można to rozszerzyć, aby zwrócić liczbę komputerów na godzinę wysyłających rozliczane typy danych:

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

Kolumna _BilledSize określa rozmiar w bajtach danych, które będą rozliczane na koncie platformy Azure, jeśli _IsBillable ma wartość true. Zobacz Obliczanie rozmiaru danych, aby dowiedzieć się więcej na temat sposobu obliczania rozliczanego rozmiaru.

Przykłady

Aby wyświetlić rozmiar rozliczanych zdarzeń pozyskanych na komputer, użyj _BilledSize kolumny, która udostępnia rozmiar w bajtach:

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

Aby wyświetlić rozmiar rozliczanych zdarzeń pozyskanych na subskrypcję, użyj następującego zapytania:

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

Aby wyświetlić rozmiar rozliczanych zdarzeń pozyskanych na grupę zasobów, użyj następującego zapytania:

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 

Aby wyświetlić liczbę zdarzeń pozyskanych na komputer, użyj następującego zapytania:

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

Aby wyświetlić liczbę rozliczanych zdarzeń pozyskanych na komputer, użyj następującego zapytania:

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

Aby wyświetlić liczbę rozliczanych typów danych z określonego komputera, użyj następującego zapytania:

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

Następne kroki