Fault localization, a core element in network fault management, is the process of inferring the exact failure in a network from the set of observed symptoms. Since faults in network systems can be unavoidable, their quick and accurate detection and diagnosis is important for the stability, consistency, and performance of a communication system. In this paper, we discuss the challenges of fault localization in complex communication systems and present an overview of recent techniques proposed in the literature along with their advantages and limitations. We start by briefly surveying passive monitoring techniques which were previously reviewed in a survey by Steinder [1]. We then describe more recent fault localization research in five categories: active monitoring techniques, techniques for overlay and virtual networks, decentralized probabilistic management techniques, temporal correlation techniques, and learning techniques.