Unhealthy Monitors Report

I recently put together an “Unhealthy Monitors” report for an OpsMgr Administrator to see which Monitors are causing the most state degradation in the environment.  This report lists all monitors that have objects in an unhealthy state, so we can see which monitors have the most unhealthy objects.  Each monitor can be expanded to see which objects are unhealthy. 

This does not show us which Monitors are generating the most State Changes, just which ones have the most objects which are currently unhealthy.  The Monitors at the top of the list would generally need to be tuned (reconfigure thresholds, etc.) or disabled (Administrator is not concerned with the issue), or a systemic problem in the environment needs to be fixed.

NOTE:  This report uses the Operations Database instead of the Data Warehouse….in order for it to work, you must create an SRS Data Source for the OpsDB…Kevin Holman has instructions for this here.

The report doesn’t take any parameters…just import into SRS and run it.

The output will show the Monitor name, Target class, Management Pack name, and the number of objects that are not in a healthy state:



Each Monitor in the list is expandable to show a list of objects that are in an unhealthy state…the list shows the Path, Display Name, Health State, and Last Modified time (when it last changed to an unhealthy state):



The table format of the report makes it very easy to export to Excel, where you can do filtering and sorting:



Comments (3)

  1. Hiren Tuday says:

    Is there some reason why can't we report this information from the data warehouse?  Please can provide one for us?  Best Regards.

  2. Matt Salmond says:

    Here is a SQL query that produces a list of the critical/warning monitors from the SCOM Ops DB:

    DSVM.DisplayName ‘MonitorName’,
    MP.MPFriendlyName ‘MPName’,
    DSVMT.DisplayName ‘Target’,
    WHEN BME.Path is null THEN ‘N/A’
    ELSE BME.path
    CASE SV.HealthState
    WHEN 2 THEN ‘Warning’
    WHEN 3 THEN ‘Critical’
    from StateView SV
    left join BaseManagedEntity BME on SV.BaseManagedEntityId = BME.BaseManagedEntityId
    Left join Monitor M on SV.MonitorId = M.Monitorid
    Left Join DisplayStringView DSVM on DSVM.LTStringId = m.MonitorId
    Left join ManagementPack MP on MP.ManagementPackId = M.ManagementPackId
    Left Join DisplayStringView DSVMT on DSVMT.LTStringId = SV.TargetManagedEntityType
    and BME.IsDeleted = 0
    and M.IsUnitMonitor = 1
    and DSVM.LanguageCode = ‘ENU’
    and DSVMT.LanguageCode = ‘ENU’
    Order by M.MonitorName

  3. kassman says:

    Thanks for Sharing both Jimmy and Matt Salmond your info.