Bagikan melalui


WmiWebEventProvider Kelas

Definisi

Menerapkan penyedia peristiwa yang memetakan ASP.NET peristiwa pemantauan kesehatan ke peristiwa Windows Management Instrumentation (WMI).

public ref class WmiWebEventProvider : System::Web::Management::WebEventProvider
public class WmiWebEventProvider : System.Web.Management.WebEventProvider
type WmiWebEventProvider = class
    inherit WebEventProvider
Public Class WmiWebEventProvider
Inherits WebEventProvider
Warisan
WmiWebEventProvider

Contoh

Contoh berikut menunjukkan cara membuat konsumen peristiwa WMI yang dikeluarkan oleh ASP.NET pemantauan kesehatan sebagai akibat dari peristiwa kesehatan aplikasi Web.

Catatan

Kelas WmiWebEventProvider dan jenis peristiwa kesehatan yang akan dipantau sudah dikonfigurasi secara default. Satu-satunya hal yang perlu Anda lakukan adalah menentukan aturan untuk semua peristiwa kesehatan. Ingat bahwa peristiwa kesehatan tidak dikirim ke WmiWebEventProvider penyedia secara default.


using System;
using System.Management;

namespace SamplesAspNet
{
    // Capture WMI events associated with 
    // ASP.NET health monitoring types. 
    class SampleWmiWebEventListener
    {
        //Displays event related information.
        static void DisplayEventInformation(
            ManagementBaseObject ev)
        {

            // It contains the name of the WMI raised 
            // event. This is the name of the 
            // event class as defined in the 
            // Aspnet.mof file.
            string eventTypeName;

            // Get the name of the WMI raised event.
            eventTypeName = ev.ClassPath.ToString();

            // Process the raised event.
            switch (eventTypeName)
            {
                // Process the heartbeat event.  
                case "HeartBeatEvent":
                    Console.WriteLine("HeartBeat");
                    Console.WriteLine("\tProcess: {0}", 
                        ev["ProcessName"]);
                    Console.WriteLine("\tApp: {0}", 
                        ev["ApplicationUrl"]);
                    Console.WriteLine("\tWorkingSet: {0}", 
                        ev["WorkingSet"]);
                    Console.WriteLine("\tThreads: {0}", 
                        ev["ThreadCount"]);
                    Console.WriteLine("\tManagedHeap: {0}",
                        ev["ManagedHeapSize"]);
                    Console.WriteLine("\tAppDomainCount: {0}",
                        ev["AppDomainCount"]);
                    break;

                // Process the request error event. 
                case "RequestErrorEvent":
                    Console.WriteLine("Error");
                    Console.WriteLine("Url: {0}", 
                        ev["RequestUrl"]);
                    Console.WriteLine("Path: {0}", 
                        ev["RequestPath"]);
                    Console.WriteLine("Message: {0}", 
                        ev["EventMessage"]);
                    Console.WriteLine("Stack: {0}", 
                        ev["StackTrace"]);
                    Console.WriteLine("UserName: {0}", 
                        ev["UserName"]);
                    Console.WriteLine("ThreadID: {0}", 
                        ev["ThreadAccountName"]);
                    break;

                // Process the application lifetime event. 
                case "ApplicationLifetimeEvent":
                    Console.WriteLine("App Lifetime Event {0}", 
                        ev["EventMessage"]);
                   
                    break;

                // Handle events for which processing is not
                // provided.
                default:
                    Console.WriteLine("ASP.NET Event {0}",
                        ev["EventMessage"]);
                    break;
            }
        } // End DisplayEventInformation.

        // The main entry point for the application.
        static void Main(string[] args)
        {
            // Get the name of the computer on 
            // which this program runs.
            // Note. The monitored application must also run 
            // on this computer.
            string machine = Environment.MachineName;

            // Define the Common Information Model (CIM) path 
            // for WIM monitoring. 
            string path = String.Format("\\\\{0}\\root\\aspnet", 
                machine);

            // Create a managed object watcher as 
            // defined in System.Management.
            string query = "select * from BaseEvent";
            ManagementEventWatcher watcher =
                new ManagementEventWatcher(query);

            // Set the watcher options.
            TimeSpan timeInterval = new TimeSpan(0, 1, 30);
            watcher.Options = 
                new EventWatcherOptions(null,
                timeInterval, 1);

            // Set the scope of the WMI events to 
            // watch to be ASP.NET applications.
            watcher.Scope = 
                new ManagementScope(new ManagementPath(path));

            // Set the console background.
            Console.BackgroundColor = ConsoleColor.Blue;
            // Set foreground color.
            Console.ForegroundColor = ConsoleColor.Yellow;
            // Clear the console.
            Console.Clear();

            // Loop indefinitely to catch the events.
            Console.WriteLine(
                "Listener started. Enter CntlC to terminate");

            while (true)
            {
                try
                {
                    // Capture the WMI event related to 
                    // the Web event.
                    ManagementBaseObject ev = 
                        watcher.WaitForNextEvent();
                    // Display the Web event information.
                    DisplayEventInformation(ev);

                    // Prompt the user.
                    Console.Beep();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error: {0}", e);
                    break;
                }
            }
        }
    }
}
Imports System.Management



' Capture WMI events associated with 
' ASP.NET health monitoring types. 

Class SampleWmiWebEventListener
    
    'Displays event related information.
    Shared Sub DisplayEventInformation(ByVal ev _
As ManagementBaseObject)

        ' It contains the name of the WMI raised 
        ' event. This is the name of the 
        ' event class as defined in the 
        ' Aspnet.mof file.
        Dim eventTypeName As String

        ' Get the name of the WMI raised event.
        eventTypeName = ev.ClassPath.ToString()

        ' Process the raised event.
        Select Case eventTypeName
            ' Process the heartbeat event.  
            Case "HeartBeatEvent"
                Console.WriteLine("HeartBeat")
                Console.WriteLine(vbTab + _
                "Process: {0}", ev("ProcessName"))
                Console.WriteLine(vbTab + "App: {0}", _
                ev("ApplicationUrl"))
                Console.WriteLine(vbTab + "WorkingSet: {0}", _
                ev("WorkingSet"))
                Console.WriteLine(vbTab + "Threads: {0}", _
                ev("ThreadCount"))
                Console.WriteLine(vbTab + "ManagedHeap: {0}", _
                ev("ManagedHeapSize"))
                Console.WriteLine(vbTab + "AppDomainCount: {0}", _
                ev("AppDomainCount"))

                ' Process the request error event. 
            Case "RequestErrorEvent"
                Console.WriteLine("Error")
                Console.WriteLine("Url: {0}", _
                ev("RequestUrl"))
                Console.WriteLine("Path: {0}", _
                ev("RequestPath"))
                Console.WriteLine("Message: {0}", _
                ev("EventMessage"))
                Console.WriteLine("Stack: {0}", _
                ev("StackTrace"))
                Console.WriteLine("UserName: {0}", _
                ev("UserName"))
                Console.WriteLine("ThreadID: {0}", _
                ev("ThreadAccountName"))

                ' Process the application lifetime event. 
            Case "ApplicationLifetimeEvent"
                Console.WriteLine("App Lifetime Event {0}", _
                ev("EventMessage"))


                ' Handle events for which processing is not
                ' provided.
            Case Else
                Console.WriteLine("ASP.NET Event {0}", _
                ev("EventMessage"))
        End Select

    End Sub

    ' End DisplayEventInformation.
    ' The main entry point for the application.
    Shared Sub Main(ByVal args() As String)
        ' Get the name of the computer on 
        ' which this program runs.
        ' Note. The monitored application must also run 
        ' on this computer.
        Dim machine As String = Environment.MachineName

        ' Define the Common Information Model (CIM) path 
        ' for WIM monitoring. 
        Dim path As String = _
        String.Format("\\{0}\root\aspnet", machine)

        ' Create a managed object watcher as 
        ' defined in System.Management.
        Dim query As String = "select * from BaseEvent"
        Dim watcher As New ManagementEventWatcher(query)

        ' Set the watcher options.
        Dim timeInterval As New TimeSpan(0, 1, 30)
        watcher.Options = _
        New EventWatcherOptions(Nothing, timeInterval, 1)

        ' Set the scope of the WMI events to 
        ' watch to be ASP.NET applications.
        watcher.Scope = _
        New ManagementScope(New ManagementPath(path))

        ' Set the console background.
        Console.BackgroundColor = ConsoleColor.Blue
        ' Set foreground color.
        Console.ForegroundColor = ConsoleColor.Yellow
        ' Clear the console.
        Console.Clear()

        ' Loop indefinitely to catch the events.
        Console.WriteLine( _
        "Listener started. Enter CntlC to terminate")


        While True
            Try
                ' Capture the WMI event related to 
                ' the Web event.
                Dim ev As ManagementBaseObject = _
                watcher.WaitForNextEvent()
                ' Display the Web event information.
                DisplayEventInformation(ev)

                ' Prompt the user.
                Console.Beep()

            Catch e As Exception
                Console.WriteLine("Error: {0}", e)
                Exit While
            End Try
        End While

    End Sub
End Class

Contoh berikut adalah kutipan file konfigurasi yang menunjukkan <healthMonitoring> bagian konfigurasi yang memungkinkan ASP.NET menggunakan WmiWebEventProvider penyedia untuk memproses semua peristiwa pemantauan kesehatan.

<healthMonitoring>  
  <rules>  
    <add   
      name="Using Wmi"  
      eventName="All Events"   
      provider="WmiWebEventProvider"   
      profile="Critical"/>  
  </rules>  
</healthMonitoring>  

Keterangan

ASP.NET pemantauan kesehatan memungkinkan staf produksi dan operasi untuk mengelola aplikasi Web yang disebarkan. Namespace System.Web.Management berisi jenis peristiwa kesehatan yang bertanggung jawab untuk mengemas data status kesehatan aplikasi dan jenis penyedia yang bertanggung jawab untuk memproses data ini. Ini juga berisi jenis pendukung yang membantu selama pengelolaan peristiwa kesehatan.

ASP.NET menggunakan kelas ini untuk memetakan peristiwa pemantauan kesehatan ke peristiwa WMI. Untuk mengaktifkan pengiriman ASP.NET peristiwa pemantauan kesehatan ke subsistem WMI, Anda harus mengonfigurasi WmiWebEventProvider kelas dengan menambahkan pengaturan yang sesuai di bagian <healthMonitoring> file konfigurasi.

Informasi yang terkandung dalam file Aspnet.mof menjelaskan parameter peristiwa WMI yang diangkat ketika ASP.NET peristiwa pemantauan kesehatan dirutekan ke WmiWebEventProvider kelas dan dipetakan ke dalam peristiwa WMI. File Aspnet.mof disimpan di direktori build .NET Framework, misalnya %windir%\Microsoft.NET\Framework\BuildNumber. Untuk informasi selengkapnya tentang melaporkan peristiwa pemantauan kesehatan sebagai peristiwa WMI, lihat Menggunakan WMI untuk Menyampaikan Peristiwa Pemantauan Kesehatan ASP.NET.

Catatan

Dalam kebanyakan kasus, Anda akan dapat menggunakan jenis pemantauan kesehatan ASP.NET seperti yang diterapkan, dan Anda akan mengontrol sistem pemantauan kesehatan dengan menentukan nilai di bagian <healthMonitoring> konfigurasi. Anda juga dapat memperoleh dari jenis pemantauan kesehatan untuk membuat peristiwa dan penyedia kustom Anda sendiri. Untuk contoh pembuatan penyedia kustom, lihat Cara: Menerapkan Contoh Penyedia Kustom Pemantauan Kesehatan.

Konstruktor

WmiWebEventProvider()

Menginisialisasi instans baru kelas WmiWebEventProvider.

Properti

Description

Mendapatkan deskripsi singkat dan ramah yang cocok untuk ditampilkan di alat administratif atau antarmuka pengguna (UI) lainnya.

(Diperoleh dari ProviderBase)
Name

Mendapatkan nama yang mudah diingat yang digunakan untuk merujuk ke penyedia selama konfigurasi.

(Diperoleh dari ProviderBase)

Metode

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
Flush()

Menghapus semua peristiwa dari buffer penyedia.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
Initialize(String, NameValueCollection)

Mengatur nilai awal untuk objek ini.

MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
ProcessEvent(WebBaseEvent)

Memproses peristiwa yang diteruskan ke penyedia.

Shutdown()

Melakukan tugas yang terkait dengan mematikan penyedia.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk

Lihat juga