Некоторое время назад возникла задача отслеживать предупреждения и сообщения об ошибках в журнале событий службы каталогов. Нужно было написать скрипт, который бы раз в пять минут смотрел журнал событий и при появлении в нем предупреждения или ошибки создавал файл с записями этих проблем и отправлял письмо на электронный адрес администратора.
В Windows 2008 это все решается просто: из журнала событий с помощью “помощника” создаем скрипт и он тихо работает, отсылает письма при возникновении проблем. Но у меня домен на Windows 2003, семь контролеров домена, такой функции в 2003 нет. Задача решилась написанием сервиса, а потом и дополнительными программами для настройки этого сервиса. В результате сервис раз в пять минут проверяет журнал событий и, если там появляется предупреждение или ошибка, создает файл и отправляет его на мой электронный адрес как вложение. Получив такое письмо “счастья”, я спокойно оцениваю ситуация и принимаю решение о дальнейших своих действиях.
Теперь краткое описание сервиса и утилит к нему:
EventLogWatcher.exe – это сам сервис. Копируем его в любую директорию на сервере и, используя утилиту InstallUtil.exe из framework 4 от Microsoft, регистрируем сервис в системе. По умолчанию сервис стоит в режиме “авто”, но не запущен.
Для того чтобы его запустить, нужно внести изменения в конфигурацию этого сервиса. Это делается с помощью программы EventLogWatcher Control.exe

При запуске утилиты, надеюсь, понятно, какие нужно внести изменения. (Мне нужно было отслеживать службу каталогов, но я на всякий случай добавил возможность выбора других журналов). Теперь можем запустить сервис EventLogWatcher и ждать писем “счастья”.
Но они могут и не прийти из-за того, что по умолчанию в журнале событий службы каталогов регистрируются только критические ошибки, т.е. когда система уже вышла из-под контроля администратора. Для того чтобы система стала более разговорчивой, можно открыть реестр и внести изменения. Для того чтобы не открывать лишний раз реестр, и была написана следующая утилита NTDSDiagnostics.exe.

Для каждого параметра выбираем уровень информативности от нуля до пяти (0 – в журнале регистрируются только критические ошибки, 5 – максимальный уровень записи событий).
Скачать программы можно здесь: https://github.com/MrDamians/EventLogWatcher (.NET Framework 4.0)