编辑:我正在重写这个问题以缩小评论中建议的范围。
在Deploying the application下,文档说,
使用 Istio 运行示例不需要对应用程序本身进行任何更改。相反,您只需要在支持 Istio 的环境中配置和运行服务,并在每个服务旁边注入 Envoy 边车。
我有一个 NodeJS 后端 API,它使用winston包编写日志。我认为,必须更改应用程序,以便winston 包中的日志可以参与分布式跟踪。这个对吗?
编辑:我正在重写这个问题以缩小评论中建议的范围。
在Deploying the application下,文档说,
使用 Istio 运行示例不需要对应用程序本身进行任何更改。相反,您只需要在支持 Istio 的环境中配置和运行服务,并在每个服务旁边注入 Envoy 边车。
我有一个 NodeJS 后端 API,它使用winston包编写日志。我认为,必须更改应用程序,以便winston 包中的日志可以参与分布式跟踪。这个对吗?
分布式跟踪系统通常需要向出站请求添加标头,以告知跟踪系统和下游任务跟踪给定请求属于哪个。虽然这不是 Istio 特定的,但 Istio 确实记录了需要传递的 OpenTracing 标头列表。如果您不这样做,那么服务之间的每个调用都将显示为单独的跟踪,而不是将它们缝合在一起成为一个统一的端到端跟踪。
这与您的日志记录系统是分开的。除非您通过 HTTP 将日志发送到 Logstash 或直接发送到 Elasticsearch,否则日志根本不会显示在跟踪中。另一方面,您无需更改日志记录设置中的任何内容即可“使用” Istio,但主要是因为没有太多直接交互。
不,你的假设不正确。Istio 跟踪与日志无关。这都是关于由 Istio 管理并由 sidecar 自动修改的自定义标头,以允许每个处理流量的 sidecar 在流量进入(请求)和离开(响应)时放置时间戳。这让您可以了解参与网络调用的容器之间的实际延迟。
最重要的是,您可以自由修改您的应用程序代码,以使用一些适用于您的应用程序语言的 OpenTracing 兼容库来包含更详细的方法级跟踪。基本上,除了 Winston 日志记录之外,您还添加了一些行,以便也包括代码执行管道的检查点。虽然您可以解析您的日志并使用日志时间戳通过数学进行测量,但要实现 opentracing 已经为您提供的功能还有很多工作要做。