Анализ журналов событий — это так просто!

Журналы событий Windows содержат ценную информацию о состоянии компьютера, системе безопасности, приложениях и учетных записях пользователей. Анализ этих данных может стать важным элементом системы управления корпоративной сетью Windows. К сожалению, большинство современных инструментов управления или являются платными, или требуют опыта программирования сценариев WMI и владения языком запросов SQL. Компания Sysinternals предлагает для сбора данных из журналов событий в корпоративной сети бесплатную утилиту PsLoglist. Она позволяет с помощью простого и гибкого интерфейса командной строки собирать данные из журналов в корпоративной сети, выбирать отдельные категории событий (по источнику или идентификатору события) и указывать диапазоны времени. PsLoglist может работать на всех версиях, начиная с Windows NT 4.0, включая 64-разрядные редакции.

Как это делается

На экране 1 приведена справка по параметрам запуска командной строки. При запуске PsLoglist без параметров утилита распечатывает полное содержимое журнала системы System локального компьютера. На экране 2 приведен пример результатов работы PsLoglist — эта информация доступна для просмотра через программу просмотра событий Windows Event Viewer, включая номер события (в квадратных скобках), источник, тип, компьютер, отметку времени, идентификатор и текст сообщения.

Когда требуется вывести содержимое другого журнала (Security, Application, DNS), в командной строке при запуске утилиты нужно указать первые буквы названия журнала. Например, ниже приведена команда для вывода содержимого существующего на контроллерах домена (DC) журнала службы репликации файлов (File Replication Service)

psloglist file

PsLoglist позволяет очистить журнал событий после выдачи содержимого, для этого используется ключ -c

psloglist file -c

Просмотр локальных журналов на сервере позволяет получить ценную информацию, а благодаря возможности обращения к журналам удаленных компьютеров PsLoglist способен просто творить чудеса. Для получения доступа к удаленному компьютеру достаточно в командной строке указать имя компьютера с префиксом . Поскольку для обращения к удаленным журналам необходимо обладать правами локального администратора, можно при необходимости указать в параметре -u имя учетной записи с соответствующими правами. Ключ -p позволяет указать пароль для этой учетной записи (если ключ -p не указан, PsLoglist выдаст приглашение для ввода пароля). При использовании альтернативной учетной записи применяется стандартный механизм аутентификации Windows, а введенный пользователем пароль скрывается и не передается по сети в открытом виде.

Ключ @ облегчает сбор данных журналов событий с группы компьютеров, имена которых перечислены в текстовом файле. Следующая команда используется для вывода событий журналов приложений с компьютеров, перечисленных в файле computers.txt

psloglist @computers.txt application

Программа Event Viewer обрабатывает текст сообщения, извлекая строки вставки (insertion strings) из записей журнала событий и вставляя эти строки в соответствующие строки формата (format strings) в библиотеках DLL источника событий, которые зарегистрированы операционной системой и приложениями. Если соответствующая библиотека DLL для источника события не зарегистрирована на локальном компьютере, то большинство программ просмотра журналов событий (в том числе и Event Viewer) показывают только строки вставки, а не полный текст для таких записей журнала, что делает их нечитаемыми. PsLoglist использует исходные динамические библиотеки с удаленных компьютеров. Для этого необходимо, чтобы на удаленном компьютере был разрешен удаленный доступ к стандартному административному ресурсу Admin$, а исходные библиотеки DLL находились в каталоге Windows. Если это условие не выполнено, PsLoglist при сборе данных не сможет собрать данные на системе и показать полный текст.

Желаемый результат

PsLoglist предлагает несколько возможностей для вывода данных. Как правило, PsLoglist используется только для сбора данных с удаленных компьютеров. Затем полученные данные импортируются в базу SQL или таблицы Microsoft Excel и обрабатываются этими средствами. Ключ -s сообщает PsLoglist, что данные должны выводиться в формате CSV, причем каждой записи соответствует одна строка результирующего файла. В Excel имеется встроенная поддержка формата CSV, импорт в базу данных также не требует усилий. Если результаты работы PsLoglist перенаправить в файл в формате CSV, можно сразу открыть сформированный файл в Excel с помощью команды start:

psloglist -s > events.csv start
 events.csv

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

psloglist -s -t 	 > events.csv

Некоторые записи журнала событий могут содержать дополнительные, называемые расширенными данные в двоичном формате, которые невозможно поместить в текст события. По умолчанию PsLoglist не выдает расширенные данные, но можно включить их в выдачу с помощью ключа -x.

Задание фильтров

Журналы событий Windows могут содержать огромный объем данных, большая часть которых отражает нормальную работу системы и не представляет особого интереса. Чтобы не просматривать сотни и тысячи записей журнала в поисках действительно важных событий, в PsLoglist включены возможности фильтрации событий.

Ключ -f позволяет задать строку символов, с которых начинается текст интересующих вас записей в журнале событий. Так, для выбора одних только сообщений об ошибках и предупреждений можно воспользоваться командой типа

psloglist -f ew

В каких-то ситуациях требуется выбрать только определенные источники событий или же исключить из выдачи сообщения от источника события. Ключ -o дает возможность указать источники событий, которые должны попасть в отчет. Ключ -q позволяет исключить указанные источники. В обоих случаях имена источников следует указывать в двойных кавычках; можно указывать списки источников, разделенные запятыми. Приведенная ниже команда выдаст события, созданные источниками Windows Update Agent и NTServicePack.

psloglist -o «windows update agent»,
»ntservicepack»

Дополнительные ключи для задания фильтров позволяют выбрать или, наоборот, исключить отдельные события по их ID. Ключ -i позволяет указать через запятую список до 10 ID событий для внесения в отчет, а ключ -e — напротив, исключить до 10 ID.

Многие системные администраторы используют PsLoglist в сценариях для ежедневного анализа событий предыдущего дня. Ключ -d позволяет задать максимальный возраст в днях событий для выборки, т. е. более старые события выводиться не будут. Аналогично ключ -h позволяет указать максимальный возраст в часах. Можно также выдать события за определенный диапазон дней, указав ключ -b и начальную/конечную даты (используется формат даты dd/mm/yy).

Еще один интересный ключ — это -w, который предписывает PsLoglist выдать записи, удовлетворяющие указанным в командной строке критериям, затем подождать и выдать очередную порцию событий, произошедших за указанный интервал времени. Этот фильтр пригодится для организации мониторинга системных событий в реальном времени с возможностью программирования реакции на определенные события или их комбинации.

PsLoglist — удобный и надежный инструмент для работы с журналами Windows, позволяющий организовать систему мониторинга и анализа журналов в корпоративной сети. Благодаря богатому набору ключей PsLoglist можно использовать для решения широкого круга административных задач. PsLoglist можно бесплатно загрузить с сайта http://www.sysinternals.com/utilities/psloglist.html.

Марк Русинович - Редактор Windows & .NET Magazine, автор многих популярных утилит для Windows, в том числе Process Explorer и Regmon. mark@sysinternals.com