我想使用 zipkin 来分析传统程序的内部结构。
我使用术语“传统”,因为 AFAIK zipkin 用于在微服务环境中进行跟踪,其中一个请求由 N 个子请求计算。
我想分析我的python程序的性能。
我想跟踪所有 python 方法调用和所有完成的 linux 系统调用。
如何跟踪 python 方法调用和 linux 系统调用以将 spans 放入 zipkin?
即使这不可行,我也很有趣如何做到这一点。我想了解 zipkin 的工作原理。
在 zipkin 术语中,您所问的通常称为“本地跨度”或“本地跟踪”,基本上是一种既不发起也不导致远程调用的操作。
我不知道系统调用级别的任何事情,但许多跟踪器支持函数调用的显式检测。
例如,使用py_zipkin
@zipkin_span(service_name='my_service', span_name='some_function')
def some_function(a, b):
return do_stuff(a, b)
除了像这样的显式检测之外,还可以将数据导出到 zipkin。例如,可以将在另一种工具中生成的跟踪数据转换为zipkin 的 json 格式。
这可能无法回答您的问题,但我希望它有所帮助。