<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Sampa @ Work</title><subtitle type="html">System Center Operations Manager 2007 module information</subtitle><id>http://blogs.msdn.com/sampatton/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sampatton/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/sampatton/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2006-09-13T19:30:49Z</updated><entry><title>ACS - How to collect event 1102 (Event Log Cleared) on Vista and later</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sampatton/archive/2009/06/30/acs-how-to-collect-event-1102-event-log-cleared-on-vista-and-later.aspx" /><id>http://blogs.msdn.com/sampatton/archive/2009/06/30/acs-how-to-collect-event-1102-event-log-cleared-on-vista-and-later.aspx</id><published>2009-06-30T20:17:28Z</published><updated>2009-06-30T20:17:28Z</updated><content type="html">&lt;p&gt;Event 1102 is logged to the security event log when the security event log is cleared.&amp;nbsp; This event differs from most events in the security event log in that the event source is “Microsoft-Windows-Eventlog”, not “Microsoft-Windows-Security-Auditing”.&lt;/p&gt; &lt;p&gt;By default, this event will be collected, but the event parameters will be stored in string fields 1-4.&amp;nbsp; If you want to store these parameters in another location, you need to specify an event transform in EventSchema.xml.&amp;nbsp; I’ve provided an example below that puts the parameters into the PrimarySid, PrimaryUser, PrimaryDomain, and PrimaryLogonId.&amp;nbsp; You need to add this section to your existing EventSchema.xml at the same level as the other Sources. &lt;/p&gt; &lt;p&gt; &lt;blockquote&gt;&amp;lt;Source Name="Microsoft-Windows-Eventlog"&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;Version MinBuild="5384" MaxBuild="9999" UniqueId="FC65DDD8-D6EF-4962-83D5-6E5CFE9CE148"&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Strings&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;String Entry="-" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;String Entry="0x0" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Strings&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Event SourceId="1102" SourceName="SE_AUDITID_AUDIT_ETW_LOG_CLEARED"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Call Name="AppendString" Param1="1" Param2="0" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Call Name="AppendString" Param1="2" Param2="0" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Call Name="AppendString" Param1="3" Param2="0" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Call Name="AppendString" Param1="4" Param2="0" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Param TypeName="typePrimarySid" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Param TypeName="typePrimaryUser" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Param TypeName="typePrimaryDomain" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Param TypeName="typePrimaryLogonId" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Event&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/Version&amp;gt;&lt;br&gt;&amp;lt;/Source&amp;gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9809819" width="1" height="1"&gt;</content><author><name>sampatton</name><uri>http://blogs.msdn.com/members/sampatton.aspx</uri></author></entry><entry><title>Win32ServiceInformation modules</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sampatton/archive/2008/03/10/win32serviceinformation-modules.aspx" /><id>http://blogs.msdn.com/sampatton/archive/2008/03/10/win32serviceinformation-modules.aspx</id><published>2008-03-10T22:26:46Z</published><updated>2008-03-10T22:26:46Z</updated><content type="html">&lt;p&gt;There are a number of modules that provide information about windows services.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Microsoft.Windows.ExistingWin32ServiceInformationProvider&lt;/li&gt; &lt;li&gt;Microsoft.Windows.Win32ServiceInformationProvider&lt;/li&gt; &lt;li&gt;Microsoft.Windows.ExistingWin32ServiceInformationProbe&lt;/li&gt; &lt;li&gt;Microsoft.Windows.Win32ServiceInformationProbe&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;They are distinguished from each other in two different dimensions.&amp;nbsp; They can refer only to existing services, and they can be either a probe or a data source.&amp;nbsp; All of them output the same data.&amp;nbsp; The difference is when they will output the data.&amp;nbsp; The 'Existing' versions of the modules only operate on services that are installed on the machine.&amp;nbsp; They will never output State with either 'SERVICE_NOT_FOUND' or 'SERVER_NOT_FOUND'.&amp;nbsp; The Provider versions will output data when the service state changes in some way, or every 10th 'Frequency' seconds.&amp;nbsp; The Probe versions output data every time they are executed.&lt;/p&gt; &lt;p&gt;An example configuration for a Provider is:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;ComputerName&amp;gt;SAMPA01&amp;lt;/ComputerName&amp;gt;&lt;br&gt;&amp;lt;ServiceName&amp;gt;SNMP&amp;lt;/ServiceName&amp;gt;&lt;br&gt;&amp;lt;Frequency&amp;gt;60&amp;lt;/Frequency&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The configuration for Probes is exactly the same, but without the Frequency parameter.&lt;/p&gt; &lt;p&gt;Internally, all of the modules read the state of the windows service in the same way.&amp;nbsp; They combine the outputs of the following Win32 calls, QueryServiceStatus, QueryServiceStatusEx, QueryServiceConfig, and QueryServiceConfig2.&amp;nbsp; The output data is a PropertyBag with the following properties and meanings.&lt;/p&gt; &lt;ul&gt; &lt;table cellspacing="0" cellpadding="2" width="705" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="141"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="124"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="143"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;State&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="124"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;Integer&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote&gt; &lt;p&gt;One of the following values &lt;p&gt;1 : SERVICE_STOPPED&lt;br&gt;2 : SERVICE_START_PENDING&lt;br&gt;3 : SERVICE_STOP_PENDING&lt;br&gt;4 : SERVICE_RUNNING&lt;br&gt;5 : SERVICE_CONTINUE_PENDING&lt;br&gt;6 : SERVICE_PAUSE_PENDING&lt;br&gt;7 : SERVICE_PAUSED&lt;br&gt;8 : SERVICE_NOT_FOUND&lt;br&gt;9 : SERVER_NOT_FOUND&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="144"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;ServiceType&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="124"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;Integer&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote&gt; &lt;p&gt;This is a bit mask with the following values&lt;/p&gt; &lt;p&gt;0x00000001 SERVICE_KERNEL_DRIVER&lt;br&gt;0x00000002 SERVICE_FILE_SYSTEM_DRIVER&lt;br&gt;0x00000010 SERVICE_WIN32_OWN_PROCESS&lt;br&gt;0x00000020 SERVICE_WIN32_SHARE_PROCESS&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="145"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;StartMode&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="123"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;Integer&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote&gt; &lt;p&gt;0 : SERVICE_BOOT_START&lt;br&gt;1 : SERVICE_SYSTEM_START&lt;br&gt;2 : SERVICE_AUTO_START&lt;br&gt;3 : SERVICE_DEMAND_START&lt;br&gt;4 : SERVICE_DISABLED&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="145"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;ErrorControl&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="123"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;Integer&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote&gt; &lt;p&gt;0 : SERVICE_ERROR_IGNORE&lt;br&gt;1 : SERVICE_ERROR_NORMAL&lt;br&gt;2 : SERVICE_ERROR_SEVERE&lt;br&gt;3 : SERVICE_ERROR_CRITICAL&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="145"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;TagId&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="123"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;Integer&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;A unique tag value for this service in the group specified by the &lt;i&gt;lpLoadOrderGroup&lt;/i&gt; parameter. A value of zero indicates that the service has not been assigned a tag.&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="145"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;ProcessId&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="123"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;Integer&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;This is the process id of the process hosting this service.&amp;nbsp; It can be either it's own process, or a shared process with other services.&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="145"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;Name&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="123"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;String&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;This is the name of the service.&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="145"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;BinaryPathName&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="123"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;String&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;This is the full path to the binary that hosts this service.&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="145"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;LoadOrderGroup&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="123"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;String&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;This is the name of the load order group, such as "NDIS"&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="145"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;Dependencies&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="123"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;String&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;Dependent services for this service.&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="145"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;ServiceStartName&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="123"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;String&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;If the service type is SERVICE_WIN32_OWN_PROCESS or SERVICE_WIN32_SHARE_PROCESS, this member is the name of the account that the service process will be logged on as when it runs. This name can be of the form DomainName\Username". If the account belongs to the built-in domain, the name can be of the form ".\Username". The name can also be "LocalSystem" if the process is running under the LocalSystem account.  &lt;p&gt;If the service type is SERVICE_KERNEL_DRIVER or SERVICE_FILE_SYSTEM_DRIVER, this member is the driver object name (that is, \FileSystem\Rdr or \Driver\Xns) which the input and output (I/O) system uses to load the device driver. If this member is NULL, the driver is to be run with a default object name created by the I/O system, based on the service name.&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="145"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;DisplayName&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="123"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;String&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;The display name to be used by service control programs to identify the service&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="145"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;Description&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="123"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;String&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt; &lt;td valign="top" width="438"&gt; &lt;blockquote dir="ltr" style="margin-right: 0px"&gt; &lt;p&gt;The description of the service.&lt;/p&gt;&lt;/blockquote&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ul&gt; &lt;ul&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8136741" width="1" height="1"&gt;</content><author><name>sampatton</name><uri>http://blogs.msdn.com/members/sampatton.aspx</uri></author></entry><entry><title>How to include information from the data item that generates an alert in the alert description</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sampatton/archive/2007/05/18/how-to-include-information-from-the-data-item-that-generates-an-alert-in-the-alert.aspx" /><id>http://blogs.msdn.com/sampatton/archive/2007/05/18/how-to-include-information-from-the-data-item-that-generates-an-alert-in-the-alert.aspx</id><published>2007-05-18T20:10:26Z</published><updated>2007-05-18T20:10:26Z</updated><content type="html">&lt;p&gt;This works for an alert generating rule.&amp;nbsp; This is an example for a generic CSV rule generated through the UI using "Create a New Rule" using "Alert Generating Rules" -&amp;gt; "Event Based" -&amp;gt; "Generic CSV Text Log (Alert)"&lt;/p&gt; &lt;p&gt;Here is a line from the log file that we will use for the example.&lt;/p&gt; &lt;p&gt;&lt;em&gt;parameter1,ERROR,parameter3&lt;/em&gt;&lt;/p&gt; &lt;p&gt;To include&amp;nbsp;the 1st parameter of a the Data Item, use the following expression.&lt;/p&gt; &lt;p&gt;&lt;em&gt;$Data/EventData/DataItem/Params/Param[1]$&lt;/em&gt;&lt;/p&gt; &lt;p&gt;The full description string&amp;nbsp;could look like&lt;/p&gt; &lt;p&gt;&lt;em&gt;This is an alert about $Data/EventData/DataItem/Params/Param[1]$&lt;/em&gt;&lt;/p&gt; &lt;p&gt;The reason this works is because the data source for this rule outputs System.Event.Data data items.&amp;nbsp; The data source is System.ApplicationLog.GenericCSVLog.FilteredEventProvider.&amp;nbsp; It reads the specified logs and outputs System.Event.Data items.&amp;nbsp; Here is an example System.Event.Data that contains information from a CSV log file.&amp;nbsp; Notice that the log file parameters are nested fairly deeply in the data item.&amp;nbsp; I've marked them with underline.&lt;/p&gt;&lt;pre&gt;&amp;lt;DataItem type="&lt;b&gt;System.Event.Data&lt;/b&gt;" time="&lt;b&gt;2007-05-22T10:07:41.6416394-07:00&lt;/b&gt;" sourceHealthServiceId="&lt;b&gt;A9BB62D3-BEF2-5208-E680-1EE489235408&lt;/b&gt;"&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;EventOriginId&amp;gt;{8ED89955-E479-40A9-E83A-BB4A37A48499}&amp;lt;/EventOriginId&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;PublisherId&amp;gt;{1F68E240-153F-3990-0560-2AC472836C4A}&amp;lt;/PublisherId&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;PublisherName&amp;gt;GenericCSVLog&amp;lt;/PublisherName&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;Channel&amp;gt;GenericCSVLog&amp;lt;/Channel&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;LoggingComputer /&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;EventNumber&amp;gt;0&amp;lt;/EventNumber&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;EventCategory&amp;gt;3&amp;lt;/EventCategory&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;EventLevel&amp;gt;0&amp;lt;/EventLevel&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;UserName /&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;RawDescription /&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;CollectDescription Type="&lt;b&gt;Boolean&lt;/b&gt;"&amp;gt;true&amp;lt;/CollectDescription&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;EventData&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DataItem type="&lt;b&gt;System.ApplicationLog.GenericLogEntryData&lt;/b&gt;" time="&lt;b&gt;2007-05-22T10:07:41.6416394-07:00&lt;/b&gt;" sourceHealthServiceId="&lt;b&gt;A9BB62D3-BEF2-5208-E680-1EE489235408&lt;/b&gt;"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LogFileDirectory&amp;gt;d:\genericlogs&amp;lt;/LogFileDirectory&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LogFileType&amp;gt;Generic CSV Log File Format&amp;lt;/LogFileType&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LogFileName&amp;gt;d:\genericlogs\generic1.log&amp;lt;/LogFileName&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Params&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;u&gt;&amp;lt;Param&amp;gt;parameter1&amp;lt;/Param&amp;gt;&lt;/u&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;u&gt;&amp;lt;Param&amp;gt;ERROR&amp;lt;/Param&amp;gt;&lt;/u&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;u&gt;&amp;lt;Param&amp;gt;parameter3&amp;lt;/Param&amp;gt;&lt;/u&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Params&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DataItem&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/EventData&amp;gt;&lt;br&gt; &amp;lt;EventDisplayNumber&amp;gt;0&amp;lt;/EventDisplayNumber&amp;gt;&lt;br&gt; &amp;lt;EventDescription /&amp;gt;&lt;br&gt;&amp;lt;/DataItem&amp;gt;&lt;br&gt;
&lt;/pre&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2713828" width="1" height="1"&gt;</content><author><name>sampatton</name><uri>http://blogs.msdn.com/members/sampatton.aspx</uri></author></entry><entry><title>Application Log Monitoring</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sampatton/archive/2007/04/21/application-log-monitoring.aspx" /><id>http://blogs.msdn.com/sampatton/archive/2007/04/21/application-log-monitoring.aspx</id><published>2007-04-21T03:51:33Z</published><updated>2007-04-21T03:51:33Z</updated><content type="html">&lt;p&gt;This is going to be a very dense introduction to application log monitoring.&amp;nbsp; I'm going to have subsequent posts that cover parts of this in more depth.&lt;/p&gt; &lt;p&gt;Application log monitoring&amp;nbsp;refers to reading log files on the local computer and processing the entries contained in them.&amp;nbsp; SCOM processes a number of different log file types.&amp;nbsp; These are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Generic&lt;/li&gt; &lt;ul&gt; &lt;li&gt;This is a text file that contains one line per log entry&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Generic CSV&lt;/li&gt; &lt;ul&gt; &lt;li&gt;This is a text file that contains one line per log entry, with parameters that are separated by a character.&amp;nbsp; The most common separator is a comma ','.&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;IIS&lt;/li&gt; &lt;li&gt;W3C&lt;/li&gt; &lt;li&gt;NCSA&lt;/li&gt; &lt;li&gt;Binary&lt;/li&gt; &lt;ul&gt; &lt;li&gt;These are generated by Internet Information Services.&amp;nbsp; See &lt;a title="http://msdn2.microsoft.com/en-us/library/aa814382.aspx" href="http://msdn2.microsoft.com/en-us/library/aa814382.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa814382.aspx&lt;/a&gt;&amp;nbsp;for information about these formats.&amp;nbsp; IIS, W3C, and NCSA are text files, while Binary is a binary log format.&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;HTTP Error&lt;/li&gt; &lt;ul&gt; &lt;li&gt;This is a text file generated by the http.sys driver.&amp;nbsp; It is quite similar to the W3C format, but with different fields.&amp;nbsp; See &lt;a href="http://support.microsoft.com/kb/820729"&gt;http://support.microsoft.com/kb/820729&lt;/a&gt; for informat about this format.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;Monitoring is done by one of the following modules, depending on the type of log file to be monitored.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;System.ApplicationLog.BinaryLogReader&lt;/li&gt; &lt;li&gt;System.ApplicationLog.IISLogReader&lt;/li&gt; &lt;li&gt;System.ApplicationLog.NCSALogReader&lt;/li&gt; &lt;li&gt;System.ApplicationLog.W3CLogReader&lt;/li&gt; &lt;li&gt;System.ApplicationLog.GenericLogReader&lt;/li&gt; &lt;li&gt;System.ApplicationLog.GenericCSVLogReader&lt;/li&gt; &lt;li&gt;System.ApplicationLog.HTTPErrorLogReader&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The modules output one of the following data types.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;System.ApplicationLog.InternetLogEntryData&lt;/li&gt; &lt;ul&gt; &lt;li&gt;This is output for the IIS, W3C, NCSA, and Binary log file types&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;System.ApplicationLog.GenericLogEntryData&lt;/li&gt; &lt;ul&gt; &lt;li&gt;This is output for the Generic and GenericCSV log file types&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;System.ApplicationLog.HTTPErrorLogEntryData&lt;/li&gt; &lt;ul&gt; &lt;li&gt;This is output for the HTTP Error log file type&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;The fields of System.ApplicationLog.InternetLogEntryData are listed below.&amp;nbsp; Not all of the modules fill out all of the fields, because the log file formats don't all have every field.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;LogFileDirectory&lt;/li&gt; &lt;li&gt;LogFileType&lt;/li&gt; &lt;li&gt;LogFileName&lt;/li&gt; &lt;li&gt;Date&lt;/li&gt; &lt;li&gt;Time&lt;/li&gt; &lt;li&gt;ClientIP&lt;/li&gt; &lt;li&gt;UserName&lt;/li&gt; &lt;li&gt;SiteID&lt;/li&gt; &lt;li&gt;ServerName&lt;/li&gt; &lt;li&gt;ServerIP&lt;/li&gt; &lt;li&gt;ServerPort&lt;/li&gt; &lt;li&gt;Method&lt;/li&gt; &lt;li&gt;URIStem&lt;/li&gt; &lt;li&gt;URIQuery&lt;/li&gt; &lt;li&gt;ProtocolStatus&lt;/li&gt; &lt;li&gt;WindowsStatus&lt;/li&gt; &lt;li&gt;BytesSent&lt;/li&gt; &lt;li&gt;BytesReceived&lt;/li&gt; &lt;li&gt;BytesTransferred&lt;/li&gt; &lt;li&gt;TimeTakenInMS&lt;/li&gt; &lt;li&gt;ProtocolVersion&lt;/li&gt; &lt;li&gt;ProtocolSubstatus&lt;/li&gt; &lt;li&gt;HostHeader&lt;/li&gt; &lt;li&gt;UserAgent&lt;/li&gt; &lt;li&gt;Cookie&lt;/li&gt; &lt;li&gt;Referrer&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The fields of System.HTTPErrorLogEntryData are listed below.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;LogFileDirectory&lt;/li&gt; &lt;li&gt;LogFileType&lt;/li&gt; &lt;li&gt;LogFileName&lt;/li&gt; &lt;li&gt;Date&lt;/li&gt; &lt;li&gt;Time&lt;/li&gt; &lt;li&gt;ComputerName&lt;/li&gt; &lt;li&gt;ClientIP&lt;/li&gt; &lt;li&gt;ClientPort&lt;/li&gt; &lt;li&gt;ServerIP&lt;/li&gt; &lt;li&gt;ServerPort&lt;/li&gt; &lt;li&gt;ProtocolVersion&lt;/li&gt; &lt;li&gt;Verb&lt;/li&gt; &lt;li&gt;CookedURL&lt;/li&gt; &lt;li&gt;UserAgent&lt;/li&gt; &lt;li&gt;Cookie&lt;/li&gt; &lt;li&gt;Referer&lt;/li&gt; &lt;li&gt;Host&lt;/li&gt; &lt;li&gt;ProtocolStatus&lt;/li&gt; &lt;li&gt;BytesSent&lt;/li&gt; &lt;li&gt;BytesReceived&lt;/li&gt; &lt;li&gt;TimeTaken&lt;/li&gt; &lt;li&gt;SiteID&lt;/li&gt; &lt;li&gt;ReasonPhrase&lt;/li&gt; &lt;li&gt;QueueName&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The fields of System.GenericLogEntryData are listed below.&amp;nbsp; NOTE: The Generic log type has only one Param field.&amp;nbsp; The Generic CSV log type has one Param entry per parameter in the log file.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;LogFileDirectory&lt;/li&gt; &lt;li&gt;LogFileType&lt;/li&gt; &lt;li&gt;LogFileName&lt;/li&gt; &lt;li&gt;Params&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Param&lt;/li&gt; &lt;li&gt;Param&lt;/li&gt; &lt;li&gt;...&lt;/li&gt; &lt;li&gt;Param&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2214140" width="1" height="1"&gt;</content><author><name>sampatton</name><uri>http://blogs.msdn.com/members/sampatton.aspx</uri></author></entry><entry><title>Property Bag</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sampatton/archive/2007/02/07/property-bag.aspx" /><id>http://blogs.msdn.com/sampatton/archive/2007/02/07/property-bag.aspx</id><published>2007-02-08T02:24:13Z</published><updated>2007-02-08T02:24:13Z</updated><content type="html">&lt;p&gt;The System.PropertyBagData data type is used by several modules.&amp;nbsp; A partial list of the modules is below.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Microsoft.Windows.LdapProbe  &lt;li&gt;Microsoft.Windows.Win32ServiceInformationProbe  &lt;li&gt;Microsoft.Windows.DependentNTServiceStateProbe  &lt;li&gt;Microsoft.Windows.WmiEventProvider&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This is just a partial list.&amp;nbsp; The property bag is used in many&amp;nbsp;modules because it is very flexible.&amp;nbsp; It consists conceptually of a set of collections of name value pairs called properties.&amp;nbsp; There is a default collection, which is all that most modules or scripts make use of, and there can also be named collections.&amp;nbsp; The values are actually stored as Variants, so each property has a Name, VariantType, and a value.&lt;/p&gt; &lt;p&gt;Here is a sample property bag in XML form.&amp;nbsp;&amp;nbsp; It has the properties Computer, User2, and Bool in it's default collection.&amp;nbsp; It has a named collection "TargetInstance" which has two properties, InsideUser and IntInside.&lt;/p&gt;&lt;pre&gt;&amp;lt;DataItem type="System.PropertyBagData" time="2005-08-17T11:23:51.0870595-07:00"&amp;gt;
    &amp;lt;Property Name="Computer" VariantType="8"&amp;gt;SAMPATTON01&amp;lt;/Property&amp;gt;
    &amp;lt;Property Name="User" VariantType="8"&amp;gt;SamPattonOutside&amp;lt;/Property&amp;gt;
    &amp;lt;Property Name="User2" VariantType="8"&amp;gt;SamPatton2&amp;lt;/Property&amp;gt;
    &amp;lt;Property Name="Bool" VariantType="11"&amp;gt;true&amp;lt;/Property&amp;gt;
    &amp;lt;Collection Name="TargetInstance"&amp;gt;
        &amp;lt;Property Name="InsideUser" VariantType="8"&amp;gt;SamPattonInside&amp;lt;/Property&amp;gt;
        &amp;lt;Property Name="IntInside" VariantType="3"&amp;gt;17&amp;lt;/Property&amp;gt;
    &amp;lt;/Collection&amp;gt;
&amp;lt;/DataItem&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The XML version of the data type is important because rules and monitors access the data in a data type using XPath.&amp;nbsp; A couple examples are below.&lt;/p&gt;
&lt;p&gt;To access the Computer field, the XPath is Property[@Name='Computer']&lt;/p&gt;
&lt;p&gt;To access the&amp;nbsp;IntInside field, the XPath is Collection[@Name='TargetInstance']/Property[@Name='IntInside']&lt;/p&gt;
&lt;p&gt;The queries above would evaluate to SAMPATTON01 and 17 respectively.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There is one more field in the property bag, the ConversionType.&amp;nbsp; This field is only important for script generated property bags.&amp;nbsp; I'll be adding more to this entry to cover that at a later time.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1622493" width="1" height="1"&gt;</content><author><name>sampatton</name><uri>http://blogs.msdn.com/members/sampatton.aspx</uri></author></entry><entry><title>First Post</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sampatton/archive/2006/09/13/752465.aspx" /><id>http://blogs.msdn.com/sampatton/archive/2006/09/13/752465.aspx</id><published>2006-09-13T21:30:49Z</published><updated>2006-09-13T21:30:49Z</updated><content type="html">&lt;p&gt;My name is Sam Patton.&amp;nbsp; I'm a developer on System Center Operations Manager 2007 at Microsoft.&amp;nbsp; My main area are the WMI modules, the LDAP modules, and the mapping modules.&lt;/p&gt; &lt;p&gt;My goal in writing this blog is to give people a better understanding of the internal workings of the modules and how to use them more efficiently.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=752465" width="1" height="1"&gt;</content><author><name>sampatton</name><uri>http://blogs.msdn.com/members/sampatton.aspx</uri></author></entry></feed>