Мониторинг и оповещение о событиях в журналах Windows: триггеры событий

В Windows Server 2008 (Vista) появился новый функционал, позволяющий привязать задание планировщика к любому событию в журналах системы. Благодаря этой возможности администратор может на любое событие Windows назначить выполнение определенного скрипта или отправку оповещения по электронной почты. Разберемся с этой возможностью подробнее.

Возможность запуска задач при наступлении определенных событий Windows основана на тесной интеграции Task Scheduler и Event Viewer . Назначить задание планировщика на любое событие Windows можно прямо из консоли журнала просмотр события (Event Viewer). В качестве реакции на произошедшее событие планировщик может запустить скрипт или отправить почтовое уведомление администратору (или любому другому пользователю).

Допустим, наша задача – настроить оповестить администратора безопасности о блокировке учетной записи пользователя в Active Directory.

Совет . Мы выбрали это события для наглядности. На самом деле спектр применения этого функционала довольно широк. Это могут быть, к примеру, оповещения об остановке определенной службы Windows, запуск определенной программы по завершению резервного копирования Exchange , оповещение об изменении в группах безопасности Active Directory или изменениях в определенных папках или файлах и т.п.

Событие блокировки учетной записи в AD отмечается на контроллере домена в журнале Security (Безопасность). Event ID события блокировки – 4740 . Открываем консоль журнала событий Windows ( Event Viewer — eventvwr.msc ) и ищем интересующее нас событие. Щелкаем по нему ПКМ и выбираем пункт Attach Task To This Event (Прикрепить задачу к этому событию).

Attach Task To This Event - Прикрепить задачу к этому событию Запускается мастер создания нового задания планировщика. Мастер предложит указать имя задания. Оно генерируется автоматически — Security_Microsoft-Windows-Security-Auditing_4740 и нас устраивает.

Security_Microsoft-Windows-Security-Auditing_4740 На следующем шаге указаны вид журнала событий, источник и Event ID события (все поля заполняются автоматически и не доступны для редактирования на этом шаге).

Выбор журнала событий и кода (Event ID) Далее предлагается выбрать тип реакции на событие. Возможны следующие варианты:

  • Start a program – запуск программы (скрипта)
  • Send an e-mail – отправка почтового уведомления
  • Display a message – отображение сообщения в консоли

Тип действия на событие Нас интересует оповещение по Email. Указываем отправителя, получателя, адрес SMTP сервера, тему и текст письма.

Парамеры почтового уведомления о событии На последнем шаге мастера можно посмотреть получившиеся настройки триггера. В результате в планировщике задач появится новое задание, привязанное к нашему событию. Откроем консоль Task Scheduler (в Administrative Tools). Созданное задание можно найти в разделе Task Scheduler Library -> Event Viewer Tasks .

Event Viewer Tasks - задания, привязанные к журналам системы Здесь же можно изменить настройки триггера события и принудительно его запустить, протестировав реакцию на событие.

Параметры задания

Совет . Если нужно один триггер привязать к множеству EventID, их нужно указывать через запятую.

Триггер является активным. Теперь при блокировке любой учетной записи AD – на указанный email будет отправляться письмо с уведомлением.

Почтовое уведомление о событии

Примечание . Аналогичный функционал в Windows Server 2003 и более ранних версиях Windows реализовывался с помощью консольной утилиты — eventtriggers.exe . Данная утилита также позволяла отслеживать события в журналах системы и «вешать» на определенные события триггеры. Для нашего пример, когда к событию 4740 нужно привязать выполнение скрипта vbs или powershell , который отправляет письмо на ящик администратора, команда может быть такой:

eventtriggers /create /TR “Lock Account” /TK “C:WINDOWSsystem32windowspowershellv1.0powershell.exe c:scriptSendEmail.ps1″ /L Security /EID 4740

Такое уведомление не очень информативно, и для просмотра подробной информации о событии приходится открывать журнал Event Viewer. Попробуем прикрепить к письму данные из журнала событий. В этом нам поможет утилита wevtutil, позволяющая выгрузить из журналов Windows информацию о любом событии. Так, чтобы получить данные о последнем событии с кодом 4740 из журнала Security, нужно выполнить:

wevtutil qe Security /q:"*[System[(EventID=4740)]]" /f:text /rd:true /c:1

Создадим скрипт (query.cmd) из двух строчек: первая удаляет старый файл с логом, вторая – выгружает из журнала последнее событие и сохраняет его в файл лога:

del c:scriptquery.txt
wevtutil qe Security /q:"*[System[(EventID=4740)]]" /f:text /rd:true /c:1 > c:scriptquery.txt

Осталось еще раз открыть настройки созданного ранее триггера в журнале планировщика задач. На вкладке Actions добавим новое действие – запуск скрипта query.cmd. Затем нужно изменить порядок выполнения действий, перенесем его вверх списка с помощью стрелок справа (скрипт должен выполняться первым).

Порядок реакции на событие Далее отредактируем второе действие – отправку электронного письма, выбрав в качестве вложения к письму файл c:scriptquery.txt .

Примечание . В нашем примере, чтобы задание заработало корректно, нужно запускать его с повышенными привилегиями. Для этого в его настройках нужно установить галку Run with highest privileges . Run with highest privileges

Протестируем задание еще раз. Теперь на почту администратора будет приходить уведомление со вложением, в котором указан данные о имени заблокированной учетной записи, времени блокировке и другой полезной информацией.

Почтовое уведомление о событии с расширенной информацией

Совет . Использование функционала триггеров событий Window для оповещения администратора о критичных проблемах на серверах не является полноценной заменой системы мониторинга, такой как System Center Operations Manager и Zenoss. Однако как простое встроенное средство мониторинга и оповещения для малого бизнеса, не требующего вложений во внедрение и обучение персонала, вкупе с возможностью консолидации логов сразу с нескольких серверов ( Forwarded Events ), оно вполне юзабельно.

Привязка заданий планировщика к событиям в журналах систем работает во всех версиях Windows, начиная с Windows Server 2008 / Vista. Этот функционал позволяет быстро оповестить администратора о возникновении определенных проблем с серверов и отреагировать на них.

EnglishRussianUkrainian