Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

948 lines
76 KiB

  1. ////////////////////////////////////////////////////////////////////////////////
  2. // HealthMon.Mof
  3. // Copyright (c)1999 Microsoft Corporation, All Rights Reserved
  4. //
  5. qualifier Values: amended;
  6. qualifier Description: amended;
  7. #pragma autorecover
  8. #pragma namespace("\\\\.\\root\\cimv2")
  9. //******************************************************************************
  10. // *** Namespace Section ***
  11. // Create HealthMonitor Namespace
  12. //******************************************************************************
  13. //
  14. instance of __NAMESPACE
  15. {
  16. Name = "MicrosoftHealthMonitor";
  17. };
  18. #pragma namespace("MicrosoftHealthMonitor")
  19. /////////////////////////////////////////////////////////////////////////////////////////////
  20. // class Microsoft_HMVersion
  21. /////////////////////////////////////////////////////////////////////////////////////////////
  22. [singleton, description("HealthMon Version class.")]
  23. class Microsoft_HMVersion
  24. {
  25. [read]
  26. string MajorVersion;
  27. [read]
  28. string MinorVersion;
  29. [read]
  30. string BuildVersion;
  31. [read]
  32. string HotfixVersion;
  33. };
  34. instance of Microsoft_HMVersion
  35. {
  36. MajorVersion = "2";
  37. MinorVersion = "10";
  38. BuildVersion = "$$$@";
  39. HotfixVersion = "!!!@";
  40. };
  41. //******************************************************************************
  42. //******************************************************************************
  43. //******************************************************************************
  44. // PROVIDER REGISTRATION SECTION
  45. // The HealthMon agent acts as an Instance, event and method provider. It is
  46. // also a consumer provider.
  47. //******************************************************************************
  48. //******************************************************************************
  49. //******************************************************************************
  50. ////////////////////////////////////////////////////////////////////////////////////////////
  51. // Instance Provider
  52. ////////////////////////////////////////////////////////////////////////////////////////////
  53. instance of __Win32Provider
  54. {
  55. Name = "Microsoft_HMInstProvider";
  56. CLSID = "{68AC0D34-DB09-11d2-8F56-006097919914}";
  57. };
  58. // registration
  59. instance of __InstanceProviderRegistration
  60. {
  61. Provider = "__Win32Provider=\"Microsoft_HMInstProvider\"";
  62. SupportsPut = FALSE;
  63. SupportsGet = TRUE;
  64. SupportsDelete = FALSE;
  65. SupportsEnumeration = TRUE;
  66. QuerySupportLevels = {"WQL:UnarySelect"};
  67. };
  68. ////////////////////////////////////////////////////////////////////////////////////////////
  69. // Method Provider
  70. ////////////////////////////////////////////////////////////////////////////////////////////
  71. //instance of __Win32Provider as $P
  72. instance of __Win32Provider
  73. {
  74. Name = "Microsoft_HMMethProvider";
  75. CLSID = "{68AC0D41-DB09-11d2-8F56-006097919914}";
  76. };
  77. instance of __MethodProviderRegistration
  78. {
  79. Provider = "__Win32Provider=\"Microsoft_HMMethProvider\"";
  80. };
  81. ////////////////////////////////////////////////////////////////////////////////////////////
  82. // Base Classes
  83. ////////////////////////////////////////////////////////////////////////////////////////////
  84. [description("HealthMon Context class. Used to pass context to a DataCollector, and for arguments to a Method.")]
  85. class Microsoft_HMContext
  86. {
  87. [key] string Name;
  88. [values {"CIM_SINT8","CIM_UINT8","CIM_SINT16","CIM_UINT16","CIM_SINT32",
  89. "CIM_UINT32","CIM_SINT64","CIM_UINT64","CIM_REAL32","CIM_REAL64","CIM_BOOLEAN",
  90. "CIM_STRING","CIM_DATETIME", "CIM_CHAR16"},
  91. valuemap {"16","17","2","18","3","19","20","21","4","5","11","8","101","103"}]
  92. uint32 Type;
  93. string Value;
  94. };
  95. [abstract, description("HealthMon Base class.")]
  96. class Microsoft_HMBase
  97. {
  98. [key, description("Unique identifier")]
  99. string GUID;
  100. };
  101. [abstract, description("HealthMon Base Configuration class.")]
  102. class Microsoft_HMConfiguration : Microsoft_HMBase
  103. {
  104. // [description("Display name.")]
  105. // string Name;
  106. // [description("Description.")]
  107. // string Description;
  108. boolean Enabled = TRUE;
  109. [description("For external tool usage. Not used by the console, or agent.")]
  110. boolean Hidden = FALSE;
  111. };
  112. [abstract, description("HealthMon Base Status class.")]
  113. class Microsoft_HMStatus : Microsoft_HMBase
  114. {
  115. string Name;
  116. [description("GUID of the Parent")]
  117. String ParentGUID;
  118. [values {"GOOD","COLLECTING","RESET","INFO","DISABLED","SCHEDULEDOUT","UNKNOWN","NODATA","WARNING","CRITICAL"}, description("The state we are in")]
  119. uint32 State;
  120. [description("Number currently in Critical state")]
  121. uint32 NumberWarnings;
  122. [description("Number currently in Warning state")]
  123. uint32 NumberCriticals;
  124. [description("Number currently in Normal state")]
  125. uint32 NumberNormals;
  126. };
  127. [abstract, description("HealthMon Base Statistics class.")]
  128. class Microsoft_HMStatistics : Microsoft_HMBase
  129. {
  130. };
  131. [Association : ToInstance]
  132. class Microsoft_HMConfigurationAssociation
  133. {
  134. [key]
  135. Microsoft_HMConfiguration ref ParentPath;
  136. [key]
  137. Microsoft_HMConfiguration ref ChildPath;
  138. };
  139. // Can Associate the same Action to more than one Object!!!
  140. [Association : ToInstance, description("Associates a Configuration to an Action.")]
  141. class Microsoft_HMConfigurationActionAssociation : Microsoft_HMConfigurationAssociation
  142. {
  143. [description("How many seconds must elaps before this action can be performed again. Zero for always perform.")]
  144. uint32 ThrottleTime = 0;
  145. [description("How many seconds between firing off the action if we are still in the critical, or warning state.")]
  146. uint32 ReminderTime = 0;
  147. [not_null] string Query = "";
  148. __EventFilter ref EventFilter;
  149. };
  150. //******************************************************************************
  151. //******************************************************************************
  152. //******************************************************************************
  153. // CONFIGURATION CLASS DECLARATION SECTION
  154. // Classes dealing with the configuration of the Agent
  155. //******************************************************************************
  156. //******************************************************************************
  157. //******************************************************************************
  158. // The heirachy of classes and how they interrelate, can be illustratred with
  159. // the following diagram example. The sections that follow specify the classes
  160. // and associations that are used.
  161. //
  162. // - Microsoft_HMSystem
  163. // |
  164. // |--MyDataGroup Microsoft_HMDataGroup (convenient grouping the user likes)
  165. // | |
  166. // | |--Processor Microsoft_HMDataGroup (Gouping for processor related data)
  167. // | | |
  168. // | | |--%ProcessorTime Microsoft_HMDataCollector (Collect the processor time perf counter)
  169. // | | |
  170. // | | |--Warning Microsoft_HMThreshold (If CurrentValue > 70 for 300 sec)
  171. // | | |
  172. // | | |--Critical Microsoft_HMThreshold (If CurrentValue > 90 for 300 sec)
  173. // | | |
  174. // | | |--PageEric Microsoft_HMAction (If 9am to 5pm)
  175. // | | |
  176. // | | |--PageGreg Microsoft_HMAction (If 5pm to 9am)
  177. // | |
  178. // | |--LogicalDisk Microsoft_HMDataGroup
  179. // | |
  180. // | |--%FreeSpace Microsoft_HMDataCollector
  181. // | |
  182. // | |--%FreeMegabytes Microsoft_HMDataCollector
  183. // |
  184. // |--ExchangeServer Microsoft_HMDataGroup
  185. // |
  186. // |--WorkQueueLength Microsoft_HMDataCollector
  187. ////////////////////////////////////////////////////////////////////////////////
  188. // System class - ???
  189. // A singleton class, main purpose is to allow quick disabling of agent, and
  190. // specifying a startup delay for the agent.
  191. // Can't have a Singletone class with a key property
  192. //[Singleton, provider("Microsoft_HMMethProvider"), description("System class. Acts as a container for DataGroups. All Methods reside in this class.")]
  193. [provider("Microsoft_HMMethProvider"), description("System class. Acts as a container for DataGroups. All Methods reside in this class.")]
  194. class Microsoft_HMSystemConfiguration : Microsoft_HMConfiguration
  195. {
  196. //[description("What account to use for WMI connections.")]
  197. // String ConnectionAccount;
  198. [description("How many seconds after WMI startup that Threshold evaluation begins.")]
  199. uint32 StartupDelayTime = 0;
  200. boolean TransferLocStrings = TRUE;
  201. [Implemented, static] uint32 Delete (
  202. [in, description("Identifier of what to delete.")] String TargetGUID
  203. );
  204. [Implemented, static] uint32 ResetDataCollectorState(
  205. [in, description("Identifier of what to reset. Can be a DataGroup")] String TargetGUID
  206. );
  207. [Implemented, static] uint32 ResetDataCollectorStatistics(
  208. [in, description("Identifier of what to reset. Can be a DataGroup")] String TargetGUID
  209. );
  210. [Implemented, static] uint32 EvaluateDataCollectorNow(
  211. [in, description("Identifier of what to reset. Can be a DataGroup")] String TargetGUID
  212. );
  213. [Implemented, static] uint32 Copy(
  214. [in, description("Identifier of what to copy (includes all of the underlying hierarcy and associations).")]
  215. String TargetGUID,
  216. [out, description("System we are coming from")]
  217. String OriginalSystem,
  218. [out, description("Parent we are coming from")]
  219. String OriginalParentGUID,
  220. [out, description("Objects to do Paste with")]
  221. Microsoft_HMConfiguration Instances[]
  222. );
  223. [Implemented, static, values {"OK","ERROR","NAME_CONFLICT"}, description("Similar to Windows Explorer functionality. 1 = An Error occured in the paste operation. 2 = There was an existing child at the same level with the same name, and ForceReplace was set to FALSE.")]
  224. uint32 Paste(
  225. [in, description("Where to copy it to")]
  226. String TargetGUID,
  227. [in, description("How to proceed.")]
  228. boolean ForceReplace,
  229. [in, description("System we came from")]
  230. String OriginalSystem,
  231. [in, description("Parent we came from")]
  232. String OriginalParentGUID,
  233. [in, description("Objects to do Paste with")]
  234. Microsoft_HMConfiguration Instances[]
  235. );
  236. [Implemented, static] uint32 DeleteConfigurationActionAssociation(
  237. [in, description("Config GUID")]
  238. String TargetGUID,
  239. [in, description("Action GUID")]
  240. String ActionGUID
  241. );
  242. };
  243. ////////////////////////////////////////////////////////////////////////////////
  244. // Microsoft_HMDataGroup class - This is used to group DataCollectors together. It acts like a folder.
  245. // We do allow nested Microsoft_HMDataGroups.
  246. [description("HealthMon Microsoft_HMDataGroup class. Acts as a container for DataCollectors and nested DataGroups.")]
  247. class Microsoft_HMDataGroupConfiguration : Microsoft_HMConfiguration
  248. {
  249. [description("Display Name"), ValueMap{"SecurityName","ExWebSiteName","MemIssueName","OpIssueName","ExMonitorName","SNAName","FileSysName","ProxyName","MainServName","WinNTName","ProcIssName","SQLServName","ExchangeServName","ExAddName","ServName","SecServName","HMAuditName","SMSName","SysIssName","NetIssName","IISName","DiskName","SQLMonName","SQLPerfName" },
  250. Values{"Security Monitoring","Example Web Site Monitors","Memory Monitoring","Operating System","Example Monitors","SNA Server","File System Monitoring","Proxy Server 3.0","Main Services","Windows NT","Processor Monitoring","SQL Server 7.0","Exchange Server", "Example monitors requiring additional configuration", "Services","Secondary Services", "Health Monitor Auditing","SMS 2.0","System Monitoring","Network Monitoring", "IIS Server","Disk Monitoring (Physical & Logical)","SQL Server/Agent NT Log Monitors","SQL Server Perf Counter Monitors"}]
  251. string Name;
  252. [description("Description"), ValueMap{"SecurityDesc","ExWebSiteDesc","MemIssueDesc","OpIssueDesc","ExMonitorDesc","SNADesc","FileSysDesc","ProxyDesc","MainServDesc","WinNTDesc","ProcIssDesc","SQLServDesc","ExchangeServDesc","ExAddDesc","ServDesc","SecServDesc","HMAuditDesc","SMSDesc","SysIssDesc","NetIssDesc","IISDesc","DiskDesc","SQLMonDesc","SQLPerfDesc" },
  253. Values{"These data collectors are in place to watch for security violations on the system.", "Perf. counters for ASP and W3Svc"," "," "," ","Group representing SNA Server monitoring rules"," "," "," "," "," "," ","Group representing Exchange Server monitoring rules","In order for these monitors to work properly, the admin must take additional configuration steps.", " "," ", "This group holds specific data collectors to watch for events generated when the Health Monitor 2.1 configuration is changed. All messages generated are for informational purposes only.", " "," "," ", "Group representing IIS Server monitoring rules","In determining a disk bottleneck, do the following: A) Rule out any memory shortages by examining Memory and Paging. Consider updating your disk controller card to a higher bit controller 8 to 16, 16 to 32, etc. You can always add a disk if you have the space, but if you are getting slow disk performance - adding disks wont help your disk performance. Another option is to upgrade your disk adapter to a bus-mastering DMA instead of Programmed I/O. Programmed I/O uses the processor to setup disk transfers and switching to a DMA disk adapter will free up the processor. Finally, if you decide on adding a disk consider putting the new disk on a separate I/O bus."," "," "}]
  254. string Description;
  255. };
  256. ////////////////////////////////////////////////////////////////////////////////
  257. // Microsoft_HMDataCollector class - This is the class used for a single WMI instance collection.
  258. // Where the DataCollector collects the instance from WMI the Threshold tests against
  259. // this data. This is the abstract base class, with several classes of use deerived
  260. // from it.
  261. [abstract, description("HealthMon Instance Collector class. This class acts as the collector of a WMI instance. Rules can be associated to this to perform evaluations against what was collected.")]
  262. class Microsoft_HMDataCollectorConfiguration : Microsoft_HMConfiguration
  263. {
  264. [description("The complete path to the instance to collect. The path may contain a remote machine name")]
  265. string TargetNamespace;
  266. [description("Gets passed on as provider specific information.")]
  267. Microsoft_HMContext Context[];
  268. [description("How often to sample. How often this DataCollector 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 DataCollector, 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.")]
  269. uint32 CollectionIntervalMultiple = 60;
  270. [description("The amount of time allowed for a relpy. The DataCollector will go into the UNKNOWN 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.")]
  271. uint32 CollectionTimeOut = 60;
  272. [description("Number of collection intervals to calculate the statistics across.")]
  273. uint32 StatisticsWindowSize = 6;
  274. [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.")]
  275. uint8 ActiveDays = 01111111B;
  276. [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.")]
  277. datetime BeginTime = NULL;
  278. [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.")]
  279. datetime EndTime = NULL;
  280. [description("For use by the console to aid in the display")]
  281. string TypeGUID;
  282. [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.")]
  283. boolean RequireReset = FALSE;
  284. [description("What properties to collect statistics on.")]
  285. string Properties[];
  286. };
  287. [description("Derived Data Element that collects its data by using a path at a poling interval.")]
  288. class Microsoft_HMPolledGetObjectDataCollectorConfiguration : Microsoft_HMDataCollectorConfiguration
  289. {
  290. [ValueMap{"PerfName","ExServName","ExWMIIName","Pagname","SMSSQLName","ExServ2Name","SysName","RedirName","ASPCName","SQLServName","SMSSiteName","SMSExecName","PhyDiskName","ExServ3Name","SNAServName","MemName","DiskPerfName","LogDiskName","NetName","ServMemName","SMSStatName","WMIName","HTTPName","SPVerName","WebSrvName","SNAName","ISName","ExServ4Name","ServAccName","FileSysName","InboxName","LdiskName","MSWebName","ProcName","SysInName","AccName","MMName","GenName","LockName","BuffName","SQLStatName","DBName","PerfMonName","ComPlusName","HTTPMonName","WMIInstName" },
  291. Values{"Performance Monitor","Exchange Server (MSEXCHANGEDS)","Example WMI Instance","Paging file","SMS SQL Monitor","Exchange Server (MSEXCHANGEMTA)","System information","Redirector","Active Server Pages Counters","SQL Server Service","SMS Site Component Manager","SMS Executive","Physical disks","Exchange Server (MSEXCHANGESA)","SNA Server","Memory and Paging","Check if DiskPerf is running","Logical disks","Network Interface","Server Memory","SMS Status Manager","Monitor the WINMGMT Process","HTTP Monitor","Service/Process Verification","Web Service Counters","Host Connection Status","IIS Server","Exchange Server (MSEXCHANGEIS)","Server Access Errors","File System Cache","SMS Inbox Manager","Example of Performance Monitor collector","Check Microsoft's Web Page","Processor","System Information","Access Methods","Memory Manager","General Statistics","Locks","Buffer Manager","SQL Statistics","Databases","Performance Monitor","COM+ Application Monitor","Default HTTP Monitor","WMI Instance Monitor" }]
  292. string Name;
  293. [ValueMap{"PerfDesc","ExServDesc","ExWMIIDesc","PagDesc","SMSSQLDesc","ExServ2Desc","SysDesc","RedirDesc","ASPCDesc","SQLServDesc","SMSSiteDesc","SMSExecDesc","PhyDiskDesc","ExServ3Desc","SNAServDesc","MemDesc","DiskPerfDesc","LogDiskDesc","NetDesc","ServMemDesc","SMSStatDesc","WMIDesc","HTTPDesc","SPVerDesc","WebSrvDesc","SNADesc","ISDesc","ExServ4Desc","ServAccDesc","FileSysDesc","InboxDesc","LdiskDesc","MSWebDesc","ProcDesc","SysInDesc","AccDesc","MMDesc","GenDesc","LockDesc","BuffDesc","SQLStatDesc","DBDesc","PerfMonDesc","ComPlusDesc","HTTPMonDesc","WMIInstDesc" },
  294. Values{"Monitors Perfmon data","Monitors Microsoft Exchange Server service (MSEXCHANGEDS)","By defining a WMI Instance Data Collector, you are able to monitor other data within WMI that may not be available through the other types. This is helpful if you have a new data provider and need to monitor instances that it provides. "," ","Monitors Microsoft SMS service (SMS_SQL_Monitor) status.","Monitors Microsoft Exchange Server service (MSEXCHANGEMTA)"," "," "," ","Monitors Microsoft SQL Server service status.","Monitors Microsoft SMS service (SMS_Site_Component_Manager) status.","Monitors Microsoft SMS service (SMS_Executive) status.","Note: Sustained high disk use and persistent long queues typically are symptoms of memory shortage, not disk bottlenecks. When physical memory is scarce, the system starts writing the contents of memory to disk and reading in smaller chunks more frequently. The less memory you have, the more the disk is used. Rule out a memory bottleneck before investigating any money in new disks.","Monitors Microsoft Exchange Server service (MSEXCHANGESA)","Monitors Microsoft Host Server service status.","The first step in diagnosing a DISK bottleneck is to distinquish it from a MEMORY bottleneck. Sustained paging, a symptom of memory shortage, can look like a disk bottleneck. Excessive paging that consumes the disk is a symptom of memory shortage. The solution is to add memory, not disks. Paging, of course, is expected, especially when starting up the system. ","DiskPerf must be running in order to expose counters for disk information. If it is not running, you can run it by entering DISKPERF -Y from the command line and then rebooting."," "," "," ","Monitors Microsoft SMS service (SMS_Status_Manager) status."," ","Monitors HTTP","Monitors a service"," ","Monitors Microsoft Host Server connection status.","Monitors Microsoft Internet Information Server service status.","Monitors Microsoft Exchange Server service (MSEXCHANGEIS)"," "," ","Monitors Microsoft SMS service (SMS_InBox_Manager) status.","Any data that is available via the Windows 2000 Performance Monitor tool can be monitored through this data collector. Note that if you do NOT specify an instance for the object you are monitoring, Health Monitor will collect ALL the instances of that Object. This is helpful when monitoring for things like Drive space where there may be several instances (C: D: E: and F:). If you want to monitor a specific instance, you can still create a Data Collector for one instance. However, it is much simpler to just define a data collector for all instances. This way a threshold is applied to all the instances at one time, rather than creating muliple Data Collectors for each instance."," "," "," "," "," "," "," "," "," "," ","Monitors Windows 2000 Performance Monitor Data","Monitors COM+ Data Objects","HTTP Monitor","WMI Instance Data Monitor" }]
  295. string Description;
  296. [description("Specifies what data to get .e.g. Win32_SystemDriver.Name=\"DiskPerf\".")]
  297. string ObjectPath;
  298. };
  299. [description("Derived Data Element that collects its data by using a method at a poling interval.")]
  300. class Microsoft_HMPolledMethodDataCollectorConfiguration : Microsoft_HMDataCollectorConfiguration
  301. {
  302. [ValueMap{"PingName","SMTPName","FTPName","ICMPName","ExSMTPName","PingMonName","FTPMonName","DefSMTPMonName" },
  303. Values{"Example of PING","SMTP","FTP","ICMP","Example SMTP Monitor","Ping (ICMP) Monitor","FTP Monitor","SMTP Monitor" }]
  304. string Name;
  305. [ValueMap{"PingDesc","SMTPDesc","FTPDesc","ICMPDesc","ExSMTPDesc" },
  306. Values{"The PING provider allows you to monitor specific IP addresses or machine names for availability.","Monitors an SMTP server","Monitors an FTP server","Monitors ICMP","The SMTP monitor allows you to test EMAIL services to see if mail can be sent property." }]
  307. string Description;
  308. [description("Specifies the class name or instance.")]
  309. string ObjectPath;
  310. [description("Method to call e.g. Microsoft_InternetProtocolExecution.Execute.")]
  311. string MethodName;
  312. [description("Arguments to the method.")]
  313. Microsoft_HMContext Arguments[];
  314. };
  315. [description("Derived Data Element that collects its data by using a query at a poling interval.")]
  316. class Microsoft_HMPolledQueryDataCollectorConfiguration : Microsoft_HMDataCollectorConfiguration
  317. {
  318. [ValueMap{"RemoveName","DHCPName","ServerName","TaskName","FileName","SecLogName","ProtSName","DLTCName","EvLogName","RPCName","NetLogName","BrowsName","ExWMIQName","SysEvName","TCPName","TermServName","IPSecName","WtimeName","LogDMName","PPName","IndServName","WlogName","TSLName","DNSName","RemRegName","AlertName","MessName","SAMName","ExServMonName","PspoolName","DefFileName","DefWMIDQName", "ServiceMonitor" },
  319. Values{"Removeable storage","DHCP","Server","Task Scheduler","Example of File Data Collector","Secondary Logon Service","Protected Storage","Distributed Link Tracking Client","Event Log","Remote Procedure Call (RPC)","Net Logon","Browser","Example of WMI Data Query","System Event Notification","TCP/IP Netbios helper","Terminal Services","IPSec Policy Agent","Windows Time","Logical Disk Manager","Plug and Play","Indexing Service","Windows Logon","Terminal Services Licensing","DNS Client","Remote Registry","Alerter","Messenger","Security Accounts Manager (SAM)","Example of Service or Process Monitor","Print Spooler","File Information","WMI Data Query", "Service Monitor" }]
  320. string Name;
  321. [ValueMap{"RemoveDesc","DHCPDesc","ServerDesc","TaskDesc","FileDesc","SecLogDesc","ProtSDesc","DLTCDesc","EvLogDesc","RPCDesc","NetLogDesc","BrowsDesc","ExWMIQDesc","SysEvDesc","TCPDesc","TermServDesc","IPSecDesc","WtimeDesc","LogDMDesc","PPDesc","IndServDesc","WlogDesc","TSLDesc","DNSDesc","RemRegDesc","AlertDesc","MessDesc","SamDesc","ExServMonDesc","PspoolDesc" },
  322. Values{" "," "," "," ","You can monitor for file or folder properties to monitor if a file is growing too large or a file or folder has been deleted or changed. "," "," "," "," "," "," "," ","Using WMI Data Queries you can create a query to monitor WMI data."," "," "," "," "," "," "," "," "," "," "," "," "," "," "," ","The Service or Process Data Collector allows you to monitor specific properties of a selected service or process. This allows you to monitor if a service is stopped or a process vanishes (which should be running)."," "}]
  323. string Description;
  324. [description("E.g. select * from Win32_Process where name=outlook.")]
  325. string Query;
  326. };
  327. [description("Derived Data Element that collects its data by registering an event notification query.")]
  328. class Microsoft_HMEventQueryDataCollectorConfiguration : Microsoft_HMDataCollectorConfiguration
  329. {
  330. [ValueMap{"WatchEditName","CEDConfigName","WatchCEDDCName","WatchCEDThName","ASPName","WSEName","WCEDAName","W2EventName","NTEventMonName","WCEDDataName","CeDConName","ExEventQueryName","NTLogName","NTSqlLogName","NTSqlErrName","DefNTEvName","DefWMIEQName" },
  331. Values{"Watch for Editing of the System Properties","Create, edit or delete configuration","Watch for Creation, Edit or Deletion of Data Collectors","Watch for Creation, Edit or Deletion of Thresholds","Active Server Pages Event","Web Service Events","Watch for Creation, Edit or Deletion of Actions","Example Windows 2000 Event Monitor","Windows NT Event Monitor","Watch for Creation, Edit or Deletion of Data Groups","Create, Edit or Delete Configuration","Example of Event Log as a Generic WMI Event Query","NT Log: SQL Agent Errors","NT Log: SQL Server Warnings","NT Log: SQL Server Errors","Windows NT Event Monitor","WMI Event Query" }]
  332. string Name;
  333. [ValueMap{"WatchEditDesc","CEDConfigDesc","WatchCEDDCDesc","WatchCEDThDesc","ASPDesc","WSEDesc","WCEDADesc","W2EventDesc","NTEventMonDesc","WCEDDataDesc","CEDConDesc","ExEventQueryDesc","NTLogDesc","NtSqlLogDesc","NTSqlErrDesc","DefNTEvDesc","DefWMIEQDesc" },
  334. Values{" "," "," "," "," "," "," "," ","Using the Windows 2000 Event Monitor, Health Monitor 2.1 can register to receive specific Windows 2000 Events as they are generated to the log file. You can monitor for all of a type of events, a specific event or a combination of such events.","Monitors the Windows 2000 Event Monitor"," ","Use WMI Event queries you can do complicated AND and OR operations directly against WMI data. Note that Event Registrations are different from Polled (those that use Intervals in the schedule). Event registrations get data when the event is generated, where polled data gets data based on the polling interval."," "," "," "," "," " }]
  335. string Description;
  336. [description("E.g. select * from FanEvent.")]
  337. string Query;
  338. };
  339. ////////////////////////////////////////////////////////////////////////////////
  340. // Microsoft_HMThreshold class - This specifies how to Threshold against the value that
  341. // comes from the Microsoft_HMDataCollector instance. There can be more than one Threshold
  342. // looking at a single Microsoft_HMDataCollector. The values are evaluated at each collection
  343. // interval as specified in the Microsoft_HMDataCollector.
  344. [description("HealthMon Threshold class. Is associated to a Data Element to run evaluations against what the Data Element has collected.")]
  345. class Microsoft_HMThresholdConfiguration : Microsoft_HMConfiguration
  346. {
  347. [ValueMap{"PNPrunName", "DiskPerfrunName", "PagesPerSecName", "WinLogonServName", "PoolNonPageName","IPSecPolAgentName","PoolPagedFailName","DHCPRunName","DataGrpOpName","WebSerErrName","ReqNotAuthName","ReqTimeOutName","PagesReadPerSecName","RemStorRunName","CacheFaultsPerSecName","CdiskQLenName","PrntSplRunName","SMSStatServName","SessErrOutName","ASPErrSecName","DNSClientName","TCPIPNetbiosName","WinTimeSrvName","ExchangeMtaName","SchedRunName","SAMrunName","SENrunName","EvtLogRunName","CpyReadHtsName","PerDiskTimName","CurAnonUserName","ReqQueName","ChngLogOnErrName","SecLogOnSrvName","ExchangeEsaName","SNAHostName","ExchangeISName","SMSsiteComName","PerPageFileName","AlerterName","SrvrReconnectsName","SQLSrvServName","TotNotFndErrName","MsgnrServName","NetworkErrPSName","DistLnkTrckName","IISservName","ServRunName","ReqNotFound","IndexSrvName","PoolNonPageFailName","PerComBytUseName","ReqWaitTimeName","ActOpeComName","NetLogonRunName","ActOpeCom2Name","ExchangeDSName","SMSSQLMonName","PerProcTimeName","ServRunName","MSDTCName","FTPSuccName","ICMPStarName","SMTPRespTime","SMTPSuccName","HTTPResName","HTTPSuccName","SMSInboxManName","SMSExecServName","ASPEvtLogName","RemoteRegName","ServStopName","ReqExName","BytesTPSName","ErrAccPerName","PerUsPkName","RPCserName","ErrGrntAccName","ActiveDayName","CPUutilName","PgInPerSecName","PgFaultPSName","PerDiskTName","CDiskQLenName","PerRegQUseName","FreeMegaBytesName","AvailBytesName","SNAStopName","BrwsrRunName","AmntMemUsName","ReqReject","SysUpTName","TermLicStartName","DataCollName","TermServRunName","ThreshOldOpsName","PerFreeSpName","SysOpName","ProtStRunName","LogDiskManName","IntPSName","PerIntTName","PerPrivTName","PerProcT75Name","PerProcT80Name","PerUserT80Name","ProcQLen2Name","StatName","RespTName","StatCodeName","ServRunName","FileNameName","NumInstColl0Name","NumInstColl1Name","AgentErrName","TooManyWarnName","TooManyErrName","TableLockName","LockMemName","TotSerMemName","UserConnName","LockTimeOutPSName","NumDeadLockPSName","PageWritePSName","PageReadPSName","FreeBuffPageName","BuffCacheHitName","FailAutoName","SQLCompName","SQLReCompName","PerLogUseName","DataFileName","DefDiskTimeName","DefHTTPMonName","DefHTTPResName","DefICMPName","DefFTPName","DefFTPName2","DefSMTPName","DefSMTPResName", "ServiceMonitorStartedName", "ShutDownName", "AbortTPSName" },
  348. Values{"Is plug and play running?", "Is DiskPerf running?", "Pages per second > 80 for 5 minutes","Is the WinLogon serviice running?", "Change in pool non-paged bytes > 4MB in 5 minutes","Is the IPSec Policy Agent Running?", "Pool paged failures > 5","Is the DHCP service running?", "Was a Data Group operation committed?", "Error received","Request Not Authorized","Requests Timed Out", "Paging: Page reads per second > 5 for 5 minutes","Is the Removeable Storage running?", "Cache faults per second > 100 for 5 minutes","Current disk queue length > 2 for 5 minutes", "Is the print spooler running?", "Is the SMS Status Manager Service started?", "Sessions Errored Out > 5","Errors per second","Is the DNS client running?", "Is the TCP/IP Netbios helper running?", "Is the windows time service running?", "Is the MSEXCHANGEMTA Service Running?", "Is the scheduler running?", "Is the Security Accounts Manager running?", "Is the System Event Notification running?", "Is the Event Log Running?", "% Copy Read Hits < 60 for 10 minutes","% Disk Time > 85 for 30 minutes","Current Non Anonymous Users", "Request Queued","Change in logon errors > 10 for 5 minutes","Is the Secondary logon service running?", "Is the MSEXCHANGESA Service Running?", "Host Connection","Is the MSEXCHANGEIS Service Running?", "Is the SMS Site Component Manager Service started?", "% Usage > 90 for 10 minutes","Is the Alerter running?", "Change in server reconnects > 1 ","Is the SQL Service Running?", "Not Found Errors","Is the Messenger Service Running?", "Network errors per second > 1","Is Distributed Link Tracking Client running?", "Is the IIS Service Running?", "Is the Server running?", "Request Not Found", "Is the Indexing Service Running?", "Pool non-paged failures > 5", "% Committed Bytes > 70 for 10 minutes","Request Wait Time", "Action operation committed", "Is Netlogon running?", "Was an Actions operation committed?", "Is the MSEXCHANGEDS Service Running?", "Is the SMS SQL Monitor Service started?", "Value crossed", "Service Running", "Event received","FTP SUCCESS", "ICMP Status Threshold", "SMTP RESPONSE TIME","SMTP SUCCESS", "HTTP RESPONSE TIME","HTTP SUCCESS","Is the SMS Inbox Manager started?", "Is the SMS_Executive Service started?", "Error received", "Is the remote registry running?", "Service stopped", "Requests Executing", "Bytes total per second > 500KB for 3 minutes", "Change in access permission errors > 10 for 5 minutes", "% Usage Peak > 90", "Is the RPC Service Running?", "Change in granted access errors > 10 for 5 minutes","Was a Threshold operation committed?", "PercentProcessorTime > 5", "Paging: Pages input per second > 5 for 5 minutes", "Page faults per second > 100 for 5 minutes","% Disk time > 90 for 30 minutes", "Current disk queue length > 2 for 5 minutes", "Percent registry quota in use > 90 for 10 minutes","Free megabytes < 100MB", "Available bytes < 5MB for 20 minutes", "Is the SNA Service Running?", "Is the Browser running?", "PrivateBytes > 6000000", "Requests Rejected","The amount of time the system has been online","Is the terminal services licensing running? ","Was a Data Collector operation committed?", "Is the Terminal Service running?", "Threshold operation committed", "% Free Space < 10 for 10 minutes","Was a System operation committed?", "Is protected storage running?", "Is the Logical Disk Manager Running?", "Interrupts per second > 7000 for 60 seconds.", "% Interrupt Time > 5 for 5 minutes", "% Privileged Time > 80 for 10 minutes", "Average % Processor Time > 75 for 60 minutes", "% Processor Time > 80 for 10 minutes", "% User Time > 80 for 10 minutes", "Processor queue length > 2 for 5 minutes", "Status > 0", "Response Time > 30000", "Status Code >= 400", "Is the service running?", "FileName = REGEDT32.EXE", "HMNumInstancesCollected > 0","HMNumInstancesCollected > 1", "Agent errors showing up in Application Log", "Too many warnings", "Too many errors", "Table Lock Escalation", "Lock Memory", "Total Server Memory", "User Connections", "Locks Timeout/sec", "Number of deadlock/sec", "Page Writes/sec", "Page Reads/sec", "Fr
  349. string Name;
  350. [ValueMap{"PNPrunDesc", "DiskPerfrunDesc", "PagesPerSecDesc", "WinLogonServDesc", "PoolNonPageDesc","IPSecPolAgentDesc","PoolPagedFailDesc","DHCPRunDesc","DataGrpOpDesc","WebSerErrDesc","ReqNotAuthDesc","ReqTimeOutDesc","PagesReadPerSecDesc","RemStorRunDesc","CacheFaultsPerSec","CdiskQLenDesc","PrntSplRunDesc","SMSStatServDesc","SessErrOut","ASPErrSecDesc","DNSClientDesc","TCPIPNetbiosDesc","WinTimeSrvDesc","ExchangeMtaDesc","SchedRunDesc","SAMrunDesc","SENrunDesc","EvtLogRunDesc","CpyReadHtsDesc","PerDiskTimDesc","CurAnonUserDesc","ReqQueDesc","ChngLogOnErrDesc","SecLogOnSrvDesc","ExchangeEsaDesc","SNAHostDesc","ExchangeISDesc","SMSsiteComDesc","PerPageFileDesc","AlerterDesc","SrvrReconnectsDesc","SQLSrvServDesc","TotNotFndErrDesc","MsgnrServDesc","NetworkErrPSDesc","DistLnkTrckDesc","IISservDesc","ServRunDesc","ReqNotFound","IndexSrvDesc","PoolNonPageFailDesc","PerComBytUseDesc","ReqWaitTimeDesc","ActOpeComDesc","NetLogonRunDesc","ActOpeCom2Desc","ExchangeDSDesc","SMSSQLMonDesc","PerProcTimeDesc","ServRunDesc","MSDTCDesc","FTPSuccDesc","ICMPStarDesc","SMTPRespTime","SMTPSuccDesc","HTTPResDesc","HTTPSuccDesc","SMSInboxManDesc","SMSExecServDesc","ASPEvtLogDesc","RemoteRegDesc","ServStopDesc","ReqExDesc","BytesTPSDesc","ErrAccPerDesc","PerUsPkDesc","RPCserDesc","ErrGrntAccDesc","ActiveDayDesc","CPUutilDesc","PgInPerSecDesc","PgFaultPSDesc","PerDiskTDesc","CDiskQLenDesc","PerRegQUseDesc","FreeMegaBytesDesc","AvailBytesDesc","SNAStopDesc","BrwsrRunDesc","AmntMemUsDesc","ReqReject","SysUpTDesc","TermLicStartDesc","DataCollDesc","TermServRunDesc","ThreshOldOpsDesc","PerFreeSpDesc","SysOpDesc","ProtStRunDesc","LogDiskManDesc","IntPSDesc","PerIntTDesc","PerPrivTDesc","PerProcT75Desc","PerProcT80Desc","PerUserT80Desc","ProcQLen2Desc","StatDesc","RespTDesc","StatCodeDesc","ServRunDesc","FileNameDesc","NumInstColl0Desc","NumInstColl1Desc","AgentErrDesc","TooManyWarnDesc","TooManyErrDesc","TableLockDesc","LockMemDesc","TotSerMemDesc","UserConnDesc","LockTimeOutPSDesc","NumDeadLockPSDesc","PageWritePSDesc","PageReadPSDesc","FreeBuffPageDesc","BuffCacheHitDesc","FailAutoDesc","SQLCompDesc","SQLReCompDesc","PerLogUseDesc","DataFileDesc","DefDiskTimeDesc","DefHTTPMonDesc","DefHTTPResDesc","DefICMPDesc","DefFTPDesc","DefFTPDesc2", "ShutDownDesc", "AbortTPSDesc", "DefSMTPDesc" },
  351. Values {"","","Pages/sec is the number of pages read from or written to disk to resolve hard page faults. (Hard page faults occur when a process requires code or data that is not in its working set or elsewhere in physical memory, and must be retrieved from disk). This counter was designed as a primary indicator of the kinds of faults that cause system-wide delays. It is the sum of Memory: Pages Input/sec and Memory: Pages Output/sec. It is counted in numbers of pages, so it can be compared to other counts of pages, such as Memory: Page Faults/sec, without conversion. It includes pages retrieved to satisfy faults in the file system cache (usually requested by applications) non-cached mapped memory files. This counter displays the difference between the values observed in the last two samples, divided by the duration of the sample interval","","Pool Nonpaged Bytes is the number of bytes in the nonpaged pool, an area of system memory (physical memory used by the operating system) for objects that cannot be written to disk, but must remain in physical memory as long as they are allocated. Memory: Pool Nonpaged Bytes is calculated differently than Process: Pool Nonpaged Bytes, so it might not equal Process: Pool Nonpaged Bytes: _Total. This counter displays the last observed value only; it is not an average. ","","The number of times allocations from paged pool have failed. Indicates that the computer's physical memory or paging file are too small.", "", "", "", "","","Page Reads/sec is the number of times the disk was read to resolve hard page faults. (Hard page faults occur when a process requires code or data that is not in its working set or elsewhere in physical memory, and must be retrieved from disk). This counter was designed as a primary indicator of the kinds of faults that cause system-wide delays. It includes reads to satisfy faults in the file system cache (usually requested by applications) and in non-cached mapped memory files. This counter counts numbers of read operations, without regard to the numbers of pages retrieved by each operation. This counter displays the difference between the values observed in the last two samples, divided by the duration of the sample interval. ", "", "Cache bottlenecks are typically not a problem on a workstation but more common on servers. ","Current Disk Queue Length is the number of requests outstanding on the disk at the time the performance data is collected. It includes requests in service at the time of the snapshot. This is an instantaneous length, not an average over the time interval. Multi-spindle disk devices can have multiple requests active at one time, but other concurrent requests are awaiting service. This counter might reflect a transitory high or low queue length, but if there is a sustained load on the disk drive, it is likely that this will be consistently high. Requests are experiencing delays proportional to the length of this queue minus the number of spindles on the disks. This difference should average less than 2 for good performance", "", "SMS, SMS_Status_Manager service notification.", "The number of sessions that have been closed due to unexpected error conditions or sessions that have reached the autodisconnect timeout and have been disconnected normally.", "","","","","Exchange Server, MSEXCHANGEMTA service stopped notification.", "","","","","Copy Read Hits is the percentage of cache copy read requests that hit the cache, that is, they did not require a disk read in order to provide access to the page in the cache. A copy read is a file read operation that is satisfied by a memory copy from a page in the cache to the application's buffer. The LAN Redirector uses this method for retrieving information from the cache, as does the LAN Server for small transfers. This is a method used by the disk file systems as well.", "A sustained high value on percent disk time can indicate a potential disk bottleneck. However, you first should differenciate it from a memory bottleneck by examining page writes/sec, page reads/sec, page inpu
  352. string Description;
  353. [description("User viewable ID that shows up in the event so user can query/filter for them instead of by string.")]
  354. uint32 ID = 0;
  355. [description("What property to threshold against. As a special case you can place the string NumInstancesCollected here to threshold against how many instances were returned. (In the case of event based, how many in the window)")]
  356. string PropertyName;
  357. [values {"NONE","AVERAGE","DIFFERENCE"}, description("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.")]
  358. uint32 UseFlag = 0;
  359. [values {"<",">","=","!=",">=","<=","contains","!contains","always"}, description("The condition to use for the Threshold.")]
  360. uint32 TestCondition = 1;
  361. [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 DataCollector.")]
  362. string CompareValue;
  363. [description("How long the value must remain. In number of collection intervals. Set to zero for instantaneous.")]
  364. uint32 ThresholdDuration = 0;
  365. [values {"GOOD","COLLECTING","RESET","INFO","DISABLED","SCHEDULEDOUT","UNKNOWN","NODATA","WARNING","CRITICAL"}, description("The state we transition to if cross Threshold. INFO is not really a permanant transition state. RESET means that the DataCollector is reset.")]
  366. uint32 State = 0;
  367. datetime CreationDate; // Time of origional creation
  368. datetime LastUpdate; // Time of last change
  369. [description("What gets sent to the event. Can contain special embedded tags such as %CurrentValue% that then get substituted for. Can be any property found in the ThresholdStatus class."),
  370. ValueMap{"ServiceStopMsg","DiskPerMsg","DefaultMsg","ShortDefaultMsg","DataGroupMsg","WebNTMsg","NotReqAMsg","ReqTimeMsg","DefaultMsg5Min","DefaultMsg10Min","DefaultMsg30Min","AnonUsersMsg","LogonMsg","SNALostMsg","ActionMsg","SMTPFailMsg","HTTPFailMsg","HTTPMsg","ASPEventMsg","ExecMsg","ThresholdMsg","RejReqMsg","SysOnlineMsg","DCMsg","SysMsg","DefMsg30Min","DefHTTPMsg","DefHTTPResMsg","DefICMPMsg","DefFTPMsg","DefFTPMsg2","DefSMTPMsg","DefSMTPMsg2", "ShutDownMsg", "AbortTPSMsg", "NumInstColl0Msg", "ServiceMonitorStartedMsg" },
  371. Values {"The %InstanceName% is not running or has been stopped.","Diskperf driver currently not running. In order to view Physical Disk information this option must be turned on using DISKPERF -Y at a command line.", "%PropertyName% was %TestCondition% %CompareValue% for the last %Duration% comparisons","%PropertyName% was %TestCondition% %CompareValue%","A data group operation committed.","The Web Service generated an error to the NT Application Log: %ID%","Request not authorized are currently: %EmbeddedInstance.RequestsNotAuthorized%","Requests Timed Out currently: %EmbeddedInstance.RequestsTimedOut%","%PropertyName% was %TestCondition% %CompareValue% for the last %Duration% comparisons (5 minutes).","%PropertyName% was %TestCondition% %CompareValue% for the last %Duration% comparisons (10 minutes).","%PropertyName% was %TestCondition% %CompareValue% for the last %Duration% comparisons (30 minutes).","There are %EmbeddedInstance.CurrentNonAnonymousUsers% anonymous user on the web site","A number of logon attempts have been made causing multiple logon errors. %PropertyName% was %TestCondition% %CompareValue% for the last %Duration% comparisons (5 minutes).","SNA host connection problem with instance: %InstanceName%","Action configuration operation committed.","SMTP service failure.","HTTP service took too long ","HTTP failure","ASP generated an event in the application log: %CurrentValue%","Request Executing (for 2 minutes): %EmbeddedInstance.RequestsExecuting%","A threshold operation was committed.","Rejected Requests are currently: %EmbeddedInstance.RequestsRejected%","%SystemName% has been online for %CurrentValue% seconds.","A Data Collector operation was committed.","A System operation committed.","%PropertyName% was %TestCondition% %CompareValue% for the last %Duration% comparisons (30 minutes)","HTTP failed (%PropertyName%) status code was %EmbeddedInstance.StatusCode%","HTTP failed (%PropertyName%) response time was %EmbeddedInstance.ResponseTime% milliseconds","Ping failed (%PropertyName%)","FTP failed (%PropertyName%) status code was %EmbeddedInstance.StatusCode%","FTP failed (%PropertyName%) response time was %EmbeddedInstance.ResponseTime% milliseconds","SMTP failed (%PropertyName%) status code was %EmbeddedInstance.StatusCode%","SMTP failed (%PropertyName%) response time was %EmbeddedInstance.ResponseTime% milliseconds", "Unexpected shutdown", "Aborted transactions occured", "Events were collected", "Service has stopped" }]
  372. string Message = "DefaultMsg";
  373. [description("What gets sent when we return to normal."),
  374. ValueMap{"ServiceStartMsg","NoResetMsg","DefaultResetMsg","DefResetMsg30Min","DefHTTPResMsg","DefICMPResMsg","DefFTPResMsg","DefResSMTPMsg", "ShutDownResetMsg", "AbortTPSResetMsg", "NumInstColl0ResetMsg", "ServiceMonitorStartedResetMsg" },
  375. Values {"The %InstanceName% is now running or has been restarted."," ","%PropertyName% is no longer %TestCondition% %CompareValue%","%PropertyName% is no longer %TestCondition% %CompareValue%","HTTP is no longer failing (%PropertyName%)","Ping is no longer failing (%PropertyName%)","FTP is no longer failing (%PropertyName%)","SMTP is no longer failing (%PropertyName%)", "Shutdowns reset", "Aborted Transactions reset", "No instances came in durring the last collection interval", "Service has started again" }]
  376. string ResetMessage = "";
  377. };
  378. ////////////////////////////////////////////////////////////////////////////////
  379. // Microsoft_HMActionConfiguration class - This specifies an action to take place that can be associated
  380. // with a Threshold.
  381. [description("HealthMon Action class. Performs some type of action as a result of seeing an event from one of the Configuration class Status messages.")]
  382. class Microsoft_HMActionConfiguration : Microsoft_HMConfiguration
  383. {
  384. [ValueMap{"CommandName","EmailName","LogName","ScriptName","NotepadName","EventName" },
  385. Values{"Send Popup Message to a Computer","Email <username>","Log Data Statistics to a Log File","Sample Script","Run NotePad","Generate a Windows 2000 Event" }]
  386. string Name;
  387. [ValueMap{"CommandDesc","EmailDesc","LogDesc","ScriptDesc","NotepadDesc","EventDesc" },
  388. Values{" "," "," "," "," "," "}]
  389. string Description;
  390. [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.")]
  391. uint8 ActiveDays = 01111111B;
  392. [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.")]
  393. datetime BeginTime = NULL;
  394. [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.")]
  395. datetime EndTime = NULL;
  396. [description("For use by the console to aid in the display")]
  397. string TypeGUID;
  398. __EventConsumer ref EventConsumer;
  399. };
  400. //******************************************************************************
  401. //******************************************************************************
  402. //******************************************************************************
  403. // *** Class Declaration Section **********************************************
  404. // Classes dealing with the events produced by the Agent
  405. //******************************************************************************
  406. //******************************************************************************
  407. //******************************************************************************
  408. ////////////////////////////////////////////////////////////////////////////////
  409. // Microsoft_HMSystemStatus event class - ???
  410. // This is the consolodation of all the events and status that occurred durring
  411. // the minimal interval of 10 seconds.
  412. // Even though this is sent as an event, the agent also acts as an instance
  413. // provider for this, so that any consumer can ask for the current state of the
  414. // system. When it is sent as an event, it only contains the Microsoft_HMDataGroups that
  415. // have just changed, and the events that caused the change. When sent as an
  416. // instance provider, it contains all of Microsoft_HMDataGroups, and and all of the active
  417. // events (ones for Thresholds that are currently still crossed).
  418. [dynamic, provider("Microsoft_HMInstProvider"),
  419. description("System Status Instance Event Class")]
  420. class Microsoft_HMSystemStatus : Microsoft_HMStatus
  421. {
  422. };
  423. //ooooooooooooooooooooooooooooooooooooooooooooooooooo
  424. //class Microsoft_HMSystemStatus : __ExtrinsicEvent
  425. //{
  426. //[key, description("Unique identifier")]
  427. // string GUID;
  428. // string Name;
  429. //[description("GUID of the Parent")]
  430. // String ParentGUID;
  431. //
  432. //[values {"GOOD","COLLECTING","RESET","INFO","DISABLED","SCHEDULEDOUT","UNKNOWN","NODATA","WARNING","CRITICAL"}, description("The state we are in")]
  433. // uint32 State;
  434. //[description("Number currently in Critical state")]
  435. // uint32 NumberWarnings;
  436. //[description("Number currently in Warning state")]
  437. // uint32 NumberCriticals;
  438. //[description("Number currently in Normal state")]
  439. // uint32 NumberNormals;
  440. //};
  441. //ooooooooooooooooooooooooooooooooooooooooooooooooooo
  442. ////////////////////////////////////////////////////////////////////////////////
  443. // Microsoft_HMDataGroup event class - ???
  444. [dynamic, provider("Microsoft_HMInstProvider"),
  445. description("DataGroup Status Instance Event Class")]
  446. class Microsoft_HMDataGroupStatus : Microsoft_HMStatus
  447. {
  448. };
  449. ////////////////////////////////////////////////////////////////////////////////
  450. // Microsoft_HMDataCollectorStatus event class - ???
  451. // This is provided to roll up the state of all thresholds.
  452. // instances are collecting. ALSO -
  453. // This is provided to present performance information for what the Microsoft_HMDataCollector
  454. // instances are collecting. It contains an array that has one instance of the
  455. // property statistics for each unique property that a threshold is define to look at.
  456. // An event is created each collection interval.
  457. [dynamic, provider("Microsoft_HMInstProvider"),
  458. description("DataCollector Status Instance Event Class")]
  459. class Microsoft_HMDataCollectorStatus : Microsoft_HMStatus
  460. {
  461. [description("For polled - number of instances returned. For event - how many events were received in the sampling window. See the WindowSize property of the DataCollector.")]
  462. uint32 HMNumInstancesCollected;
  463. [description("Contains messages for when the DataCollector is not configured correctly., Or when it goes into Disabled, or scheduled outage.")]
  464. string ConfigurationMessage;
  465. [description("For the status change.")]
  466. string StatusGUID;
  467. [description("Local time of the Agent Machine, in the format of - yyyymmddhhmmss.ssssssXUtc; X = GMT(+ or -), Utc = 3 dig. offset minutes from UTC.")]
  468. datetime LocalTime;
  469. };
  470. [dynamic, provider("Microsoft_HMInstProvider"),
  471. description("DataCollector Statistics Instance Event Class")]
  472. //class Microsoft_HMDataCollectorStatistics : Microsoft_HMStatistics
  473. class Microsoft_HMDataCollectorStatistics : Microsoft_HMStatus
  474. {
  475. [description("Property name that the data is for.")]
  476. string PropertyName;
  477. [description("Instance name that the data is for.")]
  478. string InstanceName;
  479. [description("Local time of the Agent Machine, in the format of - yyyymmddhhmmss.ssssssXUtc; X = GMT(+ or -), Utc = 3 dig. offset minutes from UTC.")]
  480. datetime LocalTime;
  481. string CurrentValue;
  482. [description("Min value in the window.")]
  483. string MinValue;
  484. [description("Max value in the window.")]
  485. string MaxValue;
  486. [description("Avg value in the window The Min, Max and Avg only pertain if the DataCollector property is a numeric datatype.")]
  487. string AvgValue;
  488. };
  489. ////////////////////////////////////////////////////////////////////////////////
  490. // Microsoft_HMThresholdStatus event class - ???
  491. // An Microsoft_HMThresholdStatus is produced when a Threshold is crossed, and contains all the
  492. // information pertaining to the circumstances surrounding the crossing.
  493. // The information comes from the both the Microsoft_HMDataCollector and the Microsoft_HMThreshold.
  494. // This class is also used in the cosolodated Microsoft_HMSystemStatus event that is created.
  495. [dynamic, provider("Microsoft_HMInstProvider"),
  496. description("Threshold Status Event Class")]
  497. class Microsoft_HMThresholdStatus : Microsoft_HMStatus
  498. {
  499. [description("Contains messages for when the Threshold is not configured correctly.")]
  500. string ConfigurationMessage;
  501. };
  502. [dynamic, provider("Microsoft_HMInstProvider"),
  503. description("Threshold Status Instance Event Class")]
  504. class Microsoft_HMThresholdStatusInstance : Microsoft_HMStatus
  505. {
  506. [description("Display name of the parent Data Collector.")]
  507. string DataCollectorName;
  508. // [description("Display name.")]
  509. // string Name;
  510. [description("Name of the system.")]
  511. string SystemName; // Name of the system
  512. [description("For the status change.")]
  513. string StatusGUID;
  514. [description("User viewable ID that shows up in the event so user can filter.")]
  515. uint32 ID;
  516. [description("Local time of the Agent Machine, in the format of - yyyymmddhhmmss.ssssssXUtc; X = GMT(+ or -), Utc = 3 dig. offset minutes from UTC.")]
  517. datetime LocalTime;
  518. [values {"<",">","=","!=",">=","<=","contains","!contains","always"}, description("Condition that was used if the Threshold crossing.")]
  519. uint32 TestCondition;
  520. [description("Value that was used if the Threshold crossing to compare to.")]
  521. string CompareValue;
  522. [description("How long the value must have remained.")]
  523. uint32 Duration;
  524. [description("Property name that the threshold is against.")]
  525. string PropertyName;
  526. // Properties specific for each individual instance
  527. [description("Instance name is applicable (e.g. C: drive).")]
  528. string InstanceName;
  529. [description("Current value that caused the Threshold crossing.")]
  530. string CurrentValue;
  531. string MinValue;
  532. string MaxValue;
  533. string AvgValue;
  534. [description("Comes directly from what was in the Microsoft_HMThreshold property.")]
  535. string Message;
  536. };
  537. [dynamic, provider("Microsoft_HMInstProvider"),
  538. description("Action Status Event Class")]
  539. class Microsoft_HMActionStatus : Microsoft_HMStatus
  540. {
  541. [description("Local time of the Agent Machine, in the format of - yyyymmddhhmmss.ssssssXUtc; X = GMT(+ or -), Utc = 3 dig. offset minutes from UTC.")]
  542. datetime LocalTime;
  543. [description("The HealthMon status instance that is trigering the action.")]
  544. Microsoft_HMStatus EmbeddedStatus;
  545. [description("The actual instance collected in the DataCollector. Only available if the action is associated to a Threshold.")]
  546. Object EmbeddedDataCollectorInstance;
  547. };
  548. ////////////////////////////////////////////////////////////////////////////////////////////
  549. // Event Provider
  550. ////////////////////////////////////////////////////////////////////////////////////////////
  551. instance of __Win32Provider
  552. {
  553. Name = "Microsoft_HMSystemEventProvider";
  554. CLSID = "{68AC0D36-DB09-11d2-8F56-006097919914}";
  555. DefaultMachineName = NULL;
  556. ClientLoadableCLSID = NULL;
  557. ImpersonationLevel = 0;
  558. PerUserInitialization = FALSE;
  559. //XXX Pure = TRUE;
  560. Pure = FALSE;
  561. UnloadTimeout = NULL;
  562. };
  563. instance of __Win32Provider
  564. {
  565. Name = "Microsoft_HMDataGroupEventProvider";
  566. CLSID = "{68AC0D37-DB09-11d2-8F56-006097919914}";
  567. DefaultMachineName = NULL;
  568. ClientLoadableCLSID = NULL;
  569. ImpersonationLevel = 0;
  570. PerUserInitialization = FALSE;
  571. Pure = FALSE;
  572. UnloadTimeout = NULL;
  573. };
  574. instance of __Win32Provider
  575. {
  576. Name = "Microsoft_HMDataCollectorEventProvider";
  577. CLSID = "{68AC0D38-DB09-11d2-8F56-006097919914}";
  578. DefaultMachineName = NULL;
  579. ClientLoadableCLSID = NULL;
  580. ImpersonationLevel = 0;
  581. PerUserInitialization = FALSE;
  582. Pure = FALSE;
  583. UnloadTimeout = NULL;
  584. };
  585. instance of __Win32Provider
  586. {
  587. Name = "Microsoft_HMDataCollectorStatisticsEventProvider";
  588. CLSID = "{68AC0D40-DB09-11d2-8F56-006097919914}";
  589. DefaultMachineName = NULL;
  590. ClientLoadableCLSID = NULL;
  591. ImpersonationLevel = 0;
  592. PerUserInitialization = FALSE;
  593. Pure = FALSE;
  594. UnloadTimeout = NULL;
  595. };
  596. instance of __Win32Provider
  597. {
  598. Name = "Microsoft_HMThresholdEventProvider";
  599. CLSID = "{68AC0D39-DB09-11d2-8F56-006097919914}";
  600. DefaultMachineName = NULL;
  601. ClientLoadableCLSID = NULL;
  602. ImpersonationLevel = 0;
  603. PerUserInitialization = FALSE;
  604. Pure = FALSE;
  605. UnloadTimeout = NULL;
  606. };
  607. instance of __Win32Provider
  608. {
  609. Name = "Microsoft_HMThresholdInstanceEventProvider";
  610. CLSID = "{68AC0D42-DB09-11d2-8F56-006097919914}";
  611. DefaultMachineName = NULL;
  612. ClientLoadableCLSID = NULL;
  613. ImpersonationLevel = 0;
  614. PerUserInitialization = FALSE;
  615. Pure = FALSE;
  616. UnloadTimeout = NULL;
  617. };
  618. instance of __Win32Provider
  619. {
  620. Name = "Microsoft_HMActionEventProvider";
  621. CLSID = "{68AC0D43-DB09-11d2-8F56-006097919914}";
  622. DefaultMachineName = NULL;
  623. ClientLoadableCLSID = NULL;
  624. ImpersonationLevel = 0;
  625. PerUserInitialization = FALSE;
  626. Pure = FALSE;
  627. UnloadTimeout = NULL;
  628. };
  629. instance of __EventProviderRegistration
  630. {
  631. provider = "__Win32Provider=\"Microsoft_HMSystemEventProvider\"";
  632. // EventQueryList = {"select * from Microsoft_HMSystemStatus"};
  633. EventQueryList = { "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMSystemStatus\""};
  634. };
  635. instance of __EventProviderRegistration
  636. {
  637. provider = "__Win32Provider=\"Microsoft_HMDataGroupEventProvider\"";
  638. EventQueryList = { "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMDataGroupStatus\""};
  639. };
  640. instance of __EventProviderRegistration
  641. {
  642. provider = "__Win32Provider=\"Microsoft_HMDataCollectorEventProvider\"";
  643. EventQueryList = { "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMDataCollectorStatus\""};
  644. };
  645. instance of __EventProviderRegistration
  646. {
  647. provider = "__Win32Provider=\"Microsoft_HMDataCollectorStatisticsEventProvider\"";
  648. EventQueryList = { "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMDataCollectorStatistics\""};
  649. };
  650. instance of __EventProviderRegistration
  651. {
  652. provider = "__Win32Provider=\"Microsoft_HMThresholdEventProvider\"";
  653. EventQueryList = { "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMThresholdStatus\""};
  654. };
  655. instance of __EventProviderRegistration
  656. {
  657. provider = "__Win32Provider=\"Microsoft_HMThresholdInstanceEventProvider\"";
  658. EventQueryList = { "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMThresholdStatusInstance\""};
  659. };
  660. //instance of __EventProviderRegistration
  661. //{
  662. // provider = "__Win32Provider=\"Microsoft_HMActionEventProvider\"";
  663. // EventQueryList = { "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMActionStatus\""};
  664. //};
  665. instance of __EventProviderRegistration
  666. {
  667. provider = "__Win32Provider=\"Microsoft_HMActionEventProvider\"";
  668. EventQueryList = { "select * from __InstanceCreationEvent where TargetInstance isa \"Microsoft_HMActionStatus\"",
  669. "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMActionStatus\""};
  670. };
  671. /////////////////////////////////////////////////////////////////////////////////////////////
  672. // Permanent Consumer
  673. /////////////////////////////////////////////////////////////////////////////////////////////
  674. instance of __Win32Provider
  675. {
  676. Name = "Microsoft_HMPermConsumer";
  677. Clsid = "{68AC0D35-DB09-11d2-8F56-006097919914}";
  678. };
  679. instance of __EventConsumerProviderRegistration
  680. {
  681. Provider = "__Win32Provider=\"Microsoft_HMPermConsumer\"";
  682. ConsumerClassNames = {"Microsoft_HMPermConsumer"};
  683. };
  684. class Microsoft_HMPermConsumer : __EventConsumer
  685. {
  686. [key] string Name;
  687. };
  688. instance of Microsoft_HMPermConsumer
  689. {
  690. Name = "HealthMon";
  691. };
  692. ///////////////////////////////////////////////////////////////////////////////////////////
  693. // TIMER EVENT
  694. ////////////////////////////////////////////////////////////////////////////////////////////
  695. // create an instance of Timer
  696. instance of __IntervalTimerInstruction
  697. {
  698. IntervalBetweenEvents = 10000; // Initially set to 10 seconds
  699. TimerId = "Microsoft_HMTimer";
  700. };
  701. //MOVED to timer.mof
  702. ////////////////////////////////////////////////////////////////////////////////////////////
  703. // create an instance of TimerEvent Filter
  704. //instance of __EventFilter
  705. //{
  706. // Name = "Microsoft_HMFilter";
  707. // Query = "select * from __TimerEvent where TimerId=\"Microsoft_HMTimer\"";
  708. // QueryLanguage = "WQL";
  709. //};
  710. ///////////////////////////////////////////////////////////////////////////////////////////
  711. // HMSystemConfiguration EVENTS
  712. instance of __EventFilter
  713. {
  714. Name = "Microsoft_HMFilter2";
  715. Query = "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMSystemConfiguration\"";
  716. QueryLanguage = "WQL";
  717. };
  718. ///////////////////////////////////////////////////////////////////////////////////////////
  719. // HMDataGroupConfiguration EVENTS
  720. instance of __EventFilter
  721. {
  722. Name = "Microsoft_HMFilter3";
  723. Query = "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMDataGroupConfiguration\"";
  724. QueryLanguage = "WQL";
  725. };
  726. ///////////////////////////////////////////////////////////////////////////////////////////
  727. // HMDataCollectorConfiguration EVENTS
  728. instance of __EventFilter
  729. {
  730. Name = "Microsoft_HMFilter4";
  731. Query = "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMDataCollectorConfiguration\"";
  732. QueryLanguage = "WQL";
  733. };
  734. ///////////////////////////////////////////////////////////////////////////////////////////
  735. // HMThresholdConfiguration EVENTS
  736. instance of __EventFilter
  737. {
  738. Name = "Microsoft_HMFilter5";
  739. Query = "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMThresholdConfiguration\"";
  740. QueryLanguage = "WQL";
  741. };
  742. ///////////////////////////////////////////////////////////////////////////////////////////
  743. // HMConfigurationAssociation EVENTS
  744. instance of __EventFilter
  745. {
  746. Name = "Microsoft_HMFilter6";
  747. Query = "select * from __InstanceCreationEvent where TargetInstance isa \"Microsoft_HMConfigurationAssociation\"";
  748. QueryLanguage = "WQL";
  749. };
  750. ///////////////////////////////////////////////////////////////////////////////////////////
  751. // HMActionConfiguration EVENTS
  752. instance of __EventFilter
  753. {
  754. Name = "Microsoft_HMFilter7";
  755. Query = "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMActionConfiguration\"";
  756. QueryLanguage = "WQL";
  757. };
  758. instance of __EventFilter
  759. {
  760. Name = "Microsoft_HMFilter8";
  761. Query = "select * from __InstanceCreationEvent where TargetInstance isa \"Microsoft_HMActionConfiguration\"";
  762. QueryLanguage = "WQL";
  763. };
  764. ///////////////////////////////////////////////////////////////////////////////////////////
  765. // HMActionConfigurationActionAssociation EVENTS
  766. instance of __EventFilter
  767. {
  768. Name = "Microsoft_HMFilter9";
  769. Query = "select * from __InstanceCreationEvent where TargetInstance isa \"Microsoft_HMConfigurationActionAssociation\"";
  770. QueryLanguage = "WQL";
  771. };
  772. instance of __EventFilter
  773. {
  774. Name = "Microsoft_HMFilter10";
  775. Query = "select * from __InstanceModificationEvent where TargetInstance isa \"Microsoft_HMConfigurationActionAssociation\"";
  776. QueryLanguage = "WQL";
  777. };
  778. instance of __EventFilter
  779. {
  780. Name = "Microsoft_HMFilter11";
  781. Query = "select * from __InstanceDeletionEvent where TargetInstance isa \"Microsoft_HMConfigurationActionAssociation\"";
  782. QueryLanguage = "WQL";
  783. };
  784. /////////////////////////////////////////////////////////////////////////////////////////////
  785. // *** Binding Section ***
  786. instance of __FilterToConsumerBinding
  787. {
  788. Consumer = "Microsoft_HMPermConsumer.Name=\"HealthMon\"";
  789. Filter = "__EventFilter.Name=\"Microsoft_HMFilter\"";
  790. };
  791. instance of __FilterToConsumerBinding
  792. {
  793. Consumer = "Microsoft_HMPermConsumer.Name=\"HealthMon\"";
  794. Filter = "__EventFilter.Name=\"Microsoft_HMFilter2\"";
  795. };
  796. instance of __FilterToConsumerBinding
  797. {
  798. Consumer = "Microsoft_HMPermConsumer.Name=\"HealthMon\"";
  799. Filter = "__EventFilter.Name=\"Microsoft_HMFilter3\"";
  800. };
  801. instance of __FilterToConsumerBinding
  802. {
  803. Consumer = "Microsoft_HMPermConsumer.Name=\"HealthMon\"";
  804. Filter = "__EventFilter.Name=\"Microsoft_HMFilter4\"";
  805. };
  806. instance of __FilterToConsumerBinding
  807. {
  808. Consumer = "Microsoft_HMPermConsumer.Name=\"HealthMon\"";
  809. Filter = "__EventFilter.Name=\"Microsoft_HMFilter5\"";
  810. };
  811. instance of __FilterToConsumerBinding
  812. {
  813. Consumer = "Microsoft_HMPermConsumer.Name=\"HealthMon\"";
  814. Filter = "__EventFilter.Name=\"Microsoft_HMFilter6\"";
  815. };
  816. instance of __FilterToConsumerBinding
  817. {
  818. Consumer = "Microsoft_HMPermConsumer.Name=\"HealthMon\"";
  819. Filter = "__EventFilter.Name=\"Microsoft_HMFilter7\"";
  820. };
  821. instance of __FilterToConsumerBinding
  822. {
  823. Consumer = "Microsoft_HMPermConsumer.Name=\"HealthMon\"";
  824. Filter = "__EventFilter.Name=\"Microsoft_HMFilter8\"";
  825. };
  826. instance of __FilterToConsumerBinding
  827. {
  828. Consumer = "Microsoft_HMPermConsumer.Name=\"HealthMon\"";
  829. Filter = "__EventFilter.Name=\"Microsoft_HMFilter9\"";
  830. };
  831. instance of __FilterToConsumerBinding
  832. {
  833. Consumer = "Microsoft_HMPermConsumer.Name=\"HealthMon\"";
  834. Filter = "__EventFilter.Name=\"Microsoft_HMFilter10\"";
  835. };
  836. instance of __FilterToConsumerBinding
  837. {
  838. Consumer = "Microsoft_HMPermConsumer.Name=\"HealthMon\"";
  839. Filter = "__EventFilter.Name=\"Microsoft_HMFilter11\"";
  840. };
  841. ////////////////////////////////////////////////////////////////////////////////
  842. //instance of Microsoft_HMSystemConfiguration
  843. instance of Microsoft_HMSystemConfiguration AS $S1
  844. {
  845. GUID = "@";
  846. StartupDelayTime = 0; // In seconds
  847. TransferLocStrings = TRUE;
  848. };