Monitoring CPU usage based on time of day

Is there a way to set two different monitoring levels for CPU based on time of day? We have servers that if CPU spiked during the day it would not be good for us but if it spikes after hours when back ups are running that is not something to worry about. This would have to be done by application too since we are a 24x7 shop but we have some applications that only get used during normal business hours. My team is right now receiving alerts for all high CPU and we are finding some that alert every night when either back ups or some specific scheduled tasks run so I am trying to find a way to tune those out.

There's no way to do this inherently in the console/via a custom MP (that I'm aware of).

I have seen examples of override MPs being imported depending on the time of day, using scheduled tasks, essentially giving you the “time of day” monitoring you require.

If this is purely notifications, then you can set up separate subscribers (Admin > Notifications > Subscribers) with different schedules. i.e. you have business hours / outside business hours subscriptions.

We have done this via powershell.We had an issue with disk latency during the backups.

We have done it in two ways. One where we disable the monitor during certain hours. Since all alarms that go out during that time for disk latency where false positives. We use disable-scommonitor and disable it.

The other way is to set overrides during certain hours.

Take a look at this:

https://blogs.msdn.microsoft.com/rslaten/2013/07/21/create-overrides-in-scom-2012-with-powershell/

There is another way to do this but it is rather advanced.

You will need to create a new monitor with a scheduler filter condition detection module. It is basically a monitor which only works during certain periods. If you’re interested I can send you an example of this.

Br,
Jasper

1 Like

I am looking at that as an idea building groups for 24x7 apps and then one for business hours apps I could use in include groups and then set the alerting to go out based on those groups. I don’t think there is a way to say set the alert being tripped based on time of day either but was hoping. It is primarily for the emails going out but also for reports to management on how many alerts got tripped in a month and SLA’s. So this would solve the primary need but not the secondary.

This is definitely the correct approach but is also the most complicated. We implement a condition detection along similar lines for all our custom monitoring.

The monitor actually runs 24 x 7 x 365 but you can put the filter on to the “unhealthy” workflow so that the monitor will only go unhealthy at certain times of the day.

You also have the option of putting the filter on the healthy workflow - we don’t. If the monitor is unhealthy when the “non-support hours” begin then we allow this to go heathy “out of hours” by not filtering the health workflow.

Cheers

Graham