I have a page on my web site that reports on the health of the site and sets an HTTP 200 status code is everything is okay. This page is used by an external monitoring program to check that the site is up.
When this page is hit, I make a very lightweight DB proc call to see if the DB is up and okay. If this fails, I want to return a meaningful HTTP error code to the monitor to let it know that all is not well.
From what I can work out there's no HTTP status that says "a third party component that I rely on is down" so what what would you return in this case?
503 Service Unavailable...?
That's exactly what a 503 is.
503 means that the server was relying on connecting some other service, which did not respond in time.
Server Error 5xx
Checked up on Wikipedia and the listing there seems to imply that a 504 would be the one I'm thinking of. Quite possibly the link over is outdated.
So:
It sounds like you should base your monitoring on more than just the status return. You're trying to pass more sophisticated information than the HTTP status codes were designed to communicate.
Or, just pick a code, even make one up, and set up your monitoring to treat it as "db down".
I would suspect that a 500 or 503 would be appropriate. 503 is generally used for overloaded or maintenance conditions, but I don't think it would be unreasonable to use it for your situation.