Конструкции вида «if cpu > 60% for 2 cycles then restart» вполне себе рабочие и грешить на monit мне не стоило. Дело оказалось в том, что значение CPU внутри контейнера monit берет от общего и они совсем не похожи на то, что мы видим в top/htop.
Решение — поймать момент нестабильного поведения процесса и снять показания с помощью команды monit status.