Snicket: Query-Driven Distributed Tracing

Snicket: Query-Driven Distributed Tracing
复制标题

DOI:
10.1145/3484266.3487393
复制
发表时间:
2021-11
期刊:
Proceedings of the 20th ACM Workshop on Hot Topics in Networks
影响因子:
--
通讯作者:
Jessica Berg;Fabian Ruffy;Khanh Nguyen;Nicholas Yang;Taegyun Kim;Anirudh Sivaraman;R. Netravali
Jessica Berg;Fabian Ruffy;Khanh Nguyen;Nicholas Yang;Taegyun Kim;Anirudh Sivaraman;R. Netravali
中科院分区:
其他
文献类型:
--
作者:
Jessica Berg;Fabian Ruffy;Khanh Nguyen;Nicholas Yang;Taegyun Kim;Anirudh Sivaraman;R. Netravali

文献摘要

被引文献

相似文献

增加的应用复杂性使应用程序被重构为较小的组件,称为微服务,使用RPC相互通信。分布式跟踪已成为此类基于微服务应用程序的重要调试工具。分布式跟踪遵循用户请求从其起点从应用程序的前端开始的旅程,通过前端对不同的微服务的RPC调用,一直递归,直到构建响应并将其发送给用户。为了降低存储成本,分布式跟踪系统在收集后续查询之前示例痕迹,影响收集到的轨迹上查询的准确性。我们提出了一个替代系统Snicket,该系统紧密整合了查询和痕迹的收集。 Snicket将作为输入作为数据库风格的流媒体查询,该查询表达了开发人员想要在跟踪数据上执行的分析。该查询被编译成一个微服务扩展的分布式集合中,这些分布量作为“线路颠簸”,拦截RPC请求和响应从微服务流入和退出时。该扩展集的集合实现了查询,在跟踪上执行早期过滤和计算,以特定于查询的方式减少存储数据的量。我们表明,窃贼在可以支持的查询中具有表现力,并且可以快速更新查询以供交互式使用。
Increasing application complexity has caused applications to be refactored into smaller components known as microservices that communicate with each other using RPCs. Distributed tracing has emerged as an important debugging tool for such microservice-based applications. Distributed tracing follows the journey of a user request from its starting point at the application's front-end, through RPC calls made by the front-end to different microservices recursively, all the way until a response is constructed and sent back to the user. To reduce storage costs, distributed tracing systems sample traces before collecting them for subsequent querying, affecting the accuracy of queries on the collected traces. We propose an alternative system, Snicket, that tightly integrates querying and collection of traces. Snicket takes as input a database-style streaming query that expresses the analysis the developer wants to perform on the trace data. This query is compiled into a distributed collection of microservice extensions that run as "bumps-in-the-wire," intercepting RPC requests and responses as they flow into and out of microservices. This collection of extensions implements the query, performing early filtering and computation on the traces to reduce the amount of stored data in a query-specific manner. We show that Snicket is expressive in the queries it can support and can update queries fast enough for interactive use.