Взятие под контроль разрастания виртуальных машин (часть 8)

Опубликовано: 18 Апреля, 2023

  • Взятие под контроль разрастания виртуальных машин (часть 2)
  • Взятие под контроль разрастания виртуальных машин (часть 3)
  • Взятие под контроль разрастания виртуальных машин (часть 4)
  • Взятие под контроль разрастания виртуальных машин (часть 5)
  • Взятие под контроль разрастания виртуальных машин (часть 6)
  • Взятие под контроль разрастания виртуальных машин (часть 7)
  • Взятие под контроль разрастания виртуальных машин (часть 9)
  • Взятие под контроль разрастания виртуальных машин (часть 10)
  • Взятие под контроль разрастания виртуальных машин (часть 11)
  • Взятие под контроль разрастания виртуальных машин (часть 12)
  • Взятие под контроль разрастания виртуальных машин (часть 18)

В моей предыдущей статье я объяснил, что ключ к контролю за созданием ВМ часто заключается в том, чтобы внимательно следить за записями в журнале событий. Далее я объяснил, что существует несколько различных методов, которые можно использовать для получения записей журнала через PowerShell, но в этой статье я хочу показать вам один конкретный командлет PowerShell под названием Get-WinEvent. Знание того, как использовать этот командлет, может быть чрезвычайно полезным при отслеживании создания и удаления виртуальных машин.

Так почему же я показываю вам, как использовать командлет Get-WinEvent? Ну, журналы событий сильно изменились за эти годы. Как вы уже видели в этой серии статей, существуют классические журналы событий, такие как системные журналы и журналы приложений, но есть и более новые, действительно детализированные журналы. Эти более новые журналы классифицируются операционной системой как журналы приложений и служб. Некоторые сайты называют эти журналы представлениями, а не настоящими журналами, но Microsoft действительно рассматривает их как журналы. К сожалению, нет хорошего способа получить доступ к содержимому журналов приложений и служб с помощью устаревших команд. Средство выбора для доступа к более новым журналам — Get-WinEvent.

Итак, с учетом сказанного, давайте поговорим о ведении журнала Hyper-V. Как я упоминал в одной из предыдущих статей, Hyper-V использует ряд журналов. Если мы собираемся углубиться в эти журналы с помощью PowerShell, нам нужно знать точные имена журналов (используемые внутри PowerShell). Самый простой способ получить список журналов Hyper-V — использовать следующую команду:

Get-WinEvent –ListLog Microsoft-Windows-Hyper-V*

Вы можете увидеть вывод этой команды на рисунке A.

Изображение 14887
Рисунок A: PowerShell отображает специальные журналы Hyper-V.

Так что, если бы мы захотели углубиться в отдельный журнал, чтобы начать просматривать события создания и удаления виртуальной машины. Как обсуждалось в предыдущей статье, создание виртуальной машины привязано к событию 13002. Удаление виртуальной машины отражается событием 13003. В моей предыдущей статье я неправильно указал, что эти события находятся в журнале Hyper-V-WorkerAdmin. На самом деле создание и удаление виртуальной машины регистрируется в журнале Hyper-V-VMMSAdmin.

Это поднимает важный момент. В средстве просмотра событий этот журнал указан как Hyper-V-VMMS | Админ. Однако, если вы посмотрите на снимок экрана выше, вы увидите, что PowerShell ссылается на этот журнал как Microsoft-Windows-Hyper-V-VMMS-Admin. Итак, теперь, когда мы знаем, какие записи журнала событий нас интересуют, какой журнал потенциально может содержать эти записи и какой командлет PowerShell использовать, мы уже на пути к созданию отчета о создании и удалении виртуальной машины.

Итак, давайте начнем просто. Предположим на мгновение, что вы хотите просмотреть полное содержимое журнала Microsoft-Windows-Hyper-V-VMMS-Admin. Вы можете сделать это с помощью следующей команды:

Get-WinEvent – Имя журнала Microsoft-Windows-Hyper-V-VMMS-Admin

Проблема с использованием этой команды, конечно же, заключается в том, что в этом журнале обычно тысячи записей. Нам нужно немного сузить круг вопросов. Итак, с учетом сказанного, давайте поищем в журнале события с идентификатором 13002. Для этого мы могли бы использовать эту команду:

Get-WinEvent –LogName Microsoft-Windows-Hyper-V-VMMS-Admin | Где {$_.ID –eq «13002»}

Вы можете увидеть вывод этой команды на рисунке B.

Изображение 14888
Рисунок B: Мы можем просматривать события создания виртуальной машины через PowerShell.

Таким образом, очевидно, что эта информация полезна, но пока может быть не такой уж полезной. Подумайте об этом на мгновение. Это тестовый сервер, и тем не менее там много событий. Кроме того, перечисленные события охватывают период около шести месяцев. Если мы действительно хотим, чтобы эта информация была полезной, нам нужно еще немного ее сузить.

Итак, какая информация может быть нам полезна? Может быть, лучше спросить, какие типы информации доступны? Как только мы узнаем ответ на этот вопрос, мы можем соответствующим образом отфильтровать вывод и отобразить наиболее актуальную информацию. Если вы хотите увидеть поля, доступные для фильтрации, вы можете использовать следующую команду:

Get-WinEvent –LogName Microsoft-Windows-Hyper-V-VMMS-Admin | Выбрать объект *

Вы, вероятно, захотите нажать Ctrl + C, чтобы остановить вывод раньше, потому что команда, указанная выше, отобразит массу информации. Тем не менее, он сообщит вам имена полей, которые вы можете фильтровать и / или отображать. Доступные поля включают:

Сообщение

Я БЫ

Версия

Отборочные

Уровень

Задача

Опкод

Ключевые слова

ID записи

Имя провайдера

ProviderID

имя журнала

идентификатор процесса

ThreadID

имя_машины

ID пользователя

время создания

Идентификатор действия

Код связанной активности

ContainerLog

MatchedQueryIds

Закладка

Отображаемое имя уровня

OpCodeDisplayName

TaskDisplayName

Ключевые словаОтображаемые имена

Характеристики

Вы можете увидеть, как выглядят эти поля на рисунке C.

Изображение 14889
Рисунок C. Это имена параметров, на которые можно ссылаться при запросе журналов событий.

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

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

Конечно, когда мы создаем отчеты, нужно помнить о нескольких вещах. Прежде всего, мы, вероятно, хотим исследовать не один сервер, а набор хост-серверов Hyper-V. Еще одно соображение заключается в том, что вывод, показанный выше, отображает идентификатор пользователя, а не имя пользователя, поэтому мы, вероятно, захотим перевести вывод, чтобы показать имя пользователя, выполнившего действие.

Как вы понимаете, создание отчетов такого типа потребует некоторой работы, но сейчас я хочу показать вам, как подсчитывать события создания и удаления виртуальных машин. Как отмечалось ранее, мой журнал охватывает шесть месяцев. Я пока не собираюсь сужать диапазон дат. Я просто хочу показать вам, как отображать тренды. Таким образом, если вы хотите отслеживать количество созданий и удалений виртуальных машин, вы можете сделать это, используя следующие строки кода:

$CreateEvents = Get-WinEvent –LogName Microsoft-Windows-Hyper-V-VMMS-Admin | Где {$_.ID –eq «13002»}

$DeleteEvents = Get-WinEvent –LogName Microsoft-Windows-Hyper-V-VMMS-Admin | Где {$_.ID –eq «13003»}

$CreateEvents.count

$DeleteEvents.count

Итак, что я здесь делаю, так это создаю две переменные — $CreateEvents и $DeleteEvents. Переменная $CreateEvents содержит все вхождения события 13002. Переменная $DeleteEvents содержит все вхождения события 13003. Последние две строки кода отображают, сколько раз произошли эти события. Вы можете увидеть, как этот код выглядит в действии, на рисунке D.

Изображение 14890
Рисунок D: Мы можем подсчитать количество созданных и удаленных файлов.

Вывод

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

  • Взятие под контроль разрастания виртуальных машин (часть 2)
  • Взятие под контроль разрастания виртуальных машин (часть 3)
  • Взятие под контроль разрастания виртуальных машин (часть 4)
  • Взятие под контроль разрастания виртуальных машин (часть 5)
  • Взятие под контроль разрастания виртуальных машин (часть 6)
  • Взятие под контроль разрастания виртуальных машин (часть 7)
  • Взятие под контроль разрастания виртуальных машин (часть 9)
  • Взятие под контроль разрастания виртуальных машин (часть 10)
  • Взятие под контроль разрастания виртуальных машин (часть 11)
  • Взятие под контроль разрастания виртуальных машин (часть 12)
  • Взятие под контроль разрастания виртуальных машин (часть 18)