You didn't mention the platform you are running on. On Windows I would try to use
BOOL GetSystemTimes(
LPFILETIME lpIdleTime,
LPFILETIME lpKernelTime,
LPFILETIME lpUserTime
);
and call that regularly, say every 10 seconds. The values you get from this call are cumulative since the start of the system. Hence you will have to do a little arithmetic to figure the CPU load averaged over the last 10 minutes.
Find some other useful information on
Get CPU Usage with GetSystemTimes[
^].