|
Многие говорят, что регистрация событий и трассировка — скучное занятие. Другие жалуются на то, что в большинстве случаев журналы трассировки и событий — просто побочные продукты каких-либо других действий (например, функций отладки и самоконтроля), и что возможностям трассировки и регистрации событий уделяется недостаточное внимание. Microsoft® Windows Vista™ стремится изменить это восприятие, представляя гигантский шаг вперед в управлении в рамках предприятия. Корпорация Майкрософт в корне пересмотрела некоторые ключевые компоненты и их пользовательские интерфейсы. Служба журнала событий была создана заново с учетом потребностей предприятия, а трассировка стала существенно более быстрой и безопасной. Представьте себе, что у вас появился усовершенствованный набор инструментов для отыскания и решения проблем в жизненно важных системах. Или что вы скажете о средствах, которые позволяют специалистам технической поддержки легко собирать сведения о характерных событиях и данные трассировки с компьютера пользователя? А что, если ваши разработчики могли бы оперативно диагностировать и исправлять ошибки в развернутой системе, используя данные трассировки, отправленные пользователями? Представьте себе, что у вас появились более простые и мощные способы сбора информации и оперативного устранения неполадок — это звучит уже не так скучно, не правда ли? Что такое события? Компьютерное приложение подобно «черному ящику», который выполняет определенную функцию (или набор функций). Самые разные вещи происходят внутри этого ящика, но поскольку вы не можете заглянуть внутрь, очень трудно понять происходящее внутри. Однако приложения общаются с внешним миром — с другими программами и с пользователями. Эти «события», то есть факты общения, позволяют вам заглянуть внутрь приложения. При рассмотрении программного обеспечения событие обычно определяется как нечто, происходящее внутри программной системы, о чем сообщается внешнему миру (под внешним миром подразумеваются пользователи и другие программы). Такое происшествие обычно соответствует изменению состояния или конфигурации. Сообщение может содержать данные о текущем состоянии или конфигурации программной системы и о причинах наступивших изменений. В более широком смысле термин «событие» также употребляется в отношении способа представления таких происшествий. Есть много примеров таких представленных событий: - Объект Win32®, используемый для взаимодействия между процессами (IPC)
- Событие WMI, используемое для промежуточных (временных) уведомлений
- Событие трассировки Event Tracing for Windows (ETW), сохраненное в файлах трассировки
- Событие журнала событий, сохраненное в оперативных журналах событий, а также, возможно, помещенное в архивные файлы журнала событий
- Событие, сохраненное в файлах средствами пользовательской инфраструктуры.
Последние три примера, приведенные здесь, и есть те самые события, которые мы будем рассматривать в этой статье. Как используются события? Трассировка или зафиксированное в журнале событие представляет собой запись некоторого происшествия в программе или в операционной системе. Эти протоколы трассировки и журналы событий полезны не только разработчикам. Они служат незаменимым средством для специалистов отделов информационных технологий и служб технической поддержки, предоставляя возможность рассмотреть состояние и внутренние процессы выполняющихся приложений. Вы можете использовать такие журналы для контроля общего состояния системы. Пользуясь журналом событий, вы можете выполнить поиск любых событий, которые свидетельствуют о наличии неполадок. Например, вы можете найти событие ошибки 6 в журнале приложений, источником которого является CertificateServicesClient, и которое содержит следующее сообщение: «Сбой автоматической подачи заявки на сертификат для локальной системы (0x80070576). Существует разница настройки времени и/или даты между клиентом и сервером» Вы также можете увидеть переход компонентов из состояния неполадки обратно в состояние нормальной работы. Например, после того, как различие даты и времени было исправлено, тот же объект CertificateServiceClient опубликовал информационное событие 19 в журнале приложений, содержащее следующий текст: «Подача заявки на сертификат для : успешно получен сертификат AutoenrolledWindowsSystemComponentVerification из центра сертификации .» Такая информация исключительно полезна для поиска и устранения конфликтов и других проблем конфигурации. Эти сведения также полезны для диагностики неполадок. Вы можете найти программу и установить действия системы, которые привели к неполадке, и выяснить подробности, которые приведут вас к исходной причине. Подобным образом вы можете использовать эту информацию для оценки и решения проблем, связанных с производительностью. Журналы событий предоставляют ценные сведения, которые вы можете использовать в целях повышения безопасности вашей системы. Журналы событий могут быть использованы для обнаружения попыток несанкционированного доступа, аудита изменений в системе, обеспечения доказательства авторства и поиска неправильно настроенных компонентов. События в Windows Vista Предыдущие версии Windows® имели множество недостатков при регистрации событий и трассировке. К ним относятся ограниченная масштабируемость журнала событий (ограничение общего объема всех журналов объемом доступной памяти), производительность публикации событий (которая ограничивала, например, число событий, которые могли быть опубликованы активным контроллером домена), а также ограниченная защита событий трассировки. Windows Vista решает многие из этих проблем, предоставляя новую инфраструктуру регистрации событий и трассировки, получившую название Windows Eventing 6.0. Эта служба является расширением ETW, используемой со времени выхода Windows 2000, и заменяет службу журнала событий и программу просмотра событий. Новая служба Windows Eventing разработана специально для работы с событиями, которые сохраняются в файлах журналов для последующей проверки. (Она не предназначена для работы с временными событиями, такими как IPC и механизмы уведомлений.) При наличии безопасного и масштабируемого решения дополнительные реализации регистрации событий и трассировки утрачивают свое значение. Обратите внимание, что усовершенствования предоставлены с сохранением полной совместимости с существующими API журнала событий и ETW, таким образом, все существующие приложения будут работать без изменений. Новые способы просмотра событий Существующее средство просмотра событий уже является одной из самых популярных программ Windows среди специалистов в области информационных технологий. Новое средство просмотра событий было полностью переработано, и поскольку оно работает в среде консоли управления Microsoft (MMC) версии 3.0, его внешний вид также изменился, но остался вполне узнаваемым для того, чтобы при переходе не возникло затруднений. По-прежнему присутствуют панель дерева и список событий. Вы также можете воспользоваться знакомыми журналами приложений, системы и безопасности, расположенными в разделе журналов Windows. Однако к корневому узлу дерева добавлены новые узлы, а в узле журналов Windows появился новый журнал ForwardedEvents, который мы рассмотрим чуть позже. Самое очевидное новшество — область просмотра, расположенная ниже списка событий. Она содержит свойства просматриваемого в данный момент события. Это значит, что вам больше не нужно открывать событие двойным щелчком мыши, чтобы просмотреть его свойства, и не нужно выстраивать окна, чтобы увидеть рядом список и диалоговое окно свойств события. Разумеется, возможность просмотра свойств в диалоговом окне по двойному щелчку события мышью сохранилась. Но новое диалоговое окно не является модальным, поэтому вы можете одновременно открыть несколько диалоговых окон свойств события. Новые представления позволяют вам просматривать все интересующие вас события, сделав несколько щелчков мышью. Можно отобрать события из одного или нескольких файлов журнала и просмотреть события по отдельным кодам событий, уровням (серьезности) или периодам времени. Обратите внимание на то, что в разделе «Пользовательские представления» содержится пункт «События управления» (показан на рисунке 1). В этом представлении будут показаны все ошибки и предупреждения из различных файлов журнала, которые представляют интерес для администраторов. Рисунок 1 События управления Как же мы можем точно определить, какие журналы и события интересны администраторам? Мы определили пять отдельных типов событий и пользователей, соответствующих каждому типу. Подробности показаны на рисунке 2. Это очень общее, но, тем не менее, эффективное деление всех событий журналов событий и трассировки, которые могут быть интересны различным группам пользователей. Рисунок 2. Типы событий и их применение Тип события Описание Используется Административные | Административные события удовлетворят потребности большинства системных администраторов. Эти события имеют очень высокий уровень, и часто они дают достаточно информации для выявления неполадки и определения требуемого решения. Административные события должны, по крайней мере, содержать сведения о том, где наблюдается проблема, или указывать, когда приложение, компонент или система находится в состоянии неполадки или вернулась в нормальное состояние. Большинство административных событий представляет собой ошибки или предупреждения, и обычно эти события служат поводом для выполнения определенных действий. | Администраторы, сотрудники технической поддержки, программы контроля и анализа | Оперативные | Подобно административным событиям, оперативные события обеспечивают диагностику неполадок. Оперативные события включают не только ошибки и предупреждения. Они также сообщают пользователям о нормальной работе приложения или компонента операционной системы. Количество этих событий относительно невелико, поэтому их регистрация может быть включена без ущерба для производительности компьютера. Оперативные события используются вместе с административными событиями специалистами технической поддержки, служебными программами контроля, а также некоторыми изощренными администраторами. | Квалифицированные администраторы, сотрудники технической поддержки, программы контроля и анализа | Аудит | События аудита предоставляют хронологическую запись доступа к любым ресурсам или действий пользователей. Эти события сами по себе не свидетельствуют о сбоях или успешном выполнении программы, но сообщают о сбое или успешном выполнении действия. События аудита могут быть полностью отключены или выборочно включены с различной степенью детализации. Поддерживается аудит безопасности на уровне операционной системы (события регистрируются в журнале безопасности журнала событий). | Квалифицированные администраторы, сотрудники, выполняющие аудит безопасности, а также судебные специалисты | Аналитические | Аналитические события, не сильно отличающиеся от оперативных событий, регистрируются в процессе нормальной работы приложений и компонентов. Однако объем и степень детальности аналитических событий существенно превосходит эти параметры оперативных событий, и потому существует возможность отрицательного влияния регистрации этих событий на производительность системы. Поэтому обычно регистрация аналитических событий отключена. Для использования аналитических событий необходимо включить их регистрацию до проведения анализа и затем отключить перед проверкой файлов трассировки. | Сотрудники технической поддержки, программы контроля и анализа | Отладка | Отладочные события также являются событиями с большим объемом, и потому обычно отключены. Они используются главным образом разработчиками, и редко просматриваются специалистами отделов информационных технологий. | Разработчики | Каждый журнал в службе Windows Eventing имеет назначенный ему тип. Все события в этом журнале имеют тот же тип, что и сам журнал. Представление, показанное на рисунке 1, было определено с использованием информации о типах: оно выбирает события «ошибка» и «предостережение» из всех журналов, имеющих тип «Администратор». Архитектура службы Windows Eventing Служба Windows Eventing состоит из программных компонентов, которые обеспечивают публикацию событий программами и доставку событий в файлы журналов. Служба ETW предоставляет транспорт для передачи событий всех типов от источников публикации до назначения. Служба ETW также была пересмотрена в Windows Vista и обеспечивает повышенную производительность и безопасность. Публикация событий средствами ETW осуществляется асинхронно, и потому не влияет на эффективность работы программы, опубликовавшей событие. При получении системой нового события выполняется сбор информации о текущем контексте пользователя и процессе, опубликовавшем событие, и эта информация сохраняется внутри события. После публикации различны типы событий обрабатываются по-разному. Поскольку аналитические и отладочные события обычно поступают в больших количествах, их необходимо сохранять в файле с минимальной обработкой, чтобы не снижать производительность системы. Поэтому такие события немедленно сохраняются в файле трассировки. Административные и оперативные события встречаются достаточно редко, что позволяет выполнять дополнительную обработку без снижения производительности системы. Эти события передаются службе журнала событий, которая сохраняет их в текущих журналах событий, а также может передавать их подписчикам реального времени. Подписчики могут отбирать передаваемые им события, используя язык запросов, который мы рассмотрим ниже. Среди подписчиков имеются два, которые представляют особый интерес для специалистов отделов информационных технологий. Это — значительно усовершенствованный планировщик задач Windows Vista и служба пересылки событий, которая может применяться для отправки событий удаленному регистратору событий. Взгляд на структурированные события Распространенная жалоба в отношении журналов событий связана с тем, что они содержат много ненужных сведений. То есть, журналы забиты событиями, которые имеют небольшое значение или совсем несущественны, и за этими событиями трудно разглядеть важные. Поскольку некоторые события предоставляют немного информации, то, что кажется ненужным одному пользователю, может оказаться сокровищем для другого. Windows Vista предоставляет способ отфильтровать не интересующие в данный момент события, позволяя вам сосредоточиться на событиях, важных для вас. Механизм фильтрации основан на языке запросов для всех журналов, поддерживаемом службой журнала событий. Для работы этого механизма все события должны иметь строго определенную структуру. В предыдущих версиях журнала событий была реализована некоторая структура для событий, но она не была строго определена и была видна только API Win32. В Windows Vista события имеют строго определенную структуру. В действительности для внешнего представления событий используется язык XML с опубликованной схемой. Это дает возможность создания запросов, которые смогут собрать интересующие вас события, отфильтровывая все остальные. Поскольку используется XML, язык XPath был выбран в качестве основы для языка запросов событий. Разумеется, использование структурированных событий делает возможными новые пути автоматизации, как можно видеть на примере взаимодействия с новым планировщиком задач. Область просмотра событий теперь имеет вкладку «Подробные сведения». Такая же вкладка присутствует в диалоговом окне свойств события. При выборе вкладки подробных сведений в диалоговом окне свойств события отображается представление события в виде XML. Пример, показанный на рисунке 3, представляет собой оперативное событие, поступившее от планировщика задач. Оно состоит из двух частей. Системная часть состоит из общих сведений о событии, одинаковой для всех экземпляров данного события, а также некоторых параметров системы, зарегистрированных в момент публикации экземпляра. Раздел EventData (данные события), являющийся расширяемым, содержит структурированную информацию, переданную приложением. Рисунок 3 Представление события в виде XML Каждый файл журнала событий рассматривается как последовательность таких элементов структурированных событий. Это — логично построенное, легко читаемое представление журнала событий и архивных файлов событий. Для внутреннего хранения событий используется двоичный формат, разработанный с учетом необходимости компромисса между компактностью хранения, надежностью и эффективностью поиска. Атрибуты событий Раздел «System» данных в формате XML содержит время наступления события, идентификатор процесса, идентификатор потока, имя компьютера и идентификатор безопасности (SID) пользователя. В предыдущих версиях Windows события имели только два атрибута — идентификатор события и категорию. XML также содержит другие подробные сведения, включая свойства EventID, Level, Task, Opcode и Keywords. Рассмотрим внимательнее эти свойства. EventID и Version. Событие однозначно определяется сочетанием EventID (двухбайтовое число) и Version (однобайтовое число). Все события из одного и того же источника событий, имеющие одинаковые значения EventID и Version, имеют также и одинаковую структуру. Level. Это значение представляет собой серьезность или степень подробности события. Обычно используются предопределенные значения 1 (критическое), 2 (ошибка), 3 (предупреждение), 4 (информационное) и 5 (подробное), но поставщик событий может определить собственные значения вплоть до 255. Большие значения соответствуют событиям более высокого уровня подробности. Task. Свойство Task обычно определяет общую функциональную область поставщика событий (такую как печать, сетевые службы или интерфейс пользователя). Оно также может относиться к компоненту программы. Это свойство широко используется в событиях аудита безопасности. Каждый источник событий может определить собственные наборы значений этого двухбайтового числа. Заметьте, что значения атрибута Task часто совпадают семантически и являются расширенным набором значений атрибута Category в предыдущих версиях Windows. По этой причине программа просмотра событий показывает это значение в столбце с заголовком «Task Category». Opcode. Это — однобайтовое значение, обычно используемое для представления конкретного действия или части действия, выполненного программным обеспечением. Это значение часто используется для трассировки процессов, основанных на каких-либо действиях (таких как веб-службы, для которых действием служит определенный запрос, полученный веб-службой). Существует несколько предопределенных значений, наиболее общеупотребительными являются 1 (пуск) и 2 (стоп). Keywords Этот атрибут — маска из 56 флагов, которые могут быть установлены программой для облегчения группировки сходных событий. Каждое событие может иметь несколько установленных флагов, что говорит о принадлежности события к нескольким группам. Понятие об источниках и событиях Трудно принимать предупреждающие меры, не зная предварительно типов информации, которая может быть найдена в журналах событий и файлах трассировки. Поэтому одной из основных задач новой инфраструктуры регистрации событий было создание документации для каждого источника событий, включая данные о наборе событий и их назначениях. Для этого каждый источник событий должен составить перечень всех событий, которые он будет когда-либо публиковать, указывая для каждого события его структуру. Эта информация компилируется, кодируется и сохраняется в исполняемом файле источника событий (в программе или динамической библиотеке). Теперь стало возможным обнаружить все источники событий, зарегистрированные в системе регистрации событий, а также выяснить настройки каждого источника. Это включает просмотр полного списка всех возможных событий, которые могут быть помещены источником в журнал, структур этих событий и связанных с ними сообщений, и все это — до того, как события начнут поступать. На рисунке 4 показано, как при помощи утилиты командной строки wevtutil можно просмотреть настройки источника событий. Показанная команда выводит все имеющиеся в системе сведения об источнике событий, имеющем имя Microsoft-Windows-Video For Windows. Рисунок 4 Использование wevtutil для просмотра настройки источника событий Как работает язык запросов
Как было сказано ранее, структурированная природа событий в новой инфраструктуре позволяет нам включить поддержку языка запросов, который основан на стандартных выражениях XPath. В общих чертах, при наличии исходной точки (элемента XML) выражение XPath способно ссылаться на любое место внутри элемента. (Полное описание языка XPath приведено в официальном справочном руководстве по адресу w3.org/TR/xpath). Чаще всего выражение XPath относится к другому элементу или атрибуту, содержащемуся в исходном элементе. Поскольку журнал событий в сущности является последовательностью элементов типа «Событие», можно считать, что любой журнал выглядит примерно так:
Корневой элемент не имеет имени — он просто используется в качестве контекста для всех выражений языка XPath. Определены только прямые оси, что значит, что выражение XPath может ссылаться на элементы «Event», их дочерние элементы и их атрибуты. Если выражение XPath выбирает существующий элемент, оно возвращает значение «истина». Рассмотрим очень простое выражение XPath, созданное на основе события, показанного на рисунке 3.
*/System[Provider/@Name='Microsoft-Windows-TaskScheduler' and Level
|
|
|