пятница, 19 февраля 2016 г.

Оповещение о событиях в журналах Windows по e-mail

С появлением Windows 2008 у системных администраторов появилась более удобная возможность использовать штатный функционал операционной системы для выполнения задач по мониторингу за работой системы. И пусть это не отменяет потребности крупных инфраструктур в полноценных системах мониторинга, но для небольших компаний может стать неплохим подспорьем для системных администраторов. Об одной из таких функций, отправкой электронного сообщения на указанный e-mail, поговорим ниже.

Функция отправки сообщения по событию безусловно удобна, но параметрах настройки данного типа уведомлений в явном виде нет возможности отправить сам текст события, и за подробностями необходимо обращаться непосредственно к самому журналу событий. В зависимости от того, в какой консоли выполняется настройка окно с параметрами отправки электронного сообщения может выглядеть так:


Или так:




Как видно выбор параметров не очень велик.
И все-таки, как быть, если хочется получить как можно больше информации вместе с оповещением?
Для это можно воспользоваться двумя способами.

Способ №1

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

После этого Экспортируем данное задание в xml. После чего само задание удаляем из консоли заданий по расписанию.

После этого переходим в папку, куда было сохранено задание в формате .xml и открываем полученный файл для редактирования любым удобным редактором.
Нам необходимо найти тег <EventTrigger>, после которого нужно вставить блок <ValueQueries> с параметрами из нужного нам события. Параметры эти можно увидеть открыв событие в режиме XML



Это блок выглядит примерно так:
<ValueQueries><Value name ="EventComp">Event/System/Computer</Value></ValueQueries>

Или, например
<ValueQueries><Value name ="EventObject">Event/EventData/Data[@Name='ObjectName']</Value></ValueQueries>

Можно добавить несколько переменных сразу:
<ValueQueries>
<Value name ="EventComp">Event/System/Computer</Value><Value name ="EventObject">Event/EventData/Data[@Name='ObjectName']</Value></ValueQueries>

Затем в тело письма нужно добавить вывод переменных, указанных в блоке <ValueQueries>. Сделать это можно через GUI консоли заданий по расписанию, или же отредактировав соответствующий блок того же xml-файла (Task /Actions/SendEmail/Body).
Переменные вставляются в формате $(ValueName), в нашем случае это будет $(EventComp) и $(EventObject)
<Body>$(EventComp), $(EventObject)</Body>
или 




После этого сохраняем полученный файл XML и импортируем его в консоли заданий по расписанию.

Способ №2

Попробуем прикрепить к письму данные из журнала событий. В этом нам поможет утилита wevtutil, позволяющая выгрузить из журналов Windows информацию о любом событии. Так, чтобы получить данные о последнем событии с кодом 4659 из журнала Security, нужно выполнить:
wevtutil qe Security /q:"*[System[(EventID=4659)]]" /f:text /rd:true /c:1
Создадим скрипт (GetEventTxt.cmd) из двух строчек: первая удаляет старый файл с логом, вторая – выгружает из журнала последнее событие и сохраняет его в файл лога:
del "C:\Temp\Event.txt"
wevtutil qe Security /q:"*[System[(EventID=4659)]]" /f:text /rd:true /c:1 > "C:\Temp\Event.txt"
Осталось еще раз открыть настройки созданного ранее триггера в журнале планировщика задач. На вкладке Actions добавим новое действие – запуск скрипта GetEventTxt.cmd. Затем нужно изменить порядок выполнения действий, перенесем его вверх списка с помощью стрелок справа (скрипт должен выполняться первым).

Далее отредактируем второе действие – отправку электронного письма, выбрав в качестве вложения к письму файл C:\Temp\Event.txt

Теперь на почту администратора будет приходить уведомление со вложением, в котором указан данные об отслеживаемом событии

Использованные материалы:

Комментариев нет:

Отправить комментарий