A Windows 7/Vista desktop gadget. Actually, the gadget is just a tiny (400x300ish) iframe showing a webpage with some small text. It sits in the corner of one of my monitors where I can always see it.
This webpage is a list of servers (front and back end) and their load averages.
At least for all the webapps I run, which serve hundreds of requests per second to tens of thousands of users, load average is a good enough proxy for all the metrics that matter.
When CPU usage on the front end servers is getting high enough that it impacts response times and throughput, that shows up in the increasing load averages. When disk IO on the database servers is getting high enough that it impacts response times and thoughput, that shows up in the increasing load averages.
The web servers each have a webpage on them that has the load average as its only output. I wrote up a little script for the database servers to query the load remotely on the DB servers. The webpage I use as the desktop gadget polls those webpages/scripts and prints out the server names and their current load as its output.
As for uptime monitoring when I'm not around, I used to use AreMySitesUp.com. Nice, simple service that does what it's supposed to. Even with a free plan it seems to check every 15 minutes or more often, and if a site goes down, it checks again much more often until it comes back up. It'll also tell you the exact status code if it's not in the 200-300 range, so you can tell a server is 500'ing out but online, and will notify you of timeouts.
I built my own uptime monitoring service, though, so I don't need that anymore. I run it using VPS accounts at different providers so I don't get stuck with the sites and the service monitoring them going down at the same time. Twilio just added SMS to their API, so adding SMS alerts to any custom monitoring scripts is dead easy now.