Используйте PowerCLI для получения быстрой статистики (часть 2)
подпишитесь на нашу рассылку новостей об обновлениях статей 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.
Фигура 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.
Рис . 2. Общий вид виртуальной машины
Вы заметите, что это точно такой же вывод, который вы получили бы, если бы вместо этого выполнили get-vm win7-usb из командной строки. Это подтверждает, что мы ищем информацию для правильной виртуальной машины.
Хотя это все хорошо и хорошо, это не так интересно. Давайте рассмотрим несколько вариантов, которые предоставляют больше информации о виртуальной машине.
$v.NetworkAdapters
Эта команда отображает сетевые адаптеры, которые в настоящее время установлены на виртуальной машине, а также имя сетевого адаптера, тип, имя виртуальной сети, MAC-адрес и включена ли функция пробуждения по локальной сети.
Рис . 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
Рис . 4. Получение общей и специальной информации о гостевой операционной системе
Фигура 5 : Информация о хост-компьютере
Рис. 6. Примечания, связанные с этой виртуальной машиной
Рис. 7. Поле «Примечания», отображаемое в PowerGUI.
Рис . 8. Сведения о пуле ресурсов
Рис . 9. Конфигурация ресурсов виртуальной машины
Получение полного списка свойств
В предыдущем разделе вы узнали о том, как получить определенную информацию — свойства — связанные с виртуальной машиной, которая была записана в переменную ($v). Вы можете получить полный список свойств, связанных с объектом в этой переменной, несколькими способами.
Во-первых, вы можете просто выполнить команду $v | fl, но при этом будет упущена некоторая информация, и на самом деле есть гораздо лучший, более общий способ.
Используйте следующую команду, чтобы получить список всех свойств, связанных с типом объекта, опрашиваемого этой командой.
получить вм | свойство get-member -MemberType
Вы получите экран, подобный показанному ниже на рисунке 10.
Рис. 10. Все свойства, связанные с командой Get-VM
Часть свойства get-member –MemberType этой команды — это место, где происходит волшебство. Вы можете передать любую команду через командлет get-member, чтобы получить список свойств, связанных с этой командой. Если вы хотите перечислить методы в дополнение к свойствам для конкретной команды, вы можете опустить параметр типа члена. Попробуйте дома, выполнив get-vm | получить член.
На рисунке 10 вы можете видеть, что я использовал командлет Get-Member против Get-VMguest, чтобы получить список методов и свойств, связанных с этой командой.
Рисунок 11 : Get-Member для Get-VMGuest
Копаем немного глубже
Теперь давайте еще немного углубимся в переменную виртуальной машины, с которой мы работали. Этой конкретной виртуальной машине назначено два жестких диска, как показано на рисунках 12 и 13.
Рис. 12. Два жестких диска указаны как связанные с этой виртуальной машиной.
Рис. 13. Вот полный список параметров жесткого диска.
Это полезная информация, поскольку она многое говорит о хранилище, связанном с этой виртуальной машиной, включая формат хранилища (толстый, тонкий), размер диска и имя диска в виртуальной машине. Но что, если вы действительно хотите получить информацию только об одном из дисков? Как видно из приведенных выше примеров, вы видите информацию с обоих дисков.
Это не слишком сложно! Вы можете использовать «метод» «Получить», связанный с типом ресурса жесткого диска, чтобы получить информацию для определенного номера диска. Microsoft определяет метод PowerShell как «набор инструкций, определяющих конкретное действие, которое вы можете выполнить с этим объектом».
В этом случае попробуйте выполнить следующую команду:
$v.HardDisks.Get(1) | фл
Эта команда вернет сведения о жестком диске под номером 1 в системе, но имейте в виду, что нумерация объектов такого типа начинается с 0, поэтому на самом деле вы получаете сведения о втором жестком диске в системе, как показано на Рисунок 14.
Рис. 14. Сведения о втором жестком диске виртуальной машины
Существуют и другие способы, такие как команда Get-HardDisk, которые вы можете использовать для получения информации о жестком диске, но метод, который я показал выше, хранит все данные в одной переменной.
Резюме
Мы рассмотрели довольно много в этой части серии, и мы собираемся продолжить в следующей части серии.
подпишитесь на нашу рассылку новостей об обновлениях статей VirtualizationAdmin.com в режиме реального времени