xSNMP Reports 1.1.1 Now Available!

The xSNMP Reports version 1.1.1 package is now available at manage-x.net.   This suite of management pack adds value to the xSNMP suite by implementing OpsMgr reports for data collected by performance rules in the xSNMP management packs.   Reporting management packs included are:

  • xSNMP for APC Reports
  • xSNMP for APC NetBotz Reports
  • xSNMP for Brocade Reports
  • xsNMP for Check Point Secure Platform Reports
  • xSNMP for Cisco Reports
  • xSNMP for Data Domain Reports
  • xSNMP for Dell PowerEdge Reports
  • xSNMP for HP ProCurve Reports
  • xSNMP for IBM AIX Reports
  • xSNMP for Juniper Networks Reports
  • xSNMP for Juniper-NetScreen Reports
  • xSNMP for NetApp Reports
  • xSNMP for Net-SNMP Reports
  • xSNMP for SonicWALL Reports

Requirements are:   OpsMgr 2007 R2, xSNMP suite, OpsMgr reporting implementation.   Like the xSNMP suite, the reports MP’s are licensed with the GNU-GPL and unsealed versions are provided.

xSNMP Verions 1.1.1(Alpha) Available Now!

I have posted the 1.1.1 (Alpha) version of the xSNMP suite at manage-x.net.   While the updates in this release are relatively minor in nature, I would still consider this to be an early test copy of this version and deploy in test environments before production.  The abbreviated change log for this release is:

New Management Packs:

  • xSNMP for APC NetBotz Management Pack
  • xSNMP for IBM AIX
  • xSNMP for Juniper Networks Management Pack
  • xSNMP for SonicWALL Management Pack

New Features:

  • Added support for monitoring of Net-SNMP Extend objects (xSNMP for Net-SNMP Management Pack)
  • Added a three state monitor for Net-SNMP Exec objects(xSNMP for Net-SNMP Management Pack)
  • New Cisco Firewall Subsystem monitoring for PIX and ASA firewalls
  • Added new data sources to the xSNMP MP to decrease data source redundancy
  • Individual inbound/outbound speeds can now be set through the Speed Override discovery in the xSNMP MP
  • All views are now publically accessible

Issues Resolved:

  • Fixed an uncommon issue with network interface utilization calculations
    that could result in invalid values being calculated if a previous poll returned null data
  • Updated the list of Device OID’s for APC UPS devices to include missing UPS models
  • Fixed an issue with an incorrect OID specified for HP Proliant SCSI (IDA) storage health monitoring
  • Fixed an issue with the Cisco Default Gateway Changed alert-generating rule

Using PowerShell to Check for Syntax Errors in System.ExpressionFilter Modules (OpsMgr Authoring)

With its wide range of usefulness in implementing conditional logic, expression evaluation, and error filtering, the System.ExpressionFilter module is likely to be a frequently used module in most OpsMgr Management Pack authoring scenarios.   However, the default configuration for the System.ExpressionFilter module may lead to a potential syntax error that is quite easy to miss, in my opinion.  This potential syntax error relates to the default configuration of the ValueExpression elements of the ExpressionFilter, in that the ValueExpression defaults to an XPathQuery value type.   If this default is not changed when evaluating a non-XPathQuery value, the workflow (as well as all workflows cooked down with the faulted workflow) will fail.

To illustrate an oversight resulting in this error, the following ExpressionFilter configuration would result in a workflow failure:

<SimpleExpression>
   <ValueExpression>
        <XPathQuery>ErrorCode</XPathQuery>
   </ValueExpression>
   <Operator>Equal</Operator>
   <ValueExpression>
       <XPathQuery>1</XPathQuery>
    </ValueExpression>
</SimpleExpression>

The correct implementation of this Expression Filter module would be:

<SimpleExpression>
   <ValueExpression>
        <XPathQuery>ErrorCode</XPathQuery>
   </ValueExpression>
   <Operator>Equal</Operator>
   <ValueExpression>
       <Value>1</Value>
    </ValueExpression>
</SimpleExpression>

Unfortunately, this type of error is not caught by the MPBPA, most likely due to the difficulty in differentiating between a valid XPathQuery value and string value.  To perform some basic error checking to identify these errors when authoring, I have written a simple PowerShell script that analyzes the XML of an unsealed Management Pack and reports errors and potential errors with ValueExpression configuration in ExpressionFilter modules.  

The logic of the script assumes the following:

  • Any ValueExpression configured as an XPathQuery expression and having a value that starts with a dollar sign ($) can be assumed to be a configuration error
  • Any ValueExpression configured as an XPathQuery expression and having a value that does not start with a forward slash or the strings:  Property or ErrorCode might be misconfigured

The script accepts the path to the Management Pack XML file as the single input parameter and then searches the XML for RegExExpression, SimpleExpression, and DayTimeExpression XML nodes.  These nodes are evaluated for mismatches on XPathQuery expressions and mismatches are reported to the console.

The output of the script looks like:

PS D:\Development\SCOM> ./checkexpressionfilters.ps1 -MPFIle:”d:\development\scom\xsnmp\1.1.Dev\xSNMP.AIX.xml”
Evaluating d:\development\scom\xsnmp\1.1.Dev\xSNMP.AIX.xml 

Error – Found mismatched XPathQuery value with XML:
<XPathQuery>$Target/Property[Type=”xSNMP.AIX.Processor”]/Name$</XPathQuery> 

Error – Found mismatched XPathQuery value with XML:
<XPathQuery>$Target/Property[Type=”xSNMP.AIX.Processor”]/Name$</XPathQuery> 

Errors found: 2
Warnings found: 0

The script can be downloaded here.

Read more of this post

Development Updates

While this blog has been a bit quiet lately, it has not been for lack of efforts.   In the next two weeks, a minor update to the xSNMP suite should be ready with a few bug-fixes and feature improvements.    This update will also include three new management packs:

  • xSNMP  for Juniper Networks
  • xSNMP for SonicWALL
  • xSNMP for APC NetBotz

We’re still finishing up testing and fine-tuning on the Oracle Unix/Linux MP as well.

These updates will be described in more detail here and available for download on manage-X.net soon.

xSNMP Management Packs Milestone!

As of today, the xSNMP Management Pack Suite version 1.1.0 has been downloaded 1000 times!  Thanks to everyone who has provided test feedback and comments.   There are more updates and feature enhancements in the works.

Handling String Array() Values in OpsMgr WinRM Enumeration Data Sources

I was recently asked a question on this topic, and I thought it was worth sharing.  

In this post, I described discovering Oracle processes with enumerations of instances of the SCX_UnixProcess class that are filtered on the values of the “Parameters” property.   The question I was asked involved a problem with a similar discovery process that was not evaluating the full Parameters value if more than oe value is returned.   An example of an enumeration for such an SCX_UnixProcess instance would be:

SCX_UnixProcess
    CSCreationClassName = SCX_ComputerSystem
    CSName = tl-lx02.testlab.corp
    Caption = Unix process information
    CreationClassName = SCX_UnixProcess
    CreationDate = 2010-05-09T09:17:37.614884Z
    Description = A snapshot of a current process
    […]
    ModulePath = /usr/bin/Xorg
    Name = Xorg
    OSCreationClassName = SCX_OperatingSystem
    OSName = Red Hat Distribution
    OperationalStatus = null
    OtherEnabledState = null
    OtherExecutionDescription = null
   Parameters = /usr/bin/Xorg, :0, -br, -audit, 0, -auth, /var/gdm/:0.Xauth
    ParentProcessID = 4040
    Priority = 75
    ProcessGroupID = 4048
    ProcessNiceValue = 20
    ProcessSessionID = 4048
    ProcessTTY = null
    […]

In this example, if an ExpressionFilter module were configured to evaluate the XPATH query:  //*[local-name()=”Parameters”], the evaluated value  would resolve to:  /usr/bin/Xorg.  Just the first value in the string array  would be evaluated.  

However, with this array of strings, the other values can be accessed with an ordinal appended to the XPATH queries:
 //*[local-name()=”Parameters”][1]
//*[local-name()=”Parameters”][2]
//*[local-name()=”Parameters”][3]
etc.

So, the ExpressionFilter module could easily be configured with a top-level  ‘OR’ operator, and a sequence of RegExExpressions to evaluate the first 2, 3, 4, 5 etc values in the Parameters value list

Finishing the Oracle SCX Management Pack for OpsMgr Cross-Platform Agents

I am in the process of putting the finishing touches on the Oracle SCX Management Pack that I have described in several recent posts (part 1, part 2part 3, part 4) and will soon be moving on to finishing the documentation for the management pack.  This post is intended to provide a preview of the finished MP and highlight the monitoring implemented by this MP.   I intend to make this management pack freely available in the near future, but I would like to get some more testing done before posting it for download.   In the meantime, if anyone is interested in testing this management pack, please leave a comment or contact me and I will be glad to provide an early beta version.  

While completing this management pack has taken me longer than I had anticipated, this authoring process has been a great learning experience for me in an area a bit outside of my comfort zone.  I also like to think that this management pack is a good representation of just how flexible the OpsMgr SCX extensions are in that I was able to implement all of the discovery and monitoring in the management pack using the basic SCX agent CIM providers without any additional scripts or compiled code on the agents. 

Screenshots

View Menu

Alert View

(Looks like it’s time to grow some table spaces)

Read more of this post

Oracle Management Pack for OpsMgr SCX Agents, Part 4: File System and Process Monitoring

While the vast majority of the rules and monitors in the Oracle SCX management pack (part 1, part 2, part 3) that I am working on involve the basic form of a SQL query data source (see part 2) that queries a specific parameter value to evaluate the result, there are two areas of monitoring that required discovery logic a bit more complex:  file system monitoring and Oracle process monitoring.  I found the challenge of implementing these two categories of monitoring to be engaging, and thought that it might be worth writing a bit about the approaches that I took.   

File System Monitoring

Oracle dependencies on file systems could exist in several forms, such as the Flash Recovery Area, Dump space destinations, Data File locations, and log archive destinations.   While the OpsMgr cross platform agent provides File System availability and space-monitoring out-of-the-box, I wanted to implement additional space monitoring for the File Systems that an Oracle instance depends on, with custom thresholds and alerting. 

In order to achieve this result, I started by creating a class for the Oracle File System.   An instance of this class would represent the File System that Oracle depends on.  By using the FS name as the key property, if multiple Oracle components used that File System, only a single instance of the class would be discovered.   In order to enhance alerting, I also added a set of boolean properties to the File System class that, once discovered, would indicate the nature of the dependency that Oracle has on the File System.  

Read more of this post

Microsoft System Center Management Pack Extensions Contest

The Microsoft System Center Influencers program is sponsering a Management Pack Extensions Contest.  Information here.

OpsMgr: R2 PowerShell Modules Example – DNS Resolution Monitor

While I’m finalizing some work on the Oracle SCX management pack,  I wanted to interrupt that series of posts to make a post walking through the use of one of the OpsMgr R2 PowerShell modules –something that I have been meaning to write up for some time.

The addition of native PowerShell modules was one of the major improvements in OpsMgr R2, and these modules collectively introduce an incredible degree of flexibility and improved efficiency in highly customized script-based monitoring.  There are a total of six PowerShell modules available in R2, and in this post, I will walkthrough an example using the Microsoft.Windows.PowerShellPropertyBagProbe module.   The monitor created in this example is a simple DNS resolution check that can be deployed to Windows agent-managed systems for perspective monitoring of DNS client resolution.

The example management pack can be downloaded here.

Management Pack, Class, and Discovery

Firstly, to build this monitor, a new management pack named DNSClientMonitoring is created. 

Read more of this post