Используйте PowerCLI для получения быстрой статистики (часть 2)

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

подпишитесь на нашу рассылку новостей об обновлениях статей VirtualizationAdmin.com в режиме реального времени

Введение

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

Вы уже знаете, что вам нужно понять свое оборудование, прежде чем вы сможете начать оценивать связанные показатели. В конце концов, значение «30 IOPS» ничего не значит без контекста. Это 30 IOPS между хостом ESX и массивом хранения или 30 IOPS между виртуальной машиной и массивом хранения? Эти 30 операций ввода-вывода в секунду генерируются конкретным виртуальным устройством или это совокупное значение для всех виртуальных жестких дисков в виртуальной машине?

Совет

Прежде чем вы слишком углубитесь в свои приключения PowerCli, поищите действительно хороший инструмент PowerShell с графическим интерфейсом. Я использовал пробную версию инструмента Idera PowerShell Plus и нашел его фантастическим. Я также использовал бесплатную версию PowerGUI от Quest Software в прошлом для некоторых задач по написанию сценариев и также нашел, что это хороший инструмент. Однако мне особенно нравится инструмент Idera, потому что он позволяет обычным разработчикам PowerShell легко углубляться в то, что может быть сложными структурами данных. На рис. 1 показан PowerShell Plus.

Изображение 27569
Фигура

1 : Идера PowerShell Plus

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

Если вы пропустили часть 1…

Прежде чем приступить к работе, необходимо выполнить два важных шага.

  • Убедитесь, что вы настроили PowerShell, чтобы разрешить удаленное выполнение скриптов. set-executionpolicyremotesigned
  • Подключитесь к своему серверу vCenter или к отдельному хосту ESX/ESXi. Connect-VIServer -Server 192.168.200.1 -Protocol https -User root -Password passwordиди сюда

Сведения о виртуальной машине

Мы начнем с изучения того, как собрать дополнительные сведения о работающей виртуальной машине. Чтобы сделать это немного проще, мы фактически присвоим результаты команды get-vm, которую мы обсуждали в части 1 этой серии, переменной, которой мы затем можем манипулировать для получения нужной информации. Научившись, например, составлять список жестких дисков, связанных с виртуальной машиной, вы сможете получать более точную статистику в будущем.

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

$v = get-vm win7-usb

Это назначит все результаты команды get-vm win7-usb вновь созданной переменной с именем $v. В идеале, в реальном мире вы должны использовать более описательные имена переменных, но чтобы все было немного понятнее в демонстрационных целях, я использую более короткие имена.

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

Теперь давайте получим немного информации о том, что было присвоено этой переменной. Чтобы сделать это, давайте начнем с чего-то основного. Просто выполните команду $v без параметров. Вы получите что-то похожее на результат, показанный на рисунке 2.

Изображение 27570
Рис . 2. Общий вид виртуальной машины

Вы заметите, что это точно такой же вывод, который вы получили бы, если бы вместо этого выполнили get-vm win7-usb из командной строки. Это подтверждает, что мы ищем информацию для правильной виртуальной машины.

Хотя это все хорошо и хорошо, это не так интересно. Давайте рассмотрим несколько вариантов, которые предоставляют больше информации о виртуальной машине.

$v.NetworkAdapters

Эта команда отображает сетевые адаптеры, которые в настоящее время установлены на виртуальной машине, а также имя сетевого адаптера, тип, имя виртуальной сети, MAC-адрес и включена ли функция пробуждения по локальной сети.

Изображение 27571
Рис . 3. Информация о сетевом адаптере

На самом деле с такими командами вы получаете доступ к свойствам (NetworkAdapters) объекта, который вы присвоили переменной ($v).

Таблица A: Свойства объекта виртуальной машины

компакт-диски

Список устройств CD/DVD, подключенных к виртуальной машине.

Настраиваемые поля

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

DatastoreIDList

Описание

DrsAutomationLevel

Отображает уровень автоматизации DRS для виртуальной машины. Допустимые значения: valiFullyAutomated, Manual, PartiallyAutomated.

Данные расширения

Позволяет получить доступ к более подробным сведениям о виртуальной машине (из документов VMware PowerCLI 4.1: предоставление объекта View, соответствующего объекту, возвращаемому командлетом PowerCLI через свойство объекта ExtensionData)

Дискеты

Подробная информация о дисководе, подключенном к виртуальной машине

Папка

Отображает имя папки, в которой находится виртуальная машина.

FolderID

Отображает идентификатор папки для вышеуказанного

Гость

При использовании отдельно (например, $v.guest | fl) возвращает полный список параметров гостевой виртуальной машины, таких как имя операционной системы, IP-адрес гостевой машины, список назначенных дисков, размеры дисплея гостевой ОС и Дополнительная информация. (Рисунок 4)

HAIsolationResponse

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

Жесткие диски

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

HARestartPriority

Укажите приоритет перезапуска высокой доступности для новой виртуальной машины. Допустимые значения: Disabled, Low, Medium, High и ClusterRestartPriority.

Хозяин

Отображает информацию о хосте, на котором находится виртуальная машина.

Идентификатор хоста

Идентификатор хоста. В моем примере это HostSystem-ha-host.

Идентификатор

Внутренний идентификатор виртуальной машины. Для Win7-USB в моей системе это VirtualMachine-16.

ПамятьМБ

Возвращает объем памяти, выделенной виртуальной машине

Имя

Возвращает «понятное имя» виртуальной машины.

Сетевые адаптеры

Вы видели это в действии над столом. Отображает сетевые адаптеры, которые в настоящее время установлены на виртуальной машине, а также имя сетевого адаптера, тип, имя виртуальной сети, MAC-адрес и включена ли функция пробуждения по локальной сети.

Заметки

Отображает заметки, связанные с конкретной виртуальной машиной. На рис. 5 вы можете увидеть примечание, которое я предоставил в клиенте vSphere. На рисунке 6 вы видите, что происходит, когда вы извлекаете эту информацию и отображаете ее в PowerCLI.

Количество ЦП

Отображает количество виртуальных ЦП, назначенных виртуальной машине.

PersistentId

Уникальный идентификационный номер, связанный с каждой виртуальной машиной.

PowerState

Может быть PoweredOff, PoweredOn или Suspended.

ProvisionedSpaceGB

Возвращает объем пространства, выделенного виртуальной машине.

Пул ресурсов

Отображает имя пула ресурсов, в котором находится виртуальная машина. Вы можете получить много дополнительной информации о пуле ресурсов (например, получить значение резервирования ЦП с помощью $v.ResourcePool.CPUReservationMhz. На рис. 8 показан список особенностей доступного пула ресурсов.

идентификатор пула ресурсов

Идентификатор, связанный с пулом ресурсов.

UID

Другой уникальный идентификатор, связанный с виртуальной машиной. Моя система: /[email protected]:443/VirtualMachine=VirtualMachine-16/

UsbУстройства

Получает список USB-устройств, подключенных к виртуальной машине.

Используемое пространство ГБ

Объем пространства, фактически используемого виртуальной машиной

VApp

VApps, связанные с виртуальной машиной

Версия

Возвращает версию оборудования виртуальной машины. Моя виртуальная машина работает на оборудовании версии 7.

виртуальный хост

Возвращает ту же информацию, что и параметр Host.

VMHostID

То же, что и идентификатор хоста.

VMResourceConfiguration

Отображает информацию о распределении ресурсов, связанную с виртуальной машиной, включая привязку ЦП, ограничения ЦП и многое другое.

VMSwapfilePolicy

Отображает политику файла подкачки для виртуальной машины. Это может быть WithVM, Inherit или InHostDatastore.

Таблица 1

Изображение 27572
Рис . 4. Получение общей и специальной информации о гостевой операционной системе

Изображение 27573
Фигура

5 : Информация о хост-компьютере

Изображение 27574
Рис. 6. Примечания, связанные с этой виртуальной машиной

Изображение 27575
Рис. 7. Поле «Примечания», отображаемое в PowerGUI.

Изображение 27576
Рис . 8. Сведения о пуле ресурсов

Изображение 27577
Рис . 9. Конфигурация ресурсов виртуальной машины

Получение полного списка свойств

В предыдущем разделе вы узнали о том, как получить определенную информацию — свойства — связанные с виртуальной машиной, которая была записана в переменную ($v). Вы можете получить полный список свойств, связанных с объектом в этой переменной, несколькими способами.

Во-первых, вы можете просто выполнить команду $v | fl, но при этом будет упущена некоторая информация, и на самом деле есть гораздо лучший, более общий способ.

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

получить вм | свойство get-member -MemberType

Вы получите экран, подобный показанному ниже на рисунке 10.

Изображение 27578
Рис. 10. Все свойства, связанные с командой Get-VM

Часть свойства get-member –MemberType этой команды — это место, где происходит волшебство. Вы можете передать любую команду через командлет get-member, чтобы получить список свойств, связанных с этой командой. Если вы хотите перечислить методы в дополнение к свойствам для конкретной команды, вы можете опустить параметр типа члена. Попробуйте дома, выполнив get-vm | получить член.

На рисунке 10 вы можете видеть, что я использовал командлет Get-Member против Get-VMguest, чтобы получить список методов и свойств, связанных с этой командой.

Изображение 27579
Рисунок 11 : Get-Member для Get-VMGuest

Копаем немного глубже

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

Изображение 27580
Рис. 12. Два жестких диска указаны как связанные с этой виртуальной машиной.

Изображение 27581
Рис. 13. Вот полный список параметров жесткого диска.

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

Это не слишком сложно! Вы можете использовать «метод» «Получить», связанный с типом ресурса жесткого диска, чтобы получить информацию для определенного номера диска. Microsoft определяет метод PowerShell как «набор инструкций, определяющих конкретное действие, которое вы можете выполнить с этим объектом».

В этом случае попробуйте выполнить следующую команду:

$v.HardDisks.Get(1) | фл

Эта команда вернет сведения о жестком диске под номером 1 в системе, но имейте в виду, что нумерация объектов такого типа начинается с 0, поэтому на самом деле вы получаете сведения о втором жестком диске в системе, как показано на Рисунок 14.

Изображение 27582
Рис. 14. Сведения о втором жестком диске виртуальной машины

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

Резюме

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

подпишитесь на нашу рассылку новостей об обновлениях статей VirtualizationAdmin.com в режиме реального времени