Мониторинг запланированных событий для виртуальных машин Windows
Область применения: Виртуальные машины ✔️ Виртуальные машины 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
Проверьте состояние службы и убедитесь, что она запущена.
.\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 выступает в качестве репозитория, и мы настроим сбор журналов событий для получения журналов приложений с виртуальной машины — сборщика.
Чтобы маршрутизировать запланированные события в журнал событий, сохраненный в качестве журнала приложений нашей службой, необходимо подключить виртуальную машину к рабочей области Log Analytics.
Настройка сбора данных
Откройте портал Azure.
В строке поиска в верхней части введите рабочие области Log Analytics и выберите его из результатов поиска.
Выберите созданную рабочую область, чтобы открыть ее страницу.
В разделе "Параметры" выберите "Агенты" и щелкните Виртуальные машины.
На вкладке "Серверы Windows" щелкните "Правила сбора данных".
Введите вкладку "Сбор и доставка " и нажмите кнопку "Добавить источник данных"
На вкладке "Источник данных" выберите журналы событий Windows в раскрывающемся списке.
Выберите журналы событий, которые вы хотите собрать. Убедитесь, что выбраны ОШИБКИ, ПРЕДУПРЕЖДЕНИЯ и СВЕДЕНИЯ .
Нажмите кнопку " Далее": назначение >
На вкладке "Назначение " нажмите кнопку "Добавить назначение".
Заполните разделы "Тип назначения", "Подписка" и "Сведения о назначении" с помощью виртуальной машины сборщика и сведений о подписке.
После выбора правильной виртуальной машины агент Microsoft Monitoring будет автоматически установлен на виртуальной машине. Подключение виртуальной машины к рабочей области и установка расширения займет несколько минут.
Примечание.
Существует некоторая задержка, и может потребоваться до 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.