1. A method, implemented by a processor, comprising: determining dependencies among components of a network, the components including services and hardware components; constructing an inference graph for the network responsive to the dependencies, the inference graph reflecting cross-layer components including the services and the hardware components, each of the services having one of three states comprising an up state when a response time is within a normal range, a down state when service requests result in an error status code or no response at all, and a troubled state when the response time fails to meet a predetermined performance goal; and incorporating a load-balancing mechanism and a failover mechanism present in the network to the inference graph.