Context-based analytics - Establishing explicit links between runtime traces and source code
Abstract
Diagnosing problems in large-scale, distributed applications runningin cloud environments requires investigating different sources ofinformation to reason about application state at any given time. Typical sources of information available to developers and operatorsinclude log statements and other runtime information collectedby monitors, such as application and system metrics. Just as importantly, developers rely on information related to changes to the source code andconfiguration files (program code) when troubleshooting. This information is generally scattered, and it is up to the troubleshooterto inspect multiple implicitly-connected fragments thereof. Currently, different tools need to be used in conjunction, e.g., logaggregation tools, source-code management tools, and runtime-metricdashboards, each requiring different data sources and workflows. Notsurprisingly, diagnosing problems is a difficult proposition. In this paper, we propose Context-Based Analytics, an approach that makes the links between runtime informationand program-code fragments explicit by constructing a graph based on anapplication-context model. Implicit connections between informationfragments are explicitly represented as edges in the graph. We designeda framework for expressing application-context models and implemented a prototype. Further, we instantiated our prototype framework with an application-contextmodel for two real cloud applications, one from IBM and another from a major telecommunications provider. We applied context-based analytics to diagnose twoissues taken from the issue tracker of the IBM application and foundthat our approach reduced the effort of diagnosing these issues. In particular, context-based analytics decreased the number of required analysis steps by 48% and the number ofneeded inspected traces by 40% on average as compared to a standard diagnosis approach.