Just the monitor not catching it. The monitor checks on an interval, and if happens to occur between checks, it simply never shows on the monitor. Server load also affects the speed at which it restarts, so during times of low load, the restart completes faster, resulting in shorter error duration and an increased likelihood of it being missed by the monitor.
And finally, the 2 hours thing isn't a hard 2 hours. It's at least 2 hours between restarts. There's times where that restart is closer to 3 hours because the server delays maintenance tasks if it's experiencing high load. The background process we developed to handle routine server maintenance (including apache restarts) is designed to only do its work when server load is below a set threshold.