如何跨多个Web应用程序,多个微服务跟踪会话

时间:2019-01-20 06:43:02

标签: session logging kubernetes containers microservices

我想跟踪多个Web应用程序,多个微服务之间的会话。我所有的Web应用程序都是静态文件,微服务在带有Kubernetes的nodejs容器下运行。

我在单独的Web应用程序和单独的微服务之间具有跟踪设置。但是,合并和在单个视图中查看所有内容太麻烦了。

有没有办法在单个会话中查看所有这些对象?

2 个答案:

答案 0 :(得分:2)

Kubernetes本身不支持任何请求跟踪,但是您可以将 Istio 与具有Distributed Tracing功能的Kubernetes一起使用。

简而言之,您的应用程序将需要重新发送附加的标头,Istio将对其进行检测,从所有服务中收集信息并向您显示请求跟踪。

它还支持Mesh,因此从理论上讲,您的应用程序可以更快,更安全地工作(由于网络规则)。

您可以阅读有关Istio here的信息,有关跟踪herehere的内容是有关如何在Kubernetes中进行设置的说明。

答案 1 :(得分:0)

您可以使用特殊的标头跨不同的微服务(应用程序)跟踪HTTP请求,以将所有后续请求与原始请求相关联。

例如,您的网络应用将HTTP请求(REST API调用)发送到第一个微服务(A),该微服务发现该请求没有相关ID(x-correlationid标头)并将其添加,然后保存该相关信息id到当前的调用/会话上下文中,并将其转发给其他微服务的所有后续API调用。然后,当所有其他微服务都遵循相同的逻辑时,它们还将添加/使用相关性ID,您将能够跟踪系统中所有微服务的请求。

许多APM(应用程序性能监视)工具都使用此模式。并且将所有日志汇总到一个位置后,您就可以按某个相关ID过滤查询,以查看特定用户请求/操作的完整记录。