Виртуальные машины Azure IaaS: управление диагностикой и диагностикой загрузки
При управлении Azure IaaS (инфраструктура как услуга) важно понимать, что происходит с вашими виртуальными машинами. Microsoft Azure предлагает две простые в использовании функции, и они оказывают существенное влияние на процесс устранения неполадок. К функциям относятся диагностика загрузки и настройки диагностики (гостевой уровень). В этой статье мы рассмотрим процесс, позволяющий им использовать портал Azure, а затем PowerShell для автоматизации процесса и обеспечения согласованности между вашими виртуальными машинами.
Управление диагностикой загрузки
Иногда об этом забывают, но благодаря некоторым новым функциям, представленным в Azure для виртуальных машин IaaS, использование диагностики загрузки стало стандартом и почти обязательным требованием в организациях любого размера. Например, для использования функции последовательной консоли требуется диагностика загрузки, что делает ее практически обязательной.
Мы можем включить его с помощью портала Azure, и вот как это сделать. В свойствах желаемой ВМ нажмите на диагностику загрузки. Если он не включен, вас приветствует сообщение о том, что «диагностика загрузки не настроена для этой виртуальной машины». Нажмите Настройки.
В новой колонке нажмите « Вкл», выберите или создайте учетную запись хранения и нажмите «Сохранить». Результатом этой операции будет новый контейнер в указанной учетной записи хранения. Имя нового контейнера будет использовать это соглашение об именах: bootdiagnostics-<vmName>-<vmID>, а внутри контейнера у нас будет растровый файл последнего снимка экрана виртуальной машины.
Примечание. Если вы хотите создать сценарий и использовать имя контейнера, и являются свойствами, доступными на уровне виртуальной машины.
Некоторые вещи, которые следует учитывать при планировании дизайна и хранилища диагностики загрузки для поддержки этой функции:
- В настоящее время хранилище уровня Premium не поддерживается диагностикой загрузки. Нет причин переплачивать за хранение растровых файлов.
- Все зависит от вашего дизайна, но если вы хотите, чтобы все было просто, используйте одну учетную запись хранения для управления диагностикой загрузки для каждой подписки.
- Брандмауэр учетной записи хранения и виртуальная сеть не поддерживаются. Вы должны разрешить Все сети
- Вы можете принудительно использовать диагностику загрузки как часть конвейера (при использовании Azure DevOps или аналогичных инструментов), политик Azure или модулей Runbook, чтобы убедиться, что вся ваша инфраструктура соответствует требованиям.
Мы можем использовать PowerShell, чтобы включить эту функцию с помощью следующего командлета. Мы используем Azure CloudShell, поэтому можем видеть изменения практически в реальном времени, как показано на изображении ниже.
Get-AzVM -Name <VMName> | Set-AzVMBootDiagnostic -Enable -StorageAccountName <StorageAccountName> -ResourceGroupName <ResourceGroupName> | Обновление-AzVM
Опыт говорит, что функция включается за несколько секунд. Однако в документации Microsoft указано, что отображение растрового изображения в учетной записи хранения может занять до 10 минут.
Если вы используете PowerShell, вы можете увидеть некоторые возможности для проверки и создания отчетов. Вот несколько фрагментов кода, которые помогут с базовыми отчетами, и вы можете разработать более сложные сценарии из приведенных ниже примеров.
Если вы хотите проверить, включена ли для одной виртуальной машины функция диагностики загрузки. Можно использовать следующий командлет.
(Get-AzVM -Name <VMName>).DiagnosticsProfile.BootDiagnostics.Enabled
Если вам нужен полный отчет обо всех ваших виртуальных машинах и их текущем состоянии , следующий код предоставит эту информацию.
$VMs = Get-AzVM ForEach ($vm в $VM){ $tmpLine = $VM.Name + " --BootDiagnostics--> " + $VM.DiagnosticsProfile.BootDiagnostics.Enabled $tmpLine }
Если вы хотите перечислить только виртуальные машины, для которых не включена функция диагностики загрузки, запустите этот командлет:
Get-AzVM | Where-Object {$_.DiagnosticsProfile.BootDiagnostics.Enabled -eq $False}
Управление параметрами диагностики виртуальной машины Azure
По умолчанию все показатели виртуальных машин поступают с хоста (узла виртуализации), и их видимость внутри виртуальной машины ограничена. Однако они могут предоставлять базовые показатели, такие как использование ЦП, диска и сети.
Чтобы лучше видеть, что происходит внутри виртуальной машины, требуется установка агента. Расширение виртуальной машины будет развертывать агент диагностики Azure как часть процесса. Чтобы включить использование портала, нажмите Включить мониторинг на уровне гостя и подождите несколько минут, пока процесс завершится.
Результатом этой операции является новое расширение с именем Microsoft.Insights.VMDiagnosticsSettings, добавленное к виртуальной машине, новая учетная запись хранения, созданная для хранения дополнительной информации о ее (имя новой учетной записи хранения представляет собой комбинацию имени группы ресурсов). где размещена виртуальная машина, добавленная строкой и случайным числом).
Основные настройки мониторинга уже установлены. Однако облачные администраторы имеют полный контроль над тонкой настройкой всех областей мониторинга в соответствии со своими требованиями.
Запуск PowerShell
Использование PowerShell не так просто, но в то же время позволяет согласовать и настроить несколько ресурсов из одного кода.
Первый шаг — создать учетную запись хранения, в которой будут храниться все диагностические параметры ваших виртуальных машин. Вы можете использовать тот же, который вы применяете для , или использовать отдельный. Обязательно запишите имя учетной записи хранения, потому что оно понадобится нам позже.
Второй шаг — настройка шаблона. Давайте используем виртуальную машину, которую мы только что включили вручную, и изменим все необходимые параметры (счетчики производительности, журналы и т. д.).
Следующим шагом является создание шаблона для этих настроек. Добавьте имя виртуальной машины и ее группу ресурсов в приведенный ниже командлет, и результатом будет файл template.json со всеми параметрами, которые мы определили до сих пор с помощью портала Azure.
(Get-AzVmDiagnosticsExtension -VMName <VMName> -ResourceGroupName <ResourcegroupName>). PublicSettings | Исходный файл template.json
Есть два изменения, которые нам нужны для работы над шаблоном. Во-первых, нам нужно удалить строку 2, которая определяет учетную запись хранения. Да, удалите эту строку полностью. Во-вторых, нам нужно заменить (теперь он должен быть в строке 6) на строку <VMName>. Сохраните файл, и он будет применяться ко всем новым виртуальным машинам, поступающим на борт.
Мы собираемся использовать небольшой фрагмент кода (три строки). В первых двух строках мы определим имя виртуальной машины и учетную запись хранилища. Третья строка будет читать наш файл template.json и создаст новый только для нужной виртуальной машины, для которой мы хотим включить . В новом имени файла будет использоваться соглашение об именовании template-<VMName>.json.
$VM = Get-AzVM -Name "apvm006" $StorageAccount = "ap6vmdiag" (Get-Content ((Get-Location).Path + " emplate.json")) -replace '<VMName>', $VM.Id | Out-File ("template-" + $VM.Name + ".json") -Force
Последняя часть головоломки — включить диагностические настройки на уровне виртуальной машины, и мы можем использовать следующую строку кода (не забудьте запустить строки из предыдущего раздела, потому что нам нужны эти переменные в текущем командлете).
Set-AzVMDiagnosticsExtension -VMName $VM.Name -ResourceGroupName $VM.ResourceGroupName -DiagnosticsConfigurationPath ("template-" + $VM.Name + ".json") -StorageAccountName $StorageAccount
Процесс будет таким же (установка агента) и через некоторое время он вернет результат операции. Мы видим на портале, что параметры диагностики включены, а использует ту, которую мы определили в командлете.