//////////////////////////////////////////////////////////////////////////////// // HealthMon.Mof // Copyright (c)2000 Microsoft Corporation, All Rights Reserved // //qualifier Values: amended; qualifier Description: amended ToSubClass; qualifier DisplayName: amended ToSubClass; #pragma autorecover #pragma namespace("\\\\.\\root\\cimv2") //****************************************************************************** // *** Namespace Section *** // Create MicrosoftHealthMonitor Namespace //****************************************************************************** // instance of __NAMESPACE { Name = "MicrosoftHealthMonitor"; }; #pragma namespace("MicrosoftHealthMonitor") ///////////////////////////////////////////////////////////////////////////////////////////// // class MicrosoftHM_Version ///////////////////////////////////////////////////////////////////////////////////////////// [singleton, description("Health Monitor Version class.")] class MicrosoftHM_Version { [read] string MajorVersion; [read] string MinorVersion; [read] string BuildVersion; [read] string HotfixVersion; }; instance of MicrosoftHM_Version { MajorVersion = "2"; MinorVersion = "10"; BuildVersion = "$$$@"; HotfixVersion = "!!!@"; }; //****************************************************************************** //****************************************************************************** //****************************************************************************** // PROVIDER REGISTRATION SECTION // The Health Monitor agent acts as an Instance, event and method provider. It is // also a consumer provider. //****************************************************************************** //****************************************************************************** //****************************************************************************** //////////////////////////////////////////////////////////////////////////////////////////// // Instance Provider //////////////////////////////////////////////////////////////////////////////////////////// instance of __Win32Provider { Name = "MicrosoftHM_InstProvider"; CLSID = "{68AC0D34-DB09-11d2-8F56-006097919914}"; }; // registration instance of __InstanceProviderRegistration { Provider = "__Win32Provider=\"MicrosoftHM_InstProvider\""; SupportsPut = FALSE; SupportsGet = TRUE; SupportsDelete = FALSE; SupportsEnumeration = TRUE; QuerySupportLevels = {"WQL:UnarySelect"}; }; //////////////////////////////////////////////////////////////////////////////////////////// // Method Provider //////////////////////////////////////////////////////////////////////////////////////////// //instance of __Win32Provider as $P instance of __Win32Provider { Name = "MicrosoftHM_MethProvider"; CLSID = "{68AC0D41-DB09-11d2-8F56-006097919914}"; }; instance of __MethodProviderRegistration { Provider = "__Win32Provider=\"MicrosoftHM_MethProvider\""; }; //////////////////////////////////////////////////////////////////////////////////////////// // Base Classes //////////////////////////////////////////////////////////////////////////////////////////// [description("Health Monitor Context class. Used to pass context to a Data Collector, and for arguments to a Method.")] class MicrosoftHM_Context { [key] string Name; [values {"CIM_SINT8","CIM_UINT8","CIM_SINT16","CIM_UINT16","CIM_SINT32","CIM_UINT32","CIM_SINT64","CIM_UINT64","CIM_REAL32","CIM_REAL64","CIM_BOOLEAN","CIM_STRING","CIM_DATETIME", "CIM_CHAR16"},valuemap {"16","17","2","18","3","19","20","21","4","5","11","8","101","103"}] uint32 Type; string Value; }; [abstract, description("Health Monitor Base Configuration class.")] class MicrosoftHM_Configuration { [key, DisplayName("Unique identifier"), description("Unique identifier (a 128-bit GUID) generated by the console for this configuration item. This is the key property.")] string GUID; [DisplayName("Is Enabled"),description("Indicates whether this configuraiton item is enabled (=True) or disabled (=False). Disabled items, and their children, will not collect data nor fire actions.")] boolean Enabled = TRUE; [DisplayName("Is Hidden"),description("Indicates that instances should not be shown in a console application. For external tool usage. Not currently used by the console, or agent.")] boolean Hidden = FALSE; [DisplayName("Name"), Description("Name given by the user to describe this configuration item.")] string Name; [DisplayName("Auto-Assign Names"), Description("Determines whether the console will automatically assign a name to a configuration item based on its content. For example, a new HTTP data collector will be named after the URL it is monitoring. In Health Monitor 2.1, this property is reserved for future use.")] boolean AutoName = true; [DisplayName("Description"), Description("Long description given by the user describing the use of this configuration item.")] string Description; }; [abstract, DisplayName("Base Status"), description("Health Monitor Base Status")] class MicrosoftHM_BaseStatus { [DisplayName("System Name"), description("Name of the computer system.")] string SystemName; [DisplayName("Local Time"), description("Local time of the Agent Machine. In WMI datetime format (GMT).")] datetime TimeGeneratedGMT; [DisplayName("Formatted Local Time"), description("Local time of the Agent Machine. The format is that of the system locale of the agent machine.")] string LocalTimeFormatted; [DisplayName("Name"), Description("Name given by the user to describe the configuration item that this status item corresponds to.")] string Name; [DisplayName("Parent GUID"), description("GUID of the Parent")] String ParentGUID; [DisplayName("Status GUID"), description("Unique for the current status change.")] string StatusGUID; }; [DisplayName("Base Status Event"), description("Health Monitor Base Status Event")] class MicrosoftHM_BaseStatusEvent : __ExtrinsicEvent { [DisplayName("System Name"), description("Name of the system.")] string SystemName; [DisplayName("Local Time"), description("Local time of the Agent Machine. In WMI datetime format (GMT).")] datetime TimeGeneratedGMT; [DisplayName("Formatted Local Time"), description("Local time of the Agent Machine. The format is that of the system locale of the agent machine.")] string LocalTimeFormatted; [DisplayName("Name"), Description("Name given by the user to describe the configuration item that this status item corresponds to.")] string Name; [DisplayName("Parent GUID"), description("GUID of the Parent")] String ParentGUID; [DisplayName("Status GUID"), description("Unique for the current status change.")] string StatusGUID; }; [abstract, DisplayName("Status for Configuration Items"), description("Base class for all status instances representing Health Monitor systems, data groups, data collectors, and thresholds")] class MicrosoftHM_Status : MicrosoftHM_BaseStatus { [key, DisplayName("GUID"), description("Unique identifier")] string GUID; [values {"GOOD","COLLECTING","RESET","RESERVED3","DISABLED","SCHEDULEDOUT","RESERVED6","RESERVED7","WARNING","CRITICAL"}, DisplayName("State"), description("The state represented by this status item. 0=Good, 1=Collecting, 2=Reset, 4=Disabled, 5=Scheduled Outage, 8=Warning, 9=Critical")] uint32 State; [DisplayName("Message"), description("Message indicating status of the HealthMon item. Can contain information about the results of a data collection, about misconfiguration of the item, or about results of actions.")] string Message; }; [abstract, DisplayName("Per-Instance Status"), description("Base class representing status of individual instances")] class MicrosoftHM_PerInstanceStatus : MicrosoftHM_BaseStatus { [key, DisplayName("GUID"), description("Unique identifier")] string GUID; [key, DisplayName("Instance Name"), description("Instance name is applicable (e.g. C: drive).")] string InstanceName; [values {"GOOD","COLLECTING","RESET","RESERVED3","DISABLED","SCHEDULEDOUT","RESERVED6","RESERVED7","WARNING","CRITICAL"}, DisplayName("State"), description("The state represented by this status item. 0=Good, 1=Collecting, 2=Reset, 4=Disabled, 5=Scheduled Outage, 8=Warning, 9=Critical")] uint32 State; [DisplayName("Message"), description("Message indicating status of the HealthMon item. Can contain information about the results of a data collection, about misconfiguration of the item, or about results of actions.")] string Message; }; [abstract, DisplayName("Per-Property Status"), description("Base class used to track statistics and other per-property items")] class MicrosoftHM_PerPropertyStatus : MicrosoftHM_BaseStatus { [key, DisplayName("GUID"), description("Unique identifier")] string GUID; [key, DisplayName("Instance Name"), description("Instance name is applicable (e.g. C: drive).")] string InstanceName; [key, DisplayName("Property Name"), description("Property name that the data is for.")] string PropertyName; }; [DisplayName("Status Event"), description("Base class for status events sent when Health Monitor systems, data groups, data collectors, and thresholds change state")] class MicrosoftHM_StatusEvent : MicrosoftHM_BaseStatusEvent { [key, DisplayName("GUID"), description("Unique identifier")] string GUID; [values {"GOOD","COLLECTING","RESET","RESERVED3","DISABLED","SCHEDULEDOUT","RESERVED6","RESERVED7","WARNING","CRITICAL"}, DisplayName("State"), description("The state represented by this status item. 0=Good, 1=Collecting, 2=Reset, 4=Disabled, 5=Scheduled Outage, 8=Warning, 9=Critical")] uint32 State; [DisplayName("Message"), description("Message indicating status of the HealthMon item. Can contain information about the results of a data collection, about misconfiguration of the item, or about results of actions.")] string Message; }; [DisplayName("Per-Instance Status Event"), description("Base class for status events sent when of individual instances change state")] class MicrosoftHM_PerInstanceStatusEvent : MicrosoftHM_BaseStatusEvent { [key, DisplayName("GUID"), description("Unique identifier")] string GUID; [key, DisplayName("Instance Name"), description("Instance name is applicable (e.g. C: drive).")] string InstanceName; [values {"GOOD","COLLECTING","RESET","RESERVED3","DISABLED","SCHEDULEDOUT","RESERVED6","RESERVED7","WARNING","CRITICAL"}, DisplayName("State"), description("The state represented by this status item. 0=Good, 1=Collecting, 2=Reset, 4=Disabled, 5=Scheduled Outage, 8=Warning, 9=Critical")] uint32 State; [DisplayName("Message"), description("Message indicating status of the HealthMon item. Can contain information about the results of a data collection, about misconfiguration of the item, or about results of actions.")] string Message; }; [Association : ToInstance] class MicrosoftHM_ConfigurationAssociation { [key] MicrosoftHM_Configuration ref ParentPath; [key] MicrosoftHM_Configuration ref ChildPath; }; // Can Associate the same Action to more than one Object!!! [Association : ToInstance, DisplayName("Action-to-Configuration Association"), description("Associates a Configuration to an Action.")] class MicrosoftHM_ConfigurationActionAssociation : MicrosoftHM_ConfigurationAssociation { [DisplayName("Reminder Time"), description("How many seconds between firing off the action if we are still in the critical, or warning state.")] uint32 ReminderTime = 0; [not_null] string Query = ""; __EventFilter ref EventFilter; }; //****************************************************************************** //****************************************************************************** //****************************************************************************** // CONFIGURATION CLASS DECLARATION SECTION // Classes dealing with the configuration of the Agent //****************************************************************************** //****************************************************************************** //****************************************************************************** // The heirarchy of classes and how they interrelate, can be illustrated with // the following diagram example. The sections that follow specify the classes // and associations that are used. // // - MicrosoftHM_System // | // |--MyDataGroup MicrosoftHM_DataGroup (convenient grouping the user likes) // | | // | |--Processor MicrosoftHM_DataGroup (Grouping for processor related data) // | | | // | | |--%ProcessorTime MicrosoftHM_DataCollector (Collect the processor time perf counter) // | | | // | | |--Warning MicrosoftHM_Threshold (If CurrentValue > 70 for 300 sec) // | | | // | | |--Critical MicrosoftHM_Threshold (If CurrentValue > 90 for 300 sec) // | | | // | | |--PageEric MicrosoftHM_Action (If 9am to 5pm) // | | | // | | |--PageGreg MicrosoftHM_Action (If 5pm to 9am) // | | // | |--LogicalDisk MicrosoftHM_DataGroup // | | // | |--%FreeSpace MicrosoftHM_DataCollector // | | // | |--%FreeMegabytes MicrosoftHM_DataCollector // | // |--ExchangeServer MicrosoftHM_DataGroup // | // |--WorkQueueLength MicrosoftHM_DataCollector //////////////////////////////////////////////////////////////////////////////// // System class // A singleton class, main purpose is to allow quick disabling of agent, and // specifying a startup delay for the agent. // Can't have a Singletone class with a key property [provider("MicrosoftHM_MethProvider"), DisplayName("System Configuration"), description("System class. Acts as a container for Data Groups. All Methods reside in this class. There is only one instance, with GUID=\"{@}\" as the key.")] class MicrosoftHM_SystemConfiguration : MicrosoftHM_Configuration { //[description("What account to use for WMI connections.")] // String ConnectionAccount; [DisplayName("Startup Delay Time"), description("How many seconds after WMI startup that Threshold evaluation begins.")] uint32 StartupDelayTime = 0; [DisplayName("Max Instances Per Data Collector"), description("How instances to accept before returning an error in the multi-instance case.")] uint32 MaxInstancesPerDataCollector = 40; [DisplayName("Delete"), Implemented, static] uint32 Delete ( [in, description("Identifier of what to delete.")] String TargetGUID ); [DisplayName("Reset Data Collector State, and perform collection and evaluation"), Implemented, static] uint32 ResetAndCheckNow( [in, description("Identifier of what to reset. Can be a Data Group")] String TargetGUID ); [DisplayName("Copy"), Implemented, static] uint32 Copy( [in, description("Identifier of what to copy (includes all of the underlying hierarcy and associations).")] String TargetGUID, [out, description("System we are coming from")] String OriginalSystem, [out, description("Parent we are coming from")] String OriginalParentGUID, [out, description("Objects to do Paste with")] MicrosoftHM_Configuration Instances[] ); [DisplayName("Paste"), Implemented, static, values {"OK","ERROR","NAME_CONFLICT"}, description("Similar to Windows Explorer functionality. 1 = An Error occurred in the paste operation. 2 = There was an existing child at the same level with the same name, and ForceReplace was set to FALSE.")] uint32 Paste( [in, description("Where to copy it to")] String TargetGUID, [in, description("How to proceed.")] boolean ForceReplace, [in, description("System we came from")] String OriginalSystem, [in, description("Parent we came from")] String OriginalParentGUID, [in, description("Objects to do Paste with")] MicrosoftHM_Configuration Instances[] ); [DisplayName("Move"), Description("Use only for objects to be moved on the same machine."), Implemented, static] uint32 Move( [in, description("Identifier of what to move (includes all of the underlying hierarcy and associations).")] String TargetGUID, [in, description("Where to move it under")] String TargetParentGUID ); [DisplayName("Delete Configuration Action Association"), Implemented, static] uint32 DeleteConfigurationActionAssociation( [in, description("Config GUID")] String TargetGUID, [in, description("Action GUID")] String ActionGUID ); [DisplayName("Message"), description("What gets sent in the Event. Can contain special embedded tags such as %Name% and %State% that then get substituted for. Can be any property found in the SystemStatus class.")] string Message = "Computer %SystemName%: %State% condition."; [DisplayName("Reset Message"), description("What gets sent when we return to normal.")] string ResetMessage = "%SystemName% is Ok."; }; //////////////////////////////////////////////////////////////////////////////// // MicrosoftHM_DataGroup class - This is used to group Data Collectors together. It acts like a folder. // We do allow nested MicrosoftHM_DataGroups. [description("Health Monitor MicrosoftHM_DataGroup class. Acts as a container for Data Collectors and nested Data Groups.")] class MicrosoftHM_DataGroupConfiguration : MicrosoftHM_Configuration { [DisplayName("Message"), description("What gets sent in the Event. Can contain special embedded tags such as %Name% and %State% that then get substituted for. Can be any property found in the DataGroupStatus class.")] string Message = "%Name% : %State% condition"; [DisplayName("Reset Message"), description("What gets sent when we return to normal.")] string ResetMessage = "%Name% is Ok."; }; //////////////////////////////////////////////////////////////////////////////// // MicrosoftHM_DataCollector class - This is the class used for a single WMI instance collection. // Where the Data Collector collects the instance from WMI the Threshold tests against // this data. This is the abstract base class, with several classes of use derived from it. [abstract, DisplayName("Data Collector Configuration"), description("Health Monitor Data Collector class. This class acts as the collector of WMI instances via queries or polling. Thresholds can be associated to this to perform evaluations against what was collected.")] class MicrosoftHM_DataCollectorConfiguration : MicrosoftHM_Configuration { [DisplayName("Target Namespace"), description("The complete path to the instance to collect. The path may contain a remote machine name")] string TargetNamespace; [DisplayName("Context"), description("Gets passed on as provider specific information.")] MicrosoftHM_Context Context[]; [DisplayName("Local"), description("Local to use (e.g. for US English \"ms_409\". Leave NULL to default to system setting")] string Local = NULL; [DisplayName("Collection Interval Multiple"), description("How often to sample. How often this Data Collector runs in relation to the base system interval (1 second). E.G. 60 = 60 seconds. The WMI instance is collected at each interval. Threshold also gets evaluated at this time. Statistics get sent out at this time. EXCEPTION: For Event based Data Collector, we don't collect, events come in instead. It still needs to be set to something, as that is still when the threshold gets evaluated.")] uint32 CollectionIntervalMsecs = 60000; [DisplayName("Collection Time Out"), description("The amount of time allowed for a reply. The Data Collector will return an error state if a reply is not received in this amount of time (in seconds). This does not apply to event based data elements. A setting of zero means it must return before the next collection interval.")] uint32 CollectionTimeOut = 300; [DisplayName("Statistics Window Size"), description("Number of collection intervals to calculate the statistics across.")] uint32 StatisticsWindowSize = 6; [DisplayName("Active Days"), description("Days of the week it is active. One bit per day. For example, 00000000=No days. 00000001=Sunday only. 00000010=Monday only. 00111110=Monday through Friday.")] uint8 ActiveDays = 01111111B; [DisplayName("Begin Time"), description("hh = Two-digit hour of the day using the 24-hour clock (00 through 23). mm = Two-digit minute in the hour (00 through 59). If NULL it will always be active. ********0600**.******+*** would be 6am.")] datetime BeginTime = NULL; [DisplayName("End Time"), description("hh = Two-digit hour of the day using the 24-hour clock (00 through 23). mm = Two-digit minute in the hour (00 through 59). If NULL it will always be active. ********2300**.******+*** would be 11pm.")] datetime EndTime = NULL; [DisplayName("Type GUID"), description("For use by the console to aid in the display")] string TypeGUID; [DisplayName("Require Reset"), description("May not want to automatically reset to the good state, but require the user to acknowledge the fault. Can call Reset method to RESET, or have a threshold that forces RESET.")] boolean RequireReset = FALSE; [DisplayName("Properties"), description("What properties to collect statistics on.")] string Properties[]; [DisplayName("Message"), description("What gets sent in the Alert Event. Can contain special embedded tags such as %CurrentValue% that then get substituted for. Can be any property found in the DataCollectorStatus class.")] string Message = "%Name% : %State% condition"; [DisplayName("Reset Message"), description("What gets sent when we return to normal.")] string ResetMessage = "%Name% is Ok."; }; [description("Derived Data Element that collects its data by using a path at a poling interval.")] class MicrosoftHM_PolledGetObjectDataCollectorConfiguration : MicrosoftHM_DataCollectorConfiguration { [DisplayName("Object Path"), description("Specifies what data to get .e.g. Win32_SystemDriver.Name=\"DiskPerf\".")] string ObjectPath; }; [description("Derived Data Element that collects its data by using a method at a poling interval.")] class MicrosoftHM_PolledMethodDataCollectorConfiguration : MicrosoftHM_DataCollectorConfiguration { [DisplayName("Object Path"), description("Specifies the class name or instance.")] string ObjectPath; [DisplayName("Method Name"), description("Method to call e.g. Microsoft_InternetProtocolExecution.Execute.")] string MethodName; [DisplayName("Arguments"), description("Arguments to the method.")] MicrosoftHM_Context Arguments[]; }; [description("Derived Data Element that collects its data by using a query at a poling interval.")] class MicrosoftHM_PolledQueryDataCollectorConfiguration : MicrosoftHM_DataCollectorConfiguration { [DisplayName("Query"), description("E.g. select * from Win32_Process where name=\"outlook.exe\".")] string Query; }; [description("Derived Data Element that collects its data by registering an event notification query.")] class MicrosoftHM_EventQueryDataCollectorConfiguration : MicrosoftHM_DataCollectorConfiguration { [DisplayName("Query"), description("E.g. select * from SomeEvent.")] string Query; }; //////////////////////////////////////////////////////////////////////////////// // MicrosoftHM_Threshold class - This specifies how to Threshold against the value that // comes from the MicrosoftHM_DataCollector instance. There can be more than one Threshold // looking at a single MicrosoftHM_DataCollector. The values are evaluated at each collection // interval as specified in the MicrosoftHM_DataCollector. [description("Health Monitor Threshold class. Is associated to a Data Element to run evaluations against what the Data Element has collected.")] class MicrosoftHM_ThresholdConfiguration : MicrosoftHM_Configuration { [DisplayName("Property Name"), description("What property to threshold against. As a special case you can place the string CollectionInstanceCount here to threshold against how many instances were returned. (In the case of event based, how many in the window)")] string PropertyName; [DisplayName("Use Flag"), values {"NONE","AVERAGE","DIFFERENCE"}, description("0 = Thresholds against current value. 1 = Thresholds against the average value, not the current value. Does not apply to strings. 2 = Threshold against the change, not the current value. e.g. Difference in VALUE from one poll to the next. Doesn't apply to strings.")] uint32 UseFlag = 0; [DisplayName("Test Condition"), values {"<",">","=","!=",">=","<=","contains","!contains","always"}, description("The condition to use for the Threshold.")] uint32 TestCondition = 3; // test for equality. This is a good default because it works for strings, boolean, and numeric [DisplayName("Compare Value"), description("Value to use for Threshold. Can represent any WMI datatype. It will be converted depending on the property type it is being used with in the Data Collector.")] string CompareValue; [DisplayName("Threshold Duration"), description("How long the value must remain. In number of collection intervals. Set to zero for instantaneous.")] uint32 ThresholdDuration = 0; [DisplayName("State"), values {"GOOD","COLLECTING","RESET","RESERVED3","DISABLED","SCHEDULEDOUT","RESERVED6","RESERVED7","WARNING","CRITICAL"}, description("The state we transition to if Threshold is crossed. RESET means that the Data Collector is reset if threshold is crossed.")] uint32 State = 0; [DisplayName("Creation Date"), description("Time of the original creation.")] datetime CreationDate; [DisplayName("Last Update"), description("Time of the last change.")] datetime LastUpdate; }; //////////////////////////////////////////////////////////////////////////////// // MicrosoftHM_ActionConfiguration class - This specifies an action to take place that can be associated // with a Threshold. [description("Health Monitor Action class. Performs some type of action as a result of seeing an event from one of the Configuration class Status messages.")] class MicrosoftHM_ActionConfiguration : MicrosoftHM_Configuration { [DisplayName("Active Days"), description("Days of the week it is active. One bit per day. For example, 00000000=No days. 00000001=Sunday only. 00000010=Monday only. 00111110=Monday through Friday.")] uint8 ActiveDays = 01111111B; [DisplayName("Begin Time"), description("hh = Two-digit hour of the day using the 24-hour clock (00 through 23). mm = Two-digit minute in the hour (00 through 59). If NULL it will always be active. ********0600**.******+*** would be 6am.")] datetime BeginTime = NULL; [DisplayName("End Time"), description("hh = Two-digit hour of the day using the 24-hour clock (00 through 23). mm = Two-digit minute in the hour (00 through 59). If NULL it will always be active. ********2300**.******+*** would be 11pm.")] datetime EndTime = NULL; [DisplayName("Type GUID"), description("For use by the console to aid in the display")] string TypeGUID; [DisplayName("Event Consumer"), description("")] __EventConsumer ref EventConsumer; }; //****************************************************************************** //****************************************************************************** //****************************************************************************** // STATUS CLASSES // Classes dealing with information and events produced by the Agent //****************************************************************************** //****************************************************************************** //****************************************************************************** //////////////////////////////////////////////////////////////////////////////// // MicrosoftHM_SystemStatus classes // This is a rollup status for the entire hierarchy of monitors on this system. // The agent is both an instance and event provider for this information, so that consumers // can poll or receive events to get the current state of the system. This is also true for // the Data Group, Data Collector, Threshold, and Action status classes [dynamic, provider("MicrosoftHM_InstProvider"), description("System Status Instance Class")] class MicrosoftHM_SystemStatus : MicrosoftHM_Status { }; [dynamic, description("System Status Event Class")] class MicrosoftHM_SystemStatusEvent : MicrosoftHM_StatusEvent { }; //////////////////////////////////////////////////////////////////////////////// // MicrosoftHM_DataGroupStatus classes [dynamic, provider("MicrosoftHM_InstProvider"),description("Data Group Status"),DisplayName("Data Group Status")] class MicrosoftHM_DataGroupStatus : MicrosoftHM_Status { }; [dynamic, DisplayName("Data Group Status Event"), description("Data Group Status Event Class")] class MicrosoftHM_DataGroupStatusEvent : MicrosoftHM_StatusEvent { }; //////////////////////////////////////////////////////////////////////////////// // MicrosoftHM_DataCollectorStatus classes [dynamic, provider("MicrosoftHM_InstProvider"), DisplayName("Data Collector Status"), description("Data Collector Status")] class MicrosoftHM_DataCollectorStatus : MicrosoftHM_Status { [DisplayName("Error Code (from WMI)"), description("Contains a zero if there has been no error for the current collection. If there has been an error, it contains the code, in the case of a direct error from WMI, we place the WMI HRESULT here.")] uint32 CollectionErrorCode; [DisplayName("Error Description (from WMI)"), description("Is empty if there has been no error for the current collection. If there has been an error, it contains error text, in the case of a direct error from WMI, we place the text directly from WMI.")] string CollectionErrorDescription; [DisplayName("# of Instances Collected"), description("For polled - number of instances returned. For event - how many events were received in the sampling window. See the WindowSize property of the Data Collector.")] uint32 CollectionInstanceCount; }; [dynamic, DisplayName("Data Collector Status Event"), description("Data Collector Status Event")] class MicrosoftHM_DataCollectorStatusEvent : MicrosoftHM_StatusEvent { [DisplayName("Error Code (from WMI)"), description("Contains a zero if there has been no error for the current collection. If there has been an error, it contains the code, in the case of a direct error from WMI, we place the WMI HRESULT here.")] uint32 CollectionErrorCode; [DisplayName("Error Description (from WMI)"), description("Is empty if there has been no error for the current collection. If there has been an error, it contains error text, in the case of a direct error from WMI, we place the text directly from WMI.")] string CollectionErrorDescription; [DisplayName("# of Instances Collected"), description("For polled - number of instances returned. For event - how many events were received in the sampling window. See the WindowSize property of the Data Collector.")] uint32 CollectionInstanceCount; }; //////////////////////////////////////////////////////////////////////////////// // MicrosoftHM_DataCollectorPerInstanceStatus classes // These classes represent individual instances collected by a data collector. They are used // because a single data collector, say for Logical Disk, can collect multiple disks and those // individual states need to be differentiated [dynamic, provider("MicrosoftHM_InstProvider"),DisplayName("Data Collector Per-Instance Status"), description("Status of each instance monitored by a data collector")] class MicrosoftHM_DataCollectorPerInstanceStatus : MicrosoftHM_PerInstanceStatus { [DisplayName("Error Code (from WMI)"), description("Contains a zero if there has been no error for the current collection. If there has been an error, it contains the code, in the case of a direct error from WMI, we place the WMI HRESULT here.")] uint32 CollectionErrorCode; [DisplayName("Error Description (from WMI)"), description("Is empty if there has been no error for the current collection. If there has been an error, it contains error text, in the case of a direct error from WMI, we place the text directly from WMI.")] string CollectionErrorDescription; [DisplayName("# of Instances Collected"), description("For polled - number of instances returned. For event - how many events were received in the sampling window. See the WindowSize property of the Data Collector.")] uint32 CollectionInstanceCount; [DisplayName("Embedded Collected Instance"), description("The actual instance collected in the Data Collector.")] Object EmbeddedCollectedInstance; }; [dynamic, DisplayName("Data Collector Per-Instance Status Event"), description("Event sent for status of each instance monitored by a data collector")] class MicrosoftHM_DataCollectorPerInstanceStatusEvent : MicrosoftHM_PerInstanceStatusEvent { [DisplayName("Error Code (from WMI)"), description("Contains a zero if there has been no error for the current collection. If there has been an error, it contains the code, in the case of a direct error from WMI, we place the WMI HRESULT here.")] uint32 CollectionErrorCode; [DisplayName("Error Description (from WMI)"), description("Is empty if there has been no error for the current collection. If there has been an error, it contains error text, in the case of a direct error from WMI, we place the text directly from WMI.")] string CollectionErrorDescription; [DisplayName("# of Instances Collected"), description("For polled - number of instances returned. For event - how many events were received in the sampling window. See the WindowSize property of the Data Collector.")] uint32 CollectionInstanceCount; [DisplayName("Embedded Collected Instance"), description("The actual instance collected in the Data Collector.")] Object EmbeddedCollectedInstance; }; [dynamic, provider("MicrosoftHM_InstProvider"),DisplayName("Data Collector Statistics"), description("Class to track per-property statistics on data collector properties gathered by the agent")] class MicrosoftHM_DataCollectorStatistics : MicrosoftHM_PerPropertyStatus { [DisplayName("Current Value"), description("Current value of the tracked property.")] string CurrentValue; [DisplayName("Min Value"), description("Min value in the window. Will be NULL if the property being tracked is not numeric.")] string MinValue; [DisplayName("Max Value"), description("Max value in the window. Will be NULL if the property being tracked is not numeric.")] string MaxValue; [DisplayName("Avg Value"), description("Avg value in the window. Will be NULL if the property being tracked is not numeric.")] string AvgValue; }; //////////////////////////////////////////////////////////////////////////////// // MicrosoftHM_ThresholdStatus classes // An MicrosoftHM_ThresholdStatusEvent is produced when a Threshold is crossed, and contains all the // information pertaining to the circumstances surrounding the crossing. // The information comes from the both the MicrosoftHM_DataCollector and the MicrosoftHM_Threshold. [dynamic, provider("MicrosoftHM_InstProvider"),description("Threshold Status Instance Class")] class MicrosoftHM_ThresholdStatus : MicrosoftHM_Status { }; [dynamic, description("Threshold Status Event Class")] class MicrosoftHM_ThresholdStatusEvent : MicrosoftHM_StatusEvent { }; //////////////////////////////////////////////////////////////////////////////// // MicrosoftHM_ActionStatus classes // This class is used to track the success or failure of firing actions. [dynamic, provider("MicrosoftHM_InstProvider"),description("State of an action. If an action fails to fire correctly, it is put in the Critical state. If it fires correctly, it is put in the Good state.")] class MicrosoftHM_ActionStatus : MicrosoftHM_Status { }; [dynamic, description("Action Status Event Class")] class MicrosoftHM_ActionStatusEvent : MicrosoftHM_StatusEvent { }; [dynamic, description("Action Status Event Class")] class MicrosoftHM_ActionTriggerEvent : MicrosoftHM_StatusEvent { [DisplayName("Embedded Status"), description("The Health Monitor status instance that is triggering the action.")] MicrosoftHM_StatusEvent EmbeddedStatusEvent; }; //////////////////////////////////////////////////////////////////////////////////////////// // Event Provider //////////////////////////////////////////////////////////////////////////////////////////// instance of __Win32Provider { Name = "MicrosoftHM_SystemEventProvider"; CLSID = "{68AC0D36-DB09-11d2-8F56-006097919914}"; DefaultMachineName = NULL; ClientLoadableCLSID = NULL; ImpersonationLevel = 0; PerUserInitialization = FALSE; //XXX Pure = TRUE; Pure = FALSE; UnloadTimeout = NULL; }; instance of __Win32Provider { Name = "MicrosoftHM_DataGroupEventProvider"; CLSID = "{68AC0D37-DB09-11d2-8F56-006097919914}"; DefaultMachineName = NULL; ClientLoadableCLSID = NULL; ImpersonationLevel = 0; PerUserInitialization = FALSE; Pure = FALSE; UnloadTimeout = NULL; }; instance of __Win32Provider { Name = "MicrosoftHM_DataCollectorEventProvider"; CLSID = "{68AC0D38-DB09-11d2-8F56-006097919914}"; DefaultMachineName = NULL; ClientLoadableCLSID = NULL; ImpersonationLevel = 0; PerUserInitialization = FALSE; Pure = FALSE; UnloadTimeout = NULL; }; instance of __Win32Provider { Name = "MicrosoftHM_DataCollectorPerInstanceEventProvider"; CLSID = "{3A7A82DC-8D5C-4ab7-801B-A1C7D30089C6}"; DefaultMachineName = NULL; ClientLoadableCLSID = NULL; ImpersonationLevel = 0; PerUserInitialization = FALSE; Pure = FALSE; UnloadTimeout = NULL; }; instance of __Win32Provider { Name = "MicrosoftHM_ThresholdEventProvider"; CLSID = "{68AC0D39-DB09-11d2-8F56-006097919914}"; DefaultMachineName = NULL; ClientLoadableCLSID = NULL; ImpersonationLevel = 0; PerUserInitialization = FALSE; Pure = FALSE; UnloadTimeout = NULL; }; //instance of __Win32Provider //{ // Name = "MicrosoftHM_ThresholdInstanceEventProvider"; // CLSID = "{68AC0D42-DB09-11d2-8F56-006097919914}"; // DefaultMachineName = NULL; // ClientLoadableCLSID = NULL; // ImpersonationLevel = 0; // PerUserInitialization = FALSE; // Pure = FALSE; // UnloadTimeout = NULL; //}; instance of __Win32Provider { Name = "MicrosoftHM_ActionEventProvider"; CLSID = "{68AC0D43-DB09-11d2-8F56-006097919914}"; DefaultMachineName = NULL; ClientLoadableCLSID = NULL; ImpersonationLevel = 0; PerUserInitialization = FALSE; Pure = FALSE; UnloadTimeout = NULL; }; instance of __Win32Provider { Name = "MicrosoftHM_ActionTriggerEventProvider"; CLSID = "{68AC0D44-DB09-11d2-8F56-006097919914}"; DefaultMachineName = NULL; ClientLoadableCLSID = NULL; ImpersonationLevel = 0; PerUserInitialization = FALSE; Pure = FALSE; UnloadTimeout = NULL; }; instance of __EventProviderRegistration { provider = "__Win32Provider=\"MicrosoftHM_SystemEventProvider\""; EventQueryList = {"select * from MicrosoftHM_SystemStatusEvent"}; }; instance of __EventProviderRegistration { provider = "__Win32Provider=\"MicrosoftHM_DataGroupEventProvider\""; EventQueryList = {"select * from MicrosoftHM_DataGroupStatusEvent"}; }; instance of __EventProviderRegistration { provider = "__Win32Provider=\"MicrosoftHM_DataCollectorEventProvider\""; EventQueryList = {"select * from MicrosoftHM_DataCollectorStatusEvent"}; }; instance of __EventProviderRegistration { provider = "__Win32Provider=\"MicrosoftHM_DataCollectorPerInstanceEventProvider\""; EventQueryList = {"select * from MicrosoftHM_DataCollectorPerInstanceStatusEvent"}; }; instance of __EventProviderRegistration { provider = "__Win32Provider=\"MicrosoftHM_ThresholdEventProvider\""; EventQueryList = {"select * from MicrosoftHM_ThresholdStatusEvent"}; }; instance of __EventProviderRegistration { provider = "__Win32Provider=\"MicrosoftHM_ActionEventProvider\""; EventQueryList = {"select * from MicrosoftHM_ActionStatusEvent"}; }; instance of __EventProviderRegistration { provider = "__Win32Provider=\"MicrosoftHM_ActionTriggerEventProvider\""; EventQueryList = {"select * from MicrosoftHM_ActionTriggerEvent"}; }; ///////////////////////////////////////////////////////////////////////////////////////////// // Permanent Consumer ///////////////////////////////////////////////////////////////////////////////////////////// instance of __Win32Provider { Name = "MicrosoftHM_PermConsumer"; Clsid = "{68AC0D35-DB09-11d2-8F56-006097919914}"; }; instance of __EventConsumerProviderRegistration { Provider = "__Win32Provider=\"MicrosoftHM_PermConsumer\""; ConsumerClassNames = {"MicrosoftHM_PermConsumer"}; }; class MicrosoftHM_PermConsumer : __EventConsumer { [key] string Name; }; instance of MicrosoftHM_PermConsumer { Name = "HealthMon"; }; /////////////////////////////////////////////////////////////////////////////////////////// // TIMER EVENT //////////////////////////////////////////////////////////////////////////////////////////// // create an instance of Timer instance of __IntervalTimerInstruction { IntervalBetweenEvents = 10000; // Initially set to 10 seconds TimerId = "MicrosoftHM_Timer"; }; //MOVED to timer.mof //////////////////////////////////////////////////////////////////////////////////////////// // create an instance of TimerEvent Filter //instance of __EventFilter //{ // Name = "MicrosoftHM_Filter"; // Query = "select * from __TimerEvent where TimerId=\"MicrosoftHM_Timer\""; // QueryLanguage = "WQL"; //}; /////////////////////////////////////////////////////////////////////////////////////////// // HMSystemConfiguration EVENTS instance of __EventFilter { Name = "MicrosoftHM_Filter2"; Query = "select * from __InstanceModificationEvent where TargetInstance isa \"MicrosoftHM_SystemConfiguration\""; QueryLanguage = "WQL"; }; /////////////////////////////////////////////////////////////////////////////////////////// // HMDataGroupConfiguration EVENTS instance of __EventFilter { Name = "MicrosoftHM_Filter3"; Query = "select * from __InstanceModificationEvent where TargetInstance isa \"MicrosoftHM_DataGroupConfiguration\""; QueryLanguage = "WQL"; }; /////////////////////////////////////////////////////////////////////////////////////////// // HMDataCollectorConfiguration EVENTS instance of __EventFilter { Name = "MicrosoftHM_Filter4"; Query = "select * from __InstanceModificationEvent where TargetInstance isa \"MicrosoftHM_DataCollectorConfiguration\""; QueryLanguage = "WQL"; }; /////////////////////////////////////////////////////////////////////////////////////////// // HMThresholdConfiguration EVENTS instance of __EventFilter { Name = "MicrosoftHM_Filter5"; Query = "select * from __InstanceModificationEvent where TargetInstance isa \"MicrosoftHM_ThresholdConfiguration\""; QueryLanguage = "WQL"; }; /////////////////////////////////////////////////////////////////////////////////////////// // HMConfigurationAssociation EVENTS instance of __EventFilter { Name = "MicrosoftHM_Filter6"; Query = "select * from __InstanceCreationEvent where TargetInstance isa \"MicrosoftHM_ConfigurationAssociation\""; QueryLanguage = "WQL"; }; /////////////////////////////////////////////////////////////////////////////////////////// // HMActionConfiguration EVENTS instance of __EventFilter { Name = "MicrosoftHM_Filter7"; Query = "select * from __InstanceModificationEvent where TargetInstance isa \"MicrosoftHM_ActionConfiguration\""; QueryLanguage = "WQL"; }; instance of __EventFilter { Name = "MicrosoftHM_Filter8"; Query = "select * from __InstanceCreationEvent where TargetInstance isa \"MicrosoftHM_ActionConfiguration\""; QueryLanguage = "WQL"; }; /////////////////////////////////////////////////////////////////////////////////////////// // HMActionConfigurationActionAssociation EVENTS instance of __EventFilter { Name = "MicrosoftHM_Filter9"; Query = "select * from __InstanceCreationEvent where TargetInstance isa \"MicrosoftHM_ConfigurationActionAssociation\""; QueryLanguage = "WQL"; }; instance of __EventFilter { Name = "MicrosoftHM_Filter10"; Query = "select * from __InstanceModificationEvent where TargetInstance isa \"MicrosoftHM_ConfigurationActionAssociation\""; QueryLanguage = "WQL"; }; instance of __EventFilter { Name = "MicrosoftHM_Filter11"; Query = "select * from __InstanceDeletionEvent where TargetInstance isa \"MicrosoftHM_ConfigurationActionAssociation\""; QueryLanguage = "WQL"; }; ///////////////////////////////////////////////////////////////////////////////////////////// // *** Binding Section *** instance of __FilterToConsumerBinding { Consumer = "MicrosoftHM_PermConsumer.Name=\"HealthMon\""; Filter = "__EventFilter.Name=\"MicrosoftHM_Filter\""; }; instance of __FilterToConsumerBinding { Consumer = "MicrosoftHM_PermConsumer.Name=\"HealthMon\""; Filter = "__EventFilter.Name=\"MicrosoftHM_Filter2\""; }; instance of __FilterToConsumerBinding { Consumer = "MicrosoftHM_PermConsumer.Name=\"HealthMon\""; Filter = "__EventFilter.Name=\"MicrosoftHM_Filter3\""; }; instance of __FilterToConsumerBinding { Consumer = "MicrosoftHM_PermConsumer.Name=\"HealthMon\""; Filter = "__EventFilter.Name=\"MicrosoftHM_Filter4\""; }; instance of __FilterToConsumerBinding { Consumer = "MicrosoftHM_PermConsumer.Name=\"HealthMon\""; Filter = "__EventFilter.Name=\"MicrosoftHM_Filter5\""; }; instance of __FilterToConsumerBinding { Consumer = "MicrosoftHM_PermConsumer.Name=\"HealthMon\""; Filter = "__EventFilter.Name=\"MicrosoftHM_Filter6\""; }; instance of __FilterToConsumerBinding { Consumer = "MicrosoftHM_PermConsumer.Name=\"HealthMon\""; Filter = "__EventFilter.Name=\"MicrosoftHM_Filter7\""; }; instance of __FilterToConsumerBinding { Consumer = "MicrosoftHM_PermConsumer.Name=\"HealthMon\""; Filter = "__EventFilter.Name=\"MicrosoftHM_Filter8\""; }; instance of __FilterToConsumerBinding { Consumer = "MicrosoftHM_PermConsumer.Name=\"HealthMon\""; Filter = "__EventFilter.Name=\"MicrosoftHM_Filter9\""; }; instance of __FilterToConsumerBinding { Consumer = "MicrosoftHM_PermConsumer.Name=\"HealthMon\""; Filter = "__EventFilter.Name=\"MicrosoftHM_Filter10\""; }; instance of __FilterToConsumerBinding { Consumer = "MicrosoftHM_PermConsumer.Name=\"HealthMon\""; Filter = "__EventFilter.Name=\"MicrosoftHM_Filter11\""; }; //////////////////////////////////////////////////////////////////////////////// instance of MicrosoftHM_SystemConfiguration AS $S1 { GUID = "{@}"; Name = "."; StartupDelayTime = 0; // In seconds MaxInstancesPerDataCollector = 40; };