Мониторинг запланированных событий для виртуальных машин Azure
Область применения: Виртуальные машины ✔️ Виртуальные машины Windows ✔️ Гибкие масштабируемые наборы ✔️ Универсальные масштабируемые наборы
Каждый день разные части Azure обновляются, чтобы обеспечить безопасность и актуальность работающих служб. Помимо запланированных обновлений могут возникать незапланированные события. Например, если обнаруживается сбой или снижение производительности оборудования, для служб Azure может потребоваться незапланированное обслуживание. Благодаря динамической миграции, обновлениям с сохранением памяти и строгому контролю последствий обновлений в большинстве случаев эти события почти прозрачны для клиентов и не влияют на работу или останавливают виртуальную машину максимум на несколько секунд. Однако для некоторых приложений даже несколько секунд замораживания виртуальной машины может привести к серьезным последствиям. Чтобы обеспечить оптимальную работу этих приложений, важно заранее знать о предстоящем обслуживании Azure. Служба "Запланированные события" предоставляет программный интерфейс для уведомления о предстоящем обслуживании и позволяет принять меры.
В этой статье мы покажем, как можно использовать запланированные события, чтобы получать уведомления о событиях обслуживания, которые могут повлиять на виртуальные машины, и создать простую автоматизацию для мониторинга и анализа.
Маршрутизация запланированных событий в Log Analytics
Служба "Запланированные события" доступна в составе Службы метаданных экземпляров Azure на каждой виртуальной машине Azure. Клиенты могут написать задачу автоматизации для запроса конечных точек виртуальных машин, чтобы найти уведомления о запланированном обслуживании и принять меры, например сохранить состояние и вывести виртуальную машину из оборота. Рекомендуется создавать задачи автоматизации для записи Запланированных событий, чтобы можно было вести журнал аудита событий обслуживания Azure.
В этой статье мы рассмотрим, как записать Запланированные события обслуживания в Log Analytics. Затем мы активируем некоторые основные действия по уведомлению, такие как отправка сообщения электронной почты команде и получение исторического представления всех событий, которые затронули ваши виртуальные машины. Для агрегирования событий и автоматизации мы будем использовать Log Analytics, но вы можете использовать любое решение мониторинга для сбора этих журналов и запуска автоматизации.
Необходимые компоненты
В этом примере необходимо создать виртуальную машину Windows в группе доступности. Запланированные события предоставляют уведомления об изменениях, которые могут повлиять на виртуальные машины в группе доступности, облачной службе, масштабируемом наборе виртуальных машин или отдельных виртуальных машинах. Мы будем использовать службу, опрашивающую запланированные события на одной из виртуальных машин, которая будет действовать в качестве сборщика для получения событий для остальных виртуальных машин в этой группе доступности.
Не удаляйте группу ресурсов в конце этого руководства.
Кроме того, необходимо создать рабочую область Log Analytics, которая будет использоваться для агрегирования информации из виртуальных машин в группе доступности.
Настройка среды
Теперь в группе доступности должно быть две начальных виртуальных машины. Теперь необходимо создать третью виртуальную машину с именем myCollectorVM
в той же группе доступности.
New-AzVm `
-ResourceGroupName "myResourceGroupAvailability" `
-Name "myCollectorVM" `
-Location "East US" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-SecurityGroupName "myNetworkSecurityGroup" `
-OpenPorts 3389 `
-PublicIpAddressName "myPublicIpAddress3" `
-AvailabilitySetName "myAvailabilitySet" `
-Credential $cred
Скачайте ZIP-файл установки проекта с GitHub.
Подключитесь к myCollectorVM, скопируйте ZIP-файл на виртуальную машину и извлеките все файлы. В виртуальной машине откройте командную строку PowerShell. Переместите запрос в папку, содержащую SchService.ps1
, например PS C:\Users\azureuser\AzureScheduledEventsService-master\AzureScheduledEventsService-master\Powershell>
, и настройте службу.
.\SchService.ps1 -Setup
Запустите службу .
.\SchService.ps1 -Start
Теперь служба будет выполнять опрос каждые 10 секунд для всех запланированных событий и утверждать события для ускорения обслуживания. Запланированные события записывают следующие события: заморозка, перезагрузка, повторное развертывание и вытеснение. Обратите внимание, что можно расширить скрипт, чтобы запустить меры по смягчению последствий до утверждения события.
Проверьте состояние службы и убедитесь, что она запущена.
.\SchService.ps1 -status
Вернутся выходные данные: Running
.
Теперь служба будет выполнять опрос каждые 10 секунд для всех запланированных событий и утверждать события для ускорения обслуживания. Запланированные события записывают следующие события: заморозка, перезагрузка, повторное развертывание и вытеснение. Можно расширить скрипт, чтобы запустить меры по смягчению последствий до утверждения события.
Если любое из указанных выше событий записывается службой "Запланированные события", оно будет зарегистрировано в журнале событий приложений с указанием состояния события, типа события, ресурсов (имена виртуальных машин) и NotBefore (минимальный период уведомления). События с идентификатором 1234 можно найти в журнале событий приложения.
После настройки и запуска службы она регистрирует события в журналах приложений Windows. Чтобы убедиться, что это работает, перезапустите одну из виртуальных машин в группе доступности, и вы увидите событие, регистрируемое в средстве просмотра событий в разделе "Журналы Windows > Журнал приложений", где отображается перезапущенная виртуальная машина.
Когда события записываются службой "Запланированные события", они регистрируются в журнале событий приложений с указанием состояния события, типа события, ресурсов (имя виртуальной машины) и NotBefore (минимальный период уведомления). События с идентификатором 1234 можно найти в журнале событий приложения.
Примечание.
В этом примере виртуальные машины находятся в группе доступности, что позволило нам назначить одну виртуальную машину в качестве сборщика для прослушивания и маршрутизации запланированных событий в рабочую область Log Analytics. При наличии автономных виртуальных машин можно запустить службу на каждой виртуальной машине, а затем подключить их по отдельности к рабочей области log Analytics.
Для нашей конфигурации мы выбрали Windows, но вы можете разработать аналогичное решение в Linux.
В любой момент можно отключить или удалить службу "Запланированное событие" с помощью параметров –stop
и –remove
.
Подключение к рабочей области
Теперь необходимо подключить рабочую область Log Analytics к виртуальной машине — сборщику. Рабочая область Log Analytics выступает в качестве репозитория, и мы настроим сбор журналов событий для получения журналов приложений с виртуальной машины — сборщика.
Чтобы направить Запланированные события в журнал событий, который будет сохранен в качестве журнала приложений нашей службой, необходимо подключить виртуальную машину к рабочей области Log Analytics.
Откройте страницу для созданной рабочей области.
В разделе Подключение к источнику данных выберите Виртуальные машины Azure.
Найдите и выберите myCollectorVM.
На новой странице для myCollectorVM выберите Подключить.
Эта операция устанавливает Microsoft Monitoring Agent на виртуальной машине. Подключение виртуальной машины к рабочей области и установка расширения займет несколько минут.
Настройка рабочей области
Откройте страницу рабочей области и выберите Дополнительные параметры.
Выберите Данные вменю слева и нажмите Журналы событий Windows.
В поле Сборка из следующих журналов событий начните вводить приложение, а затем выберите Приложение из списка.
Оставьте пункты ОШИБКА, ПРЕДУПРЕЖДЕНИЕ и ИНФОРМАЦИЯ выбранными и нажмите Сохранить, чтобы сохранить параметры.
Примечание.
Будет небольшая задержка, и может пройти до 10 минут, прежде чем журнал будет доступен.
Создание правила генерации оповещений с помощью Azure Monitor
После отправки событий в Log Analytics можно выполнить следующий запрос, чтобы найти запланированные события.
В верхней части страницы выберите Журналы и вставьте в текстовое поле следующий текст:
Event | where EventLog == "Application" and Source contains "AzureScheduledEvents" and RenderedDescription contains "Scheduled" and RenderedDescription contains "EventStatus" | project TimeGenerated, RenderedDescription | extend ReqJson= parse_json(RenderedDescription) | extend EventId = ReqJson["EventId"] ,EventStatus = ReqJson["EventStatus"] ,EventType = ReqJson["EventType"] ,NotBefore = ReqJson["NotBefore"] ,ResourceType = ReqJson["ResourceType"] ,Resources = ReqJson["Resources"] | project-away RenderedDescription,ReqJson
Нажмите Сохранить, а затем введите в качестве имени
ogQuery
, оставьте в качестве типа Запрос и введитеVMLogs
для параметра Категория, после чего выберите Сохранить.Выберите Новое правило генерации оповещений.
На странице Создание правила оставьте значение
collectorworkspace
для параметра Ресурс.В разделе Условие выберите запись Каждый раз, когда поиск клиента по журналу — <вход не определен>. Откроется страница Настройка логики сигналов.
В разделе Пороговое значение введите 0 и нажмите Готово.
В разделе Действия выберите Создать группу действий. Откроется страница Добавить группу действий.
В поле Имя группы действий введите myActionGroup.
В поле Короткое имя введите myActionGroup.
В разделе Группа ресурсов выберите myResourceGroupAvailability.
В разделе "Действия" в поле ИМЯ ДЕЙСТВИЯ введите Электронная почта, а затем выберите Электронная почта, SMS, push-уведомление, голосовой вызов. Откроется страница Электронная почта, SMS, push-уведомление, голосовой вызов.
Выберите Электронная почта, введите адрес электронной почты и нажмите кнопку ОК.
На странице Добавить группу действий нажмите ОК.
На странице Создание правила в разделе СВЕДЕНИЯ О ПРЕДУПРЕЖДЕНИИ введите myAlert для параметра Имя правила генерации оповещений, а затем введите Правило генерации оповещений по электронной почте в поле Описание.
Когда закончите, выберите Создать правило генерации оповещений.
Перезапустите одну из виртуальных машин в группе доступности. В течение нескольких минут вы получите сообщение электронной почты о том, что оповещение активировано.
Чтобы управлять правилами генерации оповещений, перейдите в группу ресурсов, выберите Оповещения в меню слева, а затем выберите Управление правилами генерации оповещений в верхней части страницы.
Следующие шаги
Дополнительные сведения см. на странице Служба запланированных событий на сайте GitHub.