US9916232B2

Methods and systems of distributed tracing

Summary by NHIP

Distributed tracing system

The method observes messages among distributed application components to construct a call flow graph representing causal relationships between processes. It matches per-process tracer descriptions with observed messages to build a distributed call stack for analyzing and debugging the application.

Claim Score by NHIP

Read claim 1, the broadest

Abstract

A system and methods are provided for distributed tracing in a distributed application. In one embodiment, a method includes observing a plurality of messages sent and received among components of the distributed application, generating a probabilistic model of a call flow from observed messages of the distributed system, and constructing a call flow graph based on the probabilistic model for the distributed application. Distributed tracing may include observing messages by performing the subscription-based observation techniques and operations to receive, message traces describing messages being communicated among components of the distributed application. In this regard, the tracing service may merge message traces from different instrumentation points with message traces obtained by observing message queues to generate a probabilistic model and call flow graph. A distributed application developer or other relevant user may benefit in efficiently and effectively tracking down a cause of an abnormal behavior or analyzing performance profiles.

US9916232B2, drawing sheet 1
Sheet 1 of 20

Term

6.7 yearsleft in the term

Expires 12 June 2033, including 135 days of term adjustment.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Expires

19 claims: 2 independent, 17 dependent

  1. 1
    Broadest claimClaim Score 50, average(NHIP)A method of distributed tracing in a distributed application, the method comprising:observing a plurality of messages sent and received among components of the distributed application, wherein the components of the distributed application communicate with each other through messages, and the plurality of messages is based on one or more user requests;constructing, based on observing a subset of the plurality of messages, a call flow graph that represents causal relationships between processes of the components;obtaining a description of one or more call stacks from one or more per-process tracers associated with the distributed application;recording and matching the per-process tracer description with the corresponding observed messages and selecting appropriate ones of the recorded description;constructing, based on the call flow graph and the selected description, a distributed call stack indicative of an execution flow across processes of the components in the distributed application;and using the distributed call stack for analyzing and debugging of the distributed application.
  2. 12
    A system, comprising at least one processor and memory; a plurality of service components of a distributed application, wherein the plurality of service components is executable on one or more processors, and components of the distributed application communicate with each other through messages; a message service component to provide communication between the plurality of service components of the distributed application; and a tracing service component configured to:observe a plurality of messages sent and received among components of the distributed application, wherein the components of the distributed application communicate with each other through messages, wherein one or more of the plurality of messages is a request and response message pair, and the plurality of messages is based on one or more user requests;construct, based on the observed plurality of messages, a call flow graph that represents causal relationships between processes of the components;obtain a description of one or more call stacks from one or more per-process tracers associated with the distributed application;record and match the per-process tracer description with the corresponding observed messages and select appropriate ones of the recorded description;construct, based on the call flow graph and the selected description, a distributed call stack indicative of an execution flow across processes of the components in the distributed application;and use the distributed call stack for analyzing and debugging of the distributed application.