Let's suppose your job requires you to answer the above question. Over and over again. Here's how to get a quick read on the situation.
1. On each of your SharePoint servers, install LogParser: Download details: Log Parser 2.2
2. On the desktop of each server, create a file called WhatUpWithSharePoint.cmd and set the contents as follows: (of course, you'll will need to adjust the paths if you have not stuck with the default locations for Log Parser or SharePoint Logs).
"C:\Program Files\Log Parser 2.2\LogParser" "SELECT * FROM 'C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS\*.log' WHERE message LIKE '%%Error%%' OR level = 'Exception' OR level = 'Critical' ORDER BY Timestamp DESC " -i:TSV -o:DATAGRID -e:10 -dtlines:600
Update 5/25/08: Added -dtlines parameter. As a commenter noted, the EventID column can contain both numbers and letters. If the first 100 rows contain only numbers, LogParser will infer Integer data type, which leads to parse errors when it eventually encounters letters further on in the file. Picking a bigger number for -dtlines can avoid this.
3. Double click to run it and you'll see something like this:
Of course, this doesn't give you the answer, but it gives you a good idea of where to begin to look. Once you spot things that look suspicious or related to current concerns you can revise the sample query I listed above to zero in on particular areas of the logs. Typically you would want to further enhance the WHERE clause to pinpoint specific Category, Level or time ranges of Timestamp. LogParser.chm in the LogParser install directory is there to help you.
Happy Mothers Day, btw...