Detecting the Unexpected in Distributed Systems