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

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

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

Примечание.

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

TenantId

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

TimeGenerated

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

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

Примечание.

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

Примечание.

Значение TimeGenerated не может быть старше 2 дней до получения времени или более дня в будущем. Если в некоторых ситуациях значение старше 2 дней или более дня в будущем, оно будет заменено фактическим полученным временем.

Примеры

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

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 не повлечет за собой прием данных, хранение или архивные расходы.

Примеры

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

Примечание.

Используйте запросы 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 

Следующие шаги