Microsoft Azure — использование ЦП и памяти виртуальных машин Azure в виде одной таблицы

Опубликовано: 7 Сентября, 2022

В этой статье вы увидите, как вы можете анализировать производительность вашей виртуальной машины Azure как по использованию ЦП, так и по использованию памяти одновременно, используя запросы к журналу Azure. Эти запросы KQL помогут вам понять производительность всех виртуальных машин Azure в виде таблицы, а также позволят экспортировать данные в файл CSV.

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

Преимущества использования этих запросов KQL:

  • Вы можете анализировать виртуальные машины за считанные секунды.
  • Легко фильтровать виртуальные машины
  • Легко фильтровать данные журнала с помощью условий.
  • Легко анализировать производительность между временными диапазонами (например, 7 дней, 15 дней, 2 месяца, 2 часа, 12 часов и т. д.)
  • Позволяет нам экспортировать данные в CSV для использования в будущем для прошлой работы.

Реализация:

Шаг 1. Войдите на портал Azure.

Шаг 2. Перейдите в рабочую область Log Analytics >> перейдите в раздел « Общие » в меню слева >> выберите «Журналы ».

Вставьте приведенный ниже запрос KQL, чтобы получить консолидированное использование ЦП и памяти в виде одной таблицы.

Использование ЦП ВМ и использование ПАМЯТИ — на всех компьютерах по типу ОС равно «Windows/Linux» из выбранной области.

Perf
| where ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total"
| where Computer in ((Heartbeat | where OSType == "Linux" or OSType == "Windows" | distinct Computer))
| summarize MIN_CPU = min(CounterValue), AVG_CPU = avg(CounterValue), MAX_CPU = max(CounterValue) by Computer
| join 
( 
Perf 
| where ObjectName == "Memory"
| where CounterName == "% Used Memory" or CounterName == "% Committed Bytes In Use"
| summarize MIN_MEM = min(CounterValue), AVG_MEM = avg(CounterValue), MAX_MEM = max(CounterValue) by Computer
) on Computer
| project Computer, MIN_CPU, AVG_CPU, MAX_CPU, MIN_MEM, AVG_MEM, MAX_MEM

Выход:

Примечание. Вы можете загрузить данные таблицы в формате CSV, нажав Экспорт .

Пример 1. Фильтрация решения на основе средней загрузки ЦП более 50 %.

Perf
| where ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total"
| where Computer in ((Heartbeat | where OSType == "Linux" or OSType == "Windows" | distinct Computer))
| summarize MIN_CPU = min(CounterValue), AVG_CPU = avg(CounterValue), MAX_CPU = max(CounterValue) by Computer
| join 
( 
Perf 
| where ObjectName == "Memory"
| where CounterName == "% Used Memory" or CounterName == "% Committed Bytes In Use"
| summarize MIN_MEM = min(CounterValue), AVG_MEM = avg(CounterValue), MAX_MEM = max(CounterValue) by Computer
) on Computer
| project Computer, MIN_CPU, AVG_CPU, MAX_CPU, MIN_MEM, AVG_MEM, MAX_MEM
| where AVG_CPU > 50

Выход:

Пример 2. Чтобы отфильтровать решение на основе средней загрузки ЦП более 50 % и средней загрузки памяти более 50 %. Пока мы используем и в запросе, условие должно удовлетворять обоим условиям.

Perf
| where ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total"
| where Computer in ((Heartbeat | where OSType == "Linux" or OSType == "Windows" | distinct Computer))
| summarize MIN_CPU = min(CounterValue), AVG_CPU = avg(CounterValue), MAX_CPU = max(CounterValue) by Computer
| join 
( 
Perf 
| where ObjectName == "Memory"
| where CounterName == "% Used Memory" or CounterName == "% Committed Bytes In Use"
| summarize MIN_MEM = min(CounterValue), AVG_MEM = avg(CounterValue), MAX_MEM = max(CounterValue) by Computer
) on Computer
| project Computer, MIN_CPU, AVG_CPU, MAX_CPU, MIN_MEM, AVG_MEM, MAX_MEM
| where AVG_CPU > 50 and AVG_MEM > 50

Выход: