Why is vacuum at a critical level in PostgreSQL when I'm running autovacuum? I just checked the state of vacuum in my PostgreSQL database and it's at a critical level:

$ check_postgres --action=last_vacuum
POSTGRES_LAST_VACUUM CRITICAL: DB "postgres" DB: postgres TABLE: pg_catalog.pg_shdepend: 09:22 August 12, 2013 (40 weeks 2 days 4 hours 9 minutes) | time=0.52s postgres.pg_catalog.pg_shdepend=24379780s;86400;172800


but I am running autovacuum. Why would this happen?
check_postgres isn't very sophisticated software. It just checks if a particular table was vacuumed in the last 2 days (or as configured). For tables with no updates or deletes it is perfectly normal to not be vacuumed for extended periods of time. You can either ignore this or configure check_postgres to ignore this particular table.

I don't think this functionality of check_postgres is of much use. Maybe for some particular tables. Definitely not so much for system tables like pg_catalog.pg_shdepend.