I was going to say the same; use smartctl to find out what is logged in the
drives logs too:
'smartctl -x /dev/sda' 
'smartctl -x /dev/sdb' 
(I think -x is the right switch).

I would start by unmounting the /dev/mdN drives but not dismantling the arrays,
and then query all that you can query with mdadm. I would say there is are a
lot of log entries in dmesg and syslog/messages. Start from there.

No more reboots. They only thing you get from crashes and reboots is further
corruption at the _filesystem_ lavel (not hardware or RAID). If you find that
a particular drive is failing, take it out of the raid pool with something
'mdadm /dev/mdN --fail /dev/sd[a][b]N'
'mdadm /dev/mdN --remove /dev/sd[a][b]N'
whichever applies depending on what you want to do (declare it failed or just
remove it).

Filesystems should be unmounted cleanly, or just mounted read-only ahead of
time, if you want to continue gettigndiagnostics by launching programs. You
can force those filesystems to be mounted ro at boot-time in case you get
more of those crashes.

The logs are your friend.