If the spin-locks are in user space, you likely can't monitor them. Some software will track spin-lock time and provide a method for extracting it. You may be able to monitor by proxy using a count of runnable processes. This should increase if you have a number of processes in a runnable state.
A well-behaved program will abandon it spin-lock after a short period. If the spin-lock was not successful it will preempt and wait for a lock. If you have a poorly behaved program, it will increase CPU utilization when spin-locking frequently.
Recording the the system state over time can be useful in cases like this. sar can run in the background recording data periodically. This is useful in a case such as yours as you can examine the trends leading up to the failure. There are are tools that will provide graphical output, but I find looking at the raw data more useful.
There are also tools that will record ongoing usage directly into rrd (round-robin database) files and graph the results. These are useful for trend analysis.
If these are batch or batch-like programs, you may want to dynamically nice programs using the most CPU. There are various programs available that monitor resource utilization and and adjust priorities so resource hogs don't kill performance for other users.