Usually these daemon managers detect when the process is dying right after starting up and indicate that with a message like "[process] is respawning too fast". Besides, there are always logs.
But that's not a way to detect service failure. That's a way to detect potential service failure. The only unambiguous failure notification is the return code.