Recovery email sent without failure or recovery log entry

Christos Chatzaras <[email protected]> Thu, 9 Jul 2026 11:14:17 +0300
Newsgroups gmane.comp.monitoring.monit.general
Message-ID <[email protected]>
Hello,

I am using Monit 6.0.0 on FreeBSD 14+.

My configuration includes:

set daemon 30

set alert [email protected] not on { instance, action, uptime }

check system $HOST
  if cpu usage > 65% for 20 cycles then alert
  if cpu usage > 90% for 10 cycles then alert
  if loadavg (15min) per core > 1.0 for 10 cycles then alert
  if loadavg (5min) per core > 1.5 for 5 cycles then alert
  if memory usage > 96% for 10 cycles then alert
  if swap usage > 8 GB for 10 cycles then alert
  if pageout > 100 per second for 10 cycles then alert
  if pageout > 1000 per second for 3 cycles then alert

The log shows only these CPU messages:

Jul  9 10:32:17 server102 monit[42487]: 'server102.example.com' cpu =
usage of 86.2% matches resource limit [cpu usage > 65.0%]

Jul  9 10:32:48 server102 monit[42487]: 'server102.example.com' cpu =
usage of 76.0% matches resource limit [cpu usage > 65.0%]

There is no CPU recovery message in the Monit log.

However, at the next cycle I received this email:

Resource limit succeeded

Description:
cpu usage check succeeded [current cpu usage =3D 30.6%]

I did not receive any failure email, and the Postfix logs contain only =
the recovery email.

How can Monit send a 'Resource limit succeeded' email when:

1. The CPU condition was above 65% for only two cycles, not the required =
20 cycles.
2. No failure email was sent.
3. No recovery message was written to the Monit log.

Does 'matches resource limit' only mean that the current sample matched =
the condition, or can it change the shared resource event state before =
the 20-cycle threshold is reached?

Could this be related to having multiple CPU, load average, memory, =
swap, and pageout rules under the same `check system` service?

Thank you.