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 usługi Application Insights, 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 Insights 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 usługi Application Insights 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 usługi Application Insights 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
- Dowiedz się więcej na temat sposobu przechowywania danych dziennika usługi Azure Monitor.
- Uzyskaj lekcję na temat pisania zapytań dzienników.
- Uzyskaj lekcję łączenia tabel w zapytaniach dzienników.