Istio概念-服务间通信和跟踪

问题描述 投票:0回答:2

编辑:我正在重写此问题,以缩小注释中建议的范围。

Deploying the application下,文档说,

使用Istio运行示例不需要对应用程序本身进行任何更改。相反,您只需要在启用Istio的环境中配置和运行服务,并在每个服务旁边注入Envoy辅助工具。

我有一个NodeJS后端API,该API使用winston包写入日志。我认为必须更改应用程序[[will,以便Winston包中的日志可以参与分布式跟踪。这是正确的吗?

logging kubernetes openshift istio distributed-tracing
2个回答
2
投票
通常,分布式跟踪系统需要在出站请求中添加标头,以告诉跟踪给定请求所属的跟踪系统和下游任务。尽管这不是特定于Istio的,但Istio确实需要传递a list of OpenTracing headers文档。如果您不这样做,那么服务之间的每个调用将显示为单独的跟踪,而不是将它们缝合在一起成为一个统一的端到端跟踪。

这与您的日志系统是分开的。除非您通过HTTP将日志发送到Logstash之类的日志或直接发送到Elasticsearch中,否则日志根本不会显示在跟踪中。不利的一面是,您无需更改日志记录设置中的任何内容即可“与Istio一起使用”,但是主要是因为没有很多直接交互。


0
投票
不,您的假设不正确。 Istio跟踪与日志无关。它全部由Istio管理并由Sidecar自动修改的自定义标头,以允许处理流量的每个Sidecar在流量进入(请求)和离开(响应)时放置时间戳。这为您提供了一些有用的图片,显示了参与网络调用的容器之间的实际延迟。

最重要的是,您可以使用一些与OpenTracing兼容的lib来为应用程序的语言修改应用程序的代码,以包括更详细的方法级跟踪。基本上,除了Winston日志记录外,还添加了一些行,以便也包括代码执行管道的检查点。尽管您可以解析日志并通过数学和日志时间戳对其进行度量,但要实现opentracing已经为您提供的功能,仍然还有很多工作要做。

© www.soinside.com 2019 - 2024. All rights reserved.