IP Library Granted Patent US 11,256,604
Granted Patent B2
US 11,256,604 · App. 16/752,286 · Granted Feb 22, 2022

Multiple modes of data collection and analysis in a microservices-based architecture

Inventors: Mayank Agarwal (Mountain View, CA); Dmitrii Anoshin (Redwood City, CA); Steven Flanders (Nashua, NH); Steven Karis (Redwood City, CA); Justin Smith (San Francisco, CA); Eric Wohlstadter (Atherton, CA)
Assignee: Splunk Inc.
G06F11/364G06F16/953
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,256,604
App. No.
16/752,286
Granted
Feb 22, 2022
Kind
B2
Abstract

A method of analyzing a performance of a microservices-based application comprises generating a plurality of traces from a plurality of spans associated with the microservices-based application. The method also comprises generating a plurality of data sets each associated with a respective analysis mode of a plurality of analysis modes using the plurality of traces, wherein each analysis mode extracts a different level of detail for analyzing the performance of the services in the application from the plurality of spans. Further, the method comprises selecting, based on a first user query, a first analysis mode from the plurality of analysis modes for generating a response to the first user query. The method also comprises accessing a data set of the plurality of data sets that is associated with the first analysis mode and generating the response to the first user query using the data set associated with the first analysis mode.

Claims (95)

1. A method of analyzing performance of services in a microservices-based application, the method comprising:

generating a plurality of traces from a plurality of spans associated with the microservices-based application and ingested during a given time duration;

generating a plurality of data sets each associated with a respective analysis mode of a plurality of analysis modes using the plurality of traces, wherein each analysis mode extracts a different level of detail from the plurality of spans associated with the plurality of traces, wherein at least one analysis mode of the plurality of analysis modes is associated with analyzing raw trace data associated with the plurality of traces to analyze the performance of the services;

selecting, based on a first user query, a first analysis mode from the plurality of analysis modes for generating a response to the first user query;

accessing a data set of the plurality of data sets that is associated with the first analysis mode; and

generating the response to the first user query using the data set associated with the first analysis mode, wherein the first user query requests information pertaining to the performance of the services in the microservices-based application.

2. The method of claim 1 , further comprising ingesting the plurality of spans in real time.

3. The method of claim 1 , wherein the selecting further comprises:

determining the first analysis mode from the plurality of analysis modes based on at least one of a structure of the first user query, a type of the first user query, a syntax of the first user query, a content of the first user query, and an interface through which the first user query was submitted.

4. The method of claim 1 , further comprising:

selecting, based on a second user query, a second analysis mode from the plurality of analysis modes for generating a response to the second user query;

navigating from the first analysis mode to the second analysis mode; and

accessing a data set of the plurality of data sets associated with the second analysis mode; and

generating a response to the second user query using the data set associated with the second analysis mode.

5. The method of claim 1 , further comprising:

selecting, based on a second user query, the first analysis mode for generating a response to the second user query, wherein the second user query is associated with the first analysis mode;

accessing the data set associated with the first analysis mode; and

generating a response to the second user query using the data set associated with the first analysis mode.

6. The method of claim 1 , wherein the plurality of analysis modes comprises the first analysis mode, a second analysis mode and a third analysis mode, and wherein the first analysis mode is associated with computing metrics associated with the performance of the services using information extracted from the plurality of spans, wherein the second analysis mode is associated with sampling traces from the plurality of traces to analyze the performance of the services, and wherein the third analysis mode is associated with the analyzing of the raw trace data associated with the plurality of traces to analyze the performance of the services.

7. The method of claim 1 , wherein at least one analysis mode of the plurality of analysis modes is associated with computing metrics associated with the performance of the services using information extracted from the plurality of spans and wherein at least one analysis mode of the plurality of analysis modes is associated with sampling traces from the plurality of traces to analyze the performance of the services.

8. The method of claim 1 , wherein at least one analysis mode of the plurality of analysis modes is associated with computing metrics associated with the performance of the services using information extracted from the plurality of spans and wherein at least one analysis mode of the plurality of analysis modes is associated with the analyzing of the raw trace data associated with the plurality of traces to analyze the performance of the services.

9. The method of claim 1 , wherein at least one analysis mode of the plurality of analysis modes is associated with sampling traces from the plurality of traces to analyze the performance of the services and wherein at least one analysis mode of the plurality of analysis modes is associated with the analyzing of the raw trace data associated with the plurality of traces to analyze the performance of the services.

10. The method of claim 1 , wherein at least one analysis mode of the plurality of analysis modes performs analysis by:

computing metrics data from selected tags extracted from the plurality of spans; and

aggregating the metrics data to deliver a response to the first user query.

11. The method of claim 1 , wherein at least one analysis mode of the plurality of analysis modes performs analysis by:

storing exemplary traces associated with respective services in the microservices-based application;

accessing an exemplary trace associated with a respective service in response to the first user query; and

analyzing the exemplary trace to analyze a performance of the respective service.

12. The method of claim 1 , wherein at least one analysis mode of the plurality of analysis modes performs analysis by:

storing exemplary traces associated with respective services in the microservices-based application using a unique identifier for each exemplary trace;

accessing an exemplary trace associated with a respective service using a respective unique identifier in response to the first user query; and

analyzing the exemplary trace to analyze a performance of the respective service.

13. The method of claim 1 , wherein the at least one of the plurality of analysis modes performs analysis by:

storing the raw trace data for the plurality of traces with corresponding metadata extracted from the plurality of traces, wherein the corresponding metadata comprises tag information associated with the plurality of traces; and

querying the raw trace data and the metadata to analyze performance of services associated with the plurality of traces.

14. The method of claim 1 , wherein at least one of the plurality of analysis modes performs analysis by:

storing the raw trace data for the plurality of traces with corresponding metadata extracted from the plurality of traces, wherein the corresponding metadata comprises tag information associated with the plurality of traces; and

querying the raw trace data and the metadata to analyze performance of services associated with the plurality of traces, wherein the querying comprises filtering information corresponding to indexed tags and unindexed tags from the raw trace data and the metadata.

15. The method of claim 1 , wherein the generating the plurality of data sets comprises:

generating a first data set associated with the first analysis mode from the plurality of analysis modes, wherein the generating the first data set comprises:

indexing a plurality of tags from the plurality of traces; and

generating metrics for services and dependencies comprised within the microservices-based application by tracking of a number of occurrences of at least one indexed tag from the plurality of tags in connection with a respective service or a respective dependency over the given time duration.

16. The method of claim 1 , wherein the generating the plurality of data sets comprises:

generating a first data set associated with the first analysis mode from the plurality of analysis modes, wherein the generating the first data set comprises:

indexing a plurality of tags from the plurality of traces; and

generating metrics for services and dependencies comprised within the microservices-based application by tracking a number of occurrences of at least one indexed tag from the plurality of tags in connection with a respective service or a respective dependency for the given time duration, and wherein the metrics are selected from a group including requests, errors and duration.

17. The method of claim 1 , wherein the generating the plurality of data sets comprises:

generating a first data set associated with the first analysis mode from the plurality of analysis modes, wherein the generating the first data set comprises:

indexing a plurality of tags from the plurality of traces;

traversing the plurality of traces;

collecting a plurality of span pairs therefrom, wherein each span pair of the plurality of span pairs is associated with a call between two services in the microservices-based application;

mapping indexed tags for each span in each span pair of the plurality of span pairs to tag attributes to indicate a directionality of dependency for a respective call between services within a respective span pair;

creating a first table, wherein each row of the first table comprises a unique combination of a span pair from the plurality of span pairs and associated tag attributes, and a count value to track multiple occurrences of the respective span pair and the associated tag attributes in the plurality of traces; and

creating a second table, wherein each row of the second table comprises a unique combination of a service in the microservices-based application and associated indexed tags, and a count value to track multiple occurrences of the respective service and the associated indexed tags in the plurality of traces.

18. The method of claim 1 , wherein the generating the plurality of data sets comprises:

generating a first data set associated with the first analysis mode from the plurality of analysis modes, wherein the generating the first data set comprises:

indexing a plurality of tags from the plurality of traces;

generating metrics for services and dependencies comprised within the microservices-based application by tracking of a number of occurrences of indexed tags from the plurality of tags in connection with a respective service or a respective dependency for the given time duration; and

rendering an application topology graph for display in a GUI using the generated metrics.

19. The method of claim 1 , the generating the plurality of data sets comprises:

generating a first data set associated with the first analysis mode from the plurality of analysis modes, wherein the generating the first data set comprises:

indexing a plurality of tags from the plurality of traces;

generating metrics for services and dependencies comprised within the microservices-based application by tracking a number of occurrences of indexed tags from the plurality of tags in connection with a respective service or a respective dependency over the given time duration; and

displaying a user option to analyze constituent attributes associated with the respective service or the respective dependency comprised within the microservices-based application.

20. The method of claim 1 , wherein the generating the plurality of data sets comprises:

generating a second data set from the plurality of data sets associated with a second analysis mode from the plurality of analysis modes, wherein the generating the second data set comprises:

indexing a plurality of tags from the plurality of traces;

determining an exemplary trace for each combination of a service and corresponding indexed tags extracted from the plurality of tags; and

storing in memory a respective exemplary trace in connection with each combination of a service and corresponding indexed tags.

21. The method of claim 1 , wherein the generating the plurality of data sets comprises:

generating a second data set associated with a second analysis mode from the plurality of analysis modes, wherein the generating the second data set comprises:

indexing a plurality of tags from the plurality of traces;

determining an exemplary trace for each combination of a service and corresponding indexed tags extracted from the plurality of tags;

storing in memory a respective exemplary trace in connection with each combination of a service and corresponding indexed tags; and

retrieving the respective exemplary trace and analyzing the respective exemplary trace responsive to user input to a GUI for further analysis thereof.

22. The method of claim 1 , wherein the generating the plurality of data sets comprises:

generating a second data set associated with a second analysis mode from the plurality of analysis modes, wherein the generating the second data set comprises:

indexing a plurality of tags from the plurality of traces;

mapping the plurality of tags to a respective plurality of tag attributes;

determining an exemplary trace for each combination of a dependency and corresponding tag attributes extracted from the plurality of tag attributes; and

storing in memory the respective exemplary trace in connection with each combination of a service and corresponding tag attributes.

23. A non-transitory computer-readable medium having computer-readable program code embodied therein for causing a computer system to perform a method of analyzing performance of services in a microservices-based application, the method comprising:

generating a plurality of traces from a plurality of spans associated with the microservices-based application and ingested during a given time duration;

generating a plurality of data sets each associated with a respective analysis mode of a plurality of analysis modes using the plurality of traces, wherein each analysis mode extracts a different level of detail from the plurality of spans associated with the plurality of traces, wherein at least one analysis mode of the plurality of analysis modes is associated with analyzing raw trace data associated with the plurality of traces to analyze the performance of the services;

selecting, based on a first user query, a first analysis mode from the plurality of analysis modes for generating a response to the first user query;

accessing a data set of the plurality of data sets that is associated with the first analysis mode; and

generating the response to the first user query using the data set associated with the first analysis mode, wherein the first user query requests information pertaining to the performance of the services in the microservices-based application.

24. A system for performing a method for analyzing a performance of services in a microservices-based application, the system comprising:

a processing device communicatively coupled with a memory and configured to:

generate a plurality of traces from a plurality of spans associated with the microservices-based application and ingested during a given time duration;

generate a plurality of data sets each associated with a respective analysis mode of a plurality of analysis modes using the plurality of traces, wherein each analysis mode extracts a different level of detail from the plurality of spans associated with the plurality of traces, wherein at least one analysis mode of the plurality of analysis modes is associated with analyzing raw trace data associated with the plurality of traces to analyze the performance of the services;

select, based on a first user query, a first analysis mode from the plurality of analysis modes for generating a response to the first user query;

access a data set of the plurality of data sets that is associated with the first analysis mode; and

generate the response to the first user query using the data set associated with the first analysis mode, wherein the first user query requests information pertaining to the performance of the services in the microservices-based application.

Assignments (3)
CHANGE OF NAME Recorded Jul 22, 2025
From: SPLUNK INC.
To: SPLUNK LLC
Reel/Frame 072170/0599 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2025
From: SPLUNK LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 072173/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2020
From: AGARWAL, MAYANK; ANOSHIN, DMITRII; FLANDERS, STEVEN; KARIS, STEVEN; SMITH, JUSTIN; WOHLSTADTER, ERIC
To: SPLUNK INC.
Reel/Frame 051741/0059 →
Continuity (1)
Related Publication 20210232485A1 · Jul 29, 2021
Cited By (5)
US 12,430,226 US 12,474,988 US 12,475,021 US 12,561,237 US 12,585,571