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

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

Введение

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

Иногда вам просто нужно получить краткий обзор вашей среды VMware. В других случаях вы можете хранить историческую информацию вне vCenter/ESX, чтобы манипулировать ею в других инструментах. С PowerCLI получить некоторую грязную статистику довольно просто. PowerShell также предоставляет командлеты для подключения к базе данных, которые позволяют записывать статистические данные в базу данных SQL Server. Позже в этой серии я покажу вам, как получить соответствующую информацию с сервера ESX, а также покажу, как вы можете записать часть этой информации в базу данных для последующего просмотра.

В первой части — этой части — мы сосредоточимся на получении общей информации о сервере ESX.

Шаг 1. Получите PowerCLI

Прежде всего, убедитесь, что на вашем компьютере установлен PowerShell. Если вы используете Windows 7 на рабочем столе, все должно быть готово. Если вы используете более старую версию Windows, используйте своего друга Google, чтобы узнать, как выполнить это начальное условие.

Далее вам нужно получить PowerCLI, который можно загрузить с VMware. PowerCLI — это оснастка, которая работает с PowerShell и добавляет более 200 команд к этому мощному языку сценариев. Во время установки PowerShell вы можете получить уведомление о том, что одновременно будут установлены другие необходимые компоненты.

Шаг 2. Измените политику выполнения скриптов по умолчанию

После установки инструмента запустите командную строку PowerCLI, выбрав «Пуск» > «Все программы» > VMware > VMware vSphere PowerCLI. Чтобы запустить PowerCLI от имени администратора, щелкните правой кнопкой мыши параметр VMware vSphere PowerCLI и в контекстном меню выберите «Запуск от имени администратора».

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

set-executionpolicy удаленно подписанный

Эта команда настроила PowerCLI для запуска локальных сценариев, не беспокоя вас, но требует, чтобы сценарии, загруженные из Интернета, были подписаны доверенным издателем. Если вы не выполните эту команду, вы получите ошибки в PowerCLI, которые могут повлиять на выполнение скрипта.

Изображение 27631
Рисунок 1 : Политика удаленного выполнения PowerShell

Шаг 3. Подключитесь к хосту ESX.

Для примеров, которые вы увидите здесь, vCenter не требуется. Вы можете напрямую подключиться к хосту ESX, на котором вы можете запускать самые разные командлеты (термин PowerShell для команд). Командлет, который инициирует подключение к вашему хосту ESX, называется Connect-VIServer.

При использовании этого командлета Connect-VIServer вам необходимо указать имя или IP-адрес вашего сервера vSphere, протокол подключения — HTTP или HTTPS — который вы хотите использовать, а также имя пользователя и пароль для пользователя с достаточными правами для опроса сервера для статистика. Для моего лабораторного сервера я использую следующую команду:

Connect-VIServer -Server 192.168.200.1 -Protocol https -User root -Password passwordиди сюда

В случае успешного подключения вам будет представлена информация о подключении.

Изображение 27632
Рисунок 2. Соединение установлено успешно.

Шаг 4. Начните с основ

Прежде чем мы двинемся дальше, убедитесь, что вы понимаете, как получить помощь в PowerCLI. В частности, чтобы получить справку по синтаксису команды, введите имя_команды -?. Это предоставит вам информацию о команде. Вы также можете использовать команду get-help для получения более подробной информации. Используйте следующим образом:

  • get-help имя_команды -examples. Иногда самый быстрый способ изучить синтаксис команд — увидеть их в действии.
  • Get-help имя_команды -detailed. Получите дополнительную информацию о команде, включая описания параметров и примеры.
  • Get-help имя_команды -full. Отображает всю доступную справку по команде, включая техническую информацию о ее параметрах.

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

Получить информацию о самом хосте

Начав с более высокого уровня, давайте взглянем на физический компонент — сам хост ESX — прежде чем погрузиться в изучение виртуального уровня. PowerCLI предоставляет команду get-vmhost, которая позволяет собирать подробную информацию о хосте, включая некоторые критически важные статистические данные об использовании.

Чтобы использовать эту команду, просто введите get-vmhost в командной строке PowerCLI. Вы получите результат, подобный показанному ниже на рисунке 3.

Изображение 27633
Рисунок 3. Результаты get-vmhost по умолчанию

Глядя на рис. 3, вы можете увидеть, что, хотя там есть некоторая полезная информация, похоже, что большая ее часть утеряна. Вы можете увидеть текущее состояние питания системы, использование ЦП, а также максимальное и используемое в настоящее время ОЗУ, а также общий объем ОЗУ на хосте. Тем не менее, вы не можете увидеть многое, кроме того, что видно. Представление результатов, которое вы видите на рис. 3, представляет собой выходные данные PowerShell в формате таблицы по умолчанию.

Вы можете разблокировать гораздо больше с помощью команды PowerShell format-list, которая форматирует все выходные данные в виде списка. Чтобы использовать список форматов, обычно сокращенно «fl» в PowerShell, используйте символ вертикальной черты «|» для передачи результатов get-vmhost инструменту списка форматов. На рисунке 4 я выполнил команду get-vmhost | fl, и вы можете видеть, что результаты кардинально отличаются и намного более дружелюбны.

Изображение 27634
Рис. 4. Вывод в формате списка

Как я уже упоминал, здесь есть полезная информация, которая может помочь вам понять, как работает ваш сервер ESX. Перечислены все соответствующие сведения о физической среде, включая марку и модель сервера, тип ЦП, количество ядер ЦП, общую мощность ЦП, общий объем ОЗУ, используемые в настоящее время ЦП и ОЗУ, а также версию ESX/ESXi, которая установлена. установлены.

Вот еще один способ использования команды get-vmhost для получения более подробной информации об установке продукта ESX/ESXi:

Получить-VMHost | foreach-object {(Get-View $_.ID).Config.Product }

Небольшое объяснение в порядке. Вот как работает эта команда:

  • Get-vmhost — вы уже знаете назначение этой команды.
  • Символ вертикальной черты (|) — сообщает PowerShell о необходимости запуска результатов предыдущей команды — в данном случае Get-VMhost — в следующей части процесса.
  • Foreach-object — подумайте, что должно произойти, если вы запустите команду для объекта, для которого есть несколько результатов. Возможно, например, команда get-vmhost возвращает более одного сервера ESX. Команда PowerShell foreach-object указывает PowerShell выполнить следующую команду (в данном случае ту, которая начинается с Get-View) для каждого объекта, возвращенного предыдущей командой.
  • Get-view — мы еще будем работать с этой командой в следующей части этой серии. Get-view возвращает объекты представления vSphere.Net, соответствующие указанным критериям поиска. Командлет извлекает объекты представления vSphere.NET, указанные по их идентификаторам или соответствующим объектам инвентаризации vSphere.
  • $_.ID — Часть $ этой части команды указывает PowerShell работать с «выбранным в данный момент объектом». В основном это означает, что вам не нужно заранее выяснять точное имя для всех ваших серверов ESX и использовать эти конкретные имена в этой команде. Знак доллара позволяет вам легче обобщать и получать ту же информацию, делая скрипт более гибким. Это называется конвейерной переменной.
  • Конфиг. продукт – мы поговорим об этом подробнее в следующей части этой серии. А пока поймите, что на самом деле это вышеупомянутые критерии поиска, которые сообщают PowerCLI, какая именно информация должна быть отобрана с хоста ESX.

Получить список виртуальных машин на хосте

Вы только что узнали, как получить информацию о вашем хосте, так что давайте перейдем к следующему уровню: к виртуальным машинам, размещенным на физическом сервере ESX, который мы только что рассмотрели. Здесь в игру вступает команда get-vm. Команда get-vm позволяет получить список виртуальных машин, работающих на сервере. Как и в случае с командой get-vmhost, используйте инструмент «fl», чтобы получить более подробную информацию о каждой виртуальной машине. На следующих двух рисунках вы можете видеть, что прямо сейчас на этом хосте работают три виртуальные машины, и две из них находятся во включенном состоянии. Вам также предоставляется имя виртуальной машины, количество назначенных виртуальных процессоров и объем оперативной памяти, выделенной для виртуальной машины.

Изображение 27635
Рис. 5. Вывод команды get-vm в виде таблицы

Изображение 27636
Рис. 6. Вывод команды get-vm в виде списка

Получить основные сведения о госте

Следующий командлет, о котором я расскажу вам в этой статье, называется get-vmguest. Этот командлет требует указать имя виртуальной машины. После этого команда возвращает некоторую информацию о состоянии этой конкретной виртуальной машины, включая текущую операционную систему, состояние выполнения, имя хоста и размеры экрана. На рис. 4 видно, что я использовал команду get-vmguest Win7-USB | fl, чтобы вернуть информацию об имени виртуальной машины Win7-USB.

Изображение 27637
Рис . 7. Результаты команды get-vmguest Win7-USB | фл

Получите некоторую информацию о ресурсах — различные типы объектов

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

Get-harddisk, как следует из названия, — это команда PowerShell, которая извлекает информацию о хранилище с разных уровней в зависимости от объекта, который вы предоставляете этой команде.

На рис. 8 показаны результаты команды get-harddisk win7-usb | эт. Win7-USB — одна из моих виртуальных машин.

Изображение 27638
Рисунок 8 : Результаты get-harddisk для одной виртуальной машины

Теперь давайте рассмотрим ту же команду, но на этот раз мы будем использовать параметр -datastore и укажем имя хранилища данных, размещенного на хосте ESX. В этом случае хранилище данных называется datastore1. Следовательно, я буду использовать команду get-harddisk -datastore datastore1. На рис. 9 показаны результаты выполнения этой команды в виде таблицы. На рис. 10 показаны выходные данные в виде списка.

Изображение 27639
Рис . 9. Информация о хранилище сервера ESX — табличная форма

Изображение 27640
Рис . 10. Информация о хранилище ESX — форма списка

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

Резюме

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