ASP.NET 2.0 также обеспечивает полнофункциональный мониторинг приложений и мониторинг работоспособности. Система состоит из полностью расширяемой модели событий и механизма событий, который может отправлять события различным получателям. Например, вы можете настроить приложение ASP.NET на ежедневную отправку электронного письма с указанием того, что сервер работает, и объема доступной памяти. Аналогичным образом вы можете создать событие работоспособности, связанное с необработанным исключением. Содержимое исключений, заголовки запросов, а также время и дата могут быть отправлены в базу данных регистрации ошибок.
ASP.NET 2.0 включает встроенные события, включая тактовые сигналы, события времени жизни приложения (запуск/остановка/компиляция) и события ловушки ошибок (необработанные исключения). Однако вы можете легко использовать эти базовые классы для воссоздания и вызова собственных событий из вашего приложения. Например, вы можете создать специальное событие для записи, когда сотый пользователь нажимает определенную ссылку.
Действительно мощной особенностью системы мониторинга работоспособности ASP.NET 2.0 является то, что ее можно полностью настроить с помощью файлов web.config иmachine.config. Используя обычный XML, вы можете определять события, определять поставщиков (приемников событий) и отправлять определенные события конкретным поставщикам.
Создание событий События по структуре аналогичны исключениям. Другими словами, сам класс событий практически не имеет никаких функций, кроме как контейнера сообщений. С точки зрения мониторинга работоспособности все события наследуются от System.Web.Management.WebBaseEvent. Однако вы также можете получить производные от базовых классов высокого уровня, которые используются для специализированных целей, таких как сбор данных HTTP-запросов или обработка исключений.
Листинг 4. Пользовательские события
с использованием System;
использование
общедоступного класса CustomEvent: WebBaseEvent;
{
public const int EventCode = WebEventCodes.WebExtendedBase + 10;
public MyEvent (строковое сообщение, объект eventSource)
: база (сообщение, источник событий, код события)
{ }
}
Самая важная часть создания пользовательского события — предоставление уникального EventCode. Все встроенные коды событий находятся в перечислении WebEventCodes. Пользовательские события должны иметь номера, начинающиеся с WebEventCodes.WebExtendedBase + 1. Помимо этого, единственной общей задачей при создании пользовательских событий является правильная инициализация события.
Использование событий Хотя встроенные события запускаются автоматически, вы можете добавить в приложение код для запуска пользовательских событий в любое время.
Листинг 5. Вызов события
<script runat="server">
void Page_Load (отправитель объекта, EventArgs e)
{ // Вызываем пользовательское событие MyEvent myEvent =
new MyEvent("загрузка образца страницы веб-события", this); myEvent.Raise();
</script>
Когда вы вызываете событие со страницы ASP.NET, вы просто создаете новый экземпляр события, а затем выполняете метод Raise(). Метод Raise() автоматически доставляет экземпляр события в механизм мониторинга работоспособности. Затем механизм сопоставляет событие с профилями и поставщиками и передает событие правильному поставщику. Поставщик в конечном итоге доставляет событие нужному получателю.
Настройка мониторинга работоспособности Мониторинг работоспособности настраивается в новой области файла Machine.Config или Web.Config. Вы можете настроить этот раздел для настройки веб-сигнала, который периодически сообщает о состоянии приложения. Вы также можете настроить свое приложение для генерации событий и передачи событий через различных поставщиков.
При настройке событий необходимо идентифицировать каждое событие в области сопоставления событий. События идентифицируются по уникальному имени и полному типу. Название события используется в качестве ссылки в области правил.
Листинг 6. Область сопоставления событий
<!-- Сопоставления событий определяют отслеживаемые события -->
<сопоставления событий>
<add name="SampleWebRequests"
type="Samples.AspNet.SampleWebRequestEvent, SampleWebRequestEvent,
Версия=0.0.0.0, Культура=нейтрально, PublicKeyToken=f0c63b9a560d5e5a"/>
</eventMappings>
ASP.NET 2.0 поставляется с несколькими встроенными событиями, настроенными со следующими именами:
• Все события. Все имена событий фиксируют любое событие WebBaseEvent. Этот класс событий объединяет все события, фиксируемые системой мониторинга работоспособности.
• Сердцебиение. События Heartbeat используют WebHeartBeatEvent для предоставления периодических уведомлений о состоянии веб-приложения.
• События времени жизни приложения. События времени жизни приложения включают запуск и остановку приложения, а также перекомпиляцию части или всего приложения. Эти события основаны на WebApplicationLifetimeEvent и сообщают дату, время и текущий статус при возникновении события жизненного цикла.
• Все ошибки. В категории «Все ошибки» собраны все аномалии и ошибки, обнаруженные системой. Эти события основаны на WebBaseErrorEvent.
• Ошибки инфраструктуры. Используйте WebErrorEvent для обнаружения ошибок, связанных со средой выполнения ASP.NET или IIS. Эти события являются подклассами всех категорий ошибок и в первую очередь относятся к системным администраторам, а не к разработчикам приложений.
• Ошибка обработки запроса. Любая ошибка или исключение, возникающее во время запроса, вызывает событие WebRequestErrorEvent. Это событие регистрирует входящий запрос и ошибки, связанные с его обработкой. Ошибки обработки запросов также являются подмножеством всех категорий ошибок.
• Все отзывы. Вы можете использовать систему мониторинга работоспособности для предоставления попыток аудита через WebAuditEvents. Это событие автоматически записывает действия активных пользователей в веб-приложении. Если вы используете олицетворение, события аудита помогут вам отслеживать, кто использует ваше приложение и как они используются.
• Аудит отказов. WebFailureAuditEvent — это особый тип события аудита, который срабатывает, когда пользователь пытается войти на ваш веб-сайт с неверным именем пользователя или паролем. Это событие также происходит, когда пользователь не может пройти проверку подлинности для указанного ресурса.
• Успешная проверка. WebSuccessAuditEvent — это аналог события сбоя, которое происходит всякий раз, когда пользователь прошел проверку подлинности или выполнил какое-либо другое действие, требующее ведения журнала аудита.
Пользовательские события легко создавать, однако для вызова события необходимо добавить в приложение код.
Настройка провайдеров Каждый провайдер должен быть зарегистрирован в файле конфигурации. Для регистрации поставщика требуется уникальное имя и тип приложения. Этот тип содержит полное строгое имя фактического класса поставщика. Имя провайдера используется в качестве ссылки в области правил.
Листинг 7. Поставщик
<healthMonitoring Enabled="true" heartBeatInterval="0">
<!-- Поставщики связывают события работоспособности с различными целями, такими как электронная почта WMI или SMTP -->
<поставщики>
<add name="WmiEventProvider" type="System.Web.Management.WebWmiEventProvider,
System.Web,Version=1.2.3400.0,Culture=нейтрально, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
ASP.NET 2.0 поставляется с поставщиками для WMI, монитора событий Windows, электронной почты SMTP и баз данных SQL Server. Расширив правильный базовый класс, вы можете создавать собственные поставщики для подключения к другим приемникам событий.
Сопоставление событий поставщикам
Последним шагом в настройке мониторинга работоспособности является подключение событий к поставщикам с помощью правил. Правила обеспечивают связь между хорошим названием события, классом события, поставщиком и профилем или категорией события. Вы также можете использовать правила, чтобы определить минимальный интервал времени для запуска определенных событий.
Листинг 8. Правила
<!-- Правила связывают события с поставщиками и профилями и определяют интервалы проверки событий -->
<правила>
<add name="Пользовательские события базы данных" eventName="CustomDBEvents"
поставщик="WmiEventProvider" Profile="База данных" minInterval="00:01:00" />
<add name="Стандартные веб-запросы" eventName="Все события"
поставщик="SqlEventProvider" профиль="По умолчанию" minInterval="00:01:00" /> </rules>
</здоровьемониторинг>
Правила выполняют несколько разных задач, настроенных с помощью разных свойств:
• имя. Имя правила — это понятное имя, которое появляется при отправке события получателю.
• Имя события. eventName сопоставляется с событием, настроенным в зоне.
• провайдер. Провайдер — ссылка на провайдера, настроенного в зоне. Любые события, соответствующие этому правилу, будут доставляться через этого поставщика в целевые объекты, поддерживаемые этим поставщиком. Например, System.Web.Management.SqlWebEventProvider автоматически записывает события в базу данных SQL Server.
• профиль. Разные провайдеры используют свойства профиля в качестве фильтров отображения событий. Например, поставщик электронной почты может отправлять немедленное сообщение о любом событии с «срочным» профилем, но также может отправлять только ежедневное электронное письмо с подборкой «обычных» событий профиля на этот день.
• минИнтервал. Некоторые события, такие как пульс, должны срабатывать в течение как можно более короткого интервала времени. Это свойство можно использовать для установки минимального интервала событий.
Эта область конфигурации позволяет вам настраивать различные события, связанные со здоровьем, и сопоставлять их различным поставщикам. Например, вы можете настроить тактовый сигнал, который отправляет событие WMI каждые 10 минут. Аналогичным образом вы можете настроить оповещение по электронной почте о любых неперехваченных исключениях.
Похожие статьи:
http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B893664
http://blog.csdn.net/dshpsky/archive/2006/06/18/810893.aspx