Share via


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:

image

 

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):

image

 

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

image

UnhealthyMonitors.rdl

Comments

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

  • Anonymous
    July 23, 2015
    Here is a SQL query that produces a list of the critical/warning monitors from the SCOM Ops DB:

    Select
    DSVM.DisplayName 'MonitorName',
    MP.MPFriendlyName 'MPName',
    BME.DisplayName,
    DSVMT.DisplayName 'Target',
    Path=
    CASE
    WHEN BME.Path is null THEN 'N/A'
    ELSE BME.path
    END,
    HealthState=
    CASE SV.HealthState
    WHEN 2 THEN 'Warning'
    WHEN 3 THEN 'Critical'
    END
    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
    where
    SV.HealthState>1
    and BME.IsDeleted = 0
    and M.IsUnitMonitor = 1
    and DSVM.LanguageCode = 'ENU'
    and DSVMT.LanguageCode = 'ENU'
    Order by M.MonitorName

  • Anonymous
    September 01, 2015
    The comment has been removed