Myunghwan Kim, Roshan Sumbaly, and Sam Shah

In the 2013 International Conference on Measurement and Modeling of Computer Systems (SIGMETRICS 2013)


 

Abstract

 

Large-scale websites are predominantly built as a service-oriented architecture. Here, services are specialized for a certain task, run on multiple machines, and communicate with each other to serve a user’s request. An anomalous change in a metric of one service can propagate to other services during this communication, resulting in overall degradation of the request. As any such degradation is revenue impacting, maintaining correct functionality is of paramount concern: it is important to find the root cause of any anomaly as quickly as possible. This is challenging because there are numerous metrics or sensors for a given service, and a modern website is usually composed of hundreds of services running on thousands of machines in multiple data centers.

This paper introduces MonitorRank, an algorithm that can reduce the time, domain knowledge, and human effort required to find the root causes of anomalies in such service-oriented architectures. In the event of an anomaly, MonitorRank provides a ranked order list of possible root causes for monitoring teams to investigate. MonitorRank uses the historical and current time-series metrics of each sensor as its input, along with the call graph generated between sensors to build an unsupervised model for ranking. Experiments on real production outage data from LinkedIn, one of the largest online social networks, shows a 26% to 51% improvement in mean average precision in finding root causes compared to baseline and current state-of-the-art methods.

 

BiBTeX

@inproceedings{kim13rootcause, author = {Kim, Myunghwan and Sumbaly, Roshan and Shah, Sam}, title = {Root cause detection in a service-oriented architecture}, booktitle = {Proceedings of the International Conference on Measurement and Modeling of Computer Systems}, series = {SIGMETRICS '13}, year = {2013}, location = {Pittsburgh, PA, USA}, pages = {93--104}, numpages = {12}, }