Стандартные столбцы в журналах Azure Monitor

Данные в журналах Azure Monitor хранятся в виде набора записей в рабочей области Log Analytics или в приложении Application Insights, каждая из которых имеет определенный тип данных, имеющий уникальный набор столбцов. Многие типы данных имеют стандартные столбцы, которые являются общими для нескольких типов. В этой статье описаны эти столбцы и приведены примеры их использования в запросах.

Приложения на основе рабочей области в Application Insights хранят свои данные в рабочей области Log Analytics и используют те же стандартные столбцы, что и другие таблицы в этой рабочей области. Классические приложения хранят свои данные отдельно и имеют другие стандартные столбцы, как указано в этой статье.

Примечание

Некоторые стандартные столбцы не отображаются в представлении схемы или IntelliSense в Log Analytics, а также не отображаются в результатах запроса, если только столбец в выходных данных не указан явным образом.

TenantId

Столбец TenantId содержит идентификатор рабочей области для рабочей области Log Analytics.

TimeGenerated

Столбец TimeGenerated содержит дату и время создания записи источником данных. Дополнительные сведения см. в разделе Время приема данных журнала в Azure Monitor.

TimeGenerated представляет собой общий столбец, используемый для фильтрации или суммирования по времени. Если диапазон времени выбран для представления или на панели мониторинга на портале Azure, результаты будут отфильтрованы с помощью TimeGenerated.

Примечание

Таблицы, поддерживающие классические ресурсы Application Insights, вместо столбца TimeGenerated используют столбец timestamp.

Примеры

Указанный ниже запрос возвращает количество событий с ошибками за каждый день на прошлой неделе.

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

_TimeReceived

Столбец _TimeReceived содержит дату и время получения записи точкой приема данных Azure Monitor в облаке Azure. Это значение может быть полезно для выявления проблем задержки между источником данных и облаком. Примером может служить проблема с сетью, вызывающая задержку данных, отправляемых агентом. Дополнительные сведения см. в разделе Время приема данных журнала в Azure Monitor.

Примечание

Столбец _TimeReceived вычисляется каждый раз, когда он используется. Этот процесс потребляет много ресурсов. Не используйте его для фильтрации большого количества записей. Рекуррентное использование этой функции может привести к увеличению длительности выполнения запроса.

Следующий запрос возвращает среднюю задержку на час для записей событий агента. Сюда входит время передачи из агента в облако и общее время, в течение которого запись станет доступна для запросов журнала.

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)

Тип

Столбец Type содержит имя таблицы, из которой извлечена запись. Это имя также является типом записи. Этот столбец можно использовать в запросах, где объединяются записи из нескольких таблиц, например использующих оператор search, чтобы различать записи разных типов. В некоторых запросах вместо Type можно использовать $table.

Примечание

Таблицы, поддерживающие классические ресурсы Application Insights, вместо столбца Type используют столбец itemType.

Примеры

Указанный ниже запрос возвращает количество записей по типу, собранных за последний час.

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

_ItemId

Столбец _ItemId содержит уникальный идентификатор записи.

_ResourceId

Столбец _ResourceId содержит уникальный идентификатор для ресурса, с которым связана запись. Этот стандартный столбец можно использовать, чтобы выполнить запрос только к записям из определенного ресурса или объединить связанные данные из нескольких таблиц.

Для ресурсов Azure значением параметра _ResourceId будет URL-адрес идентификатора ресурса Azure. Этот столбец ограничен ресурсами Azure, включая ресурсы Azure Arc, или пользовательскими журналами, в которых указывается идентификатор ресурса во время приема.

Примечание

Некоторые типы данных уже содержат поля с идентификатором ресурса Azure или его частями, например идентификатором подписки. Хотя эти поля нужны для обеспечения обратной совместимости, рекомендуем использовать свойство _ResourceId для перекрестной корреляции, так как в этом случае она будет более согласованной.

Примеры

Указанный ниже запрос объединяет данные о производительности и событиях для каждого компьютера. В результатах показаны все события с идентификатором 101 и загрузкой процессора больше 50 %.

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

Указанный ниже запрос объединяет записи AzureActivity и записи SecurityEvent. В результатах показаны все операции с пользователями, которые вошли на эти виртуальные машины.

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  

Следующий запрос анализирует столбец _ResourceId и объединяет оплачиваемые объемы данных для каждой группы ресурсов 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 

Используйте эти запросы union withsource = tt * только в случае необходимости, так как сканирование по типам данных требует больших затрат на выполнение.

Всегда более эффективно использовать столбец _SubscriptionId, чем извлекать данные путем анализа столбца _ResourceId.

_SubscriptionId

Столбец _SubscriptionId содержит идентификатор подписки ресурса, с которым связана запись. Этот стандартный столбец можно использовать, чтобы выполнить запрос только к записям из определенной подписки или для сравнения различных подписок.

Для ресурсов Azure значение __SubscriptionId является частью URL-адреса идентификатора Azure Resource, содержащей информацию о подписке. Этот столбец ограничен ресурсами Azure, включая ресурсы Azure Arc, или пользовательскими журналами, в которых указывается идентификатор ресурса во время приема.

Примечание

У некоторых типов данных уже есть поля, содержащие идентификатор подписки Azure. Хотя эти поля нужны для обеспечения обратной совместимости, рекомендуем использовать столбец _SubscriptionId для перекрестной корреляции, так как в этом случае она будет более согласованной.

Примеры

Следующий запрос проверяет данные производительности для компьютеров определенной подписки.

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

Следующий запрос анализирует столбец _ResourceId и объединяет оплачиваемые объемы данных для каждой подписки Azure.

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

Используйте эти запросы union withsource = tt * только в случае необходимости, так как сканирование по типам данных требует больших затрат на выполнение.

_IsBillable

Столбец _IsBillable указывает, являются ли входящие данные оплачиваемыми. Данные, для которых свойство _IsBillable имеет значение false, собираются бесплатно и не оплачиваются в вашей учетной записи Azure.

Примеры

Чтобы получить список компьютеров, отправляющие счет за типы данных, используйте следующий запрос.

Примечание

Используйте запросы union withsource = tt * только в случае необходимости, так как сканирование по типам данных требует больших затрат на выполнение.

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

Это может быть расширено, чтобы возвращать количество компьютеров в час, которые отправляют счета за типы данных.

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

Столбец _BilledSize определяет размер данных в байтах, которые будут оплачиваться в вашей учетной записи Azure, если свойство _IsBillable имеет значение true.

Примеры

Чтобы увидеть размер оплачиваемых событий для каждого компьютера, используйте столбец _BilledSize, который предоставляет размер в байтах.

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

Чтобы узнать размер полученных оплачиваемых событий для каждой подписки, выполните следующий запрос.

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

Чтобы узнать размер полученных оплачиваемых событий для каждой группы ресурсов, выполните следующий запрос.

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 

Чтобы узнать количество полученных событий для каждого компьютера, выполните следующий запрос.

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

Чтобы узнать количество полученных оплачиваемых событий для каждого компьютера, выполните следующий запрос.

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

Чтобы узнать количество полученных оплачиваемых типов данных с определенного компьютера, выполните следующий запрос.

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

Дальнейшие действия