Short answer: Yes.
Long answer: We run a heartbeat job by generating a file with a timestamp on the server. Then we transfer that file to some of our agents with a JOBF, and for others we generate a file with a timestamp on the agent directly with a JOBS. Either way, the central Nagios server monitors all those files for "freshness".
This works extremely well and allows us to find hanging agents (those that don't function/don't process jobs, but still have an OS process and respond to the engine as if they were alive), and it also allows us to generate statistics on effective agent performance by analysing the various time stamps for that heartbeat job in the "AH" db table.
Hth,