Google Stackdriver-如何在一个视图中显示多个容器的日志?

问题描述

我目前正在使用Google Stackdriver(新版式!)来调查我的日志记录。在我的情况下,相互之间有三种服务进行通信。我希望以最方便的方式以INFO日志的形式查看它们之间的通信。

FooService > BarService > SnickerService

状态现状

当前,我只能看到其中一项服务的日志。因此,我开始打开三个浏览器选项卡,并打开所有提到的三个服务日志。现在,我找出FooService开始调用BarService的时间戳/范围。 我将这个时间范围应用于其他两个服务。 这样一来,我就可以大致了解流程如何在这些服务之间分配。

这种方法每次都很难设置

这使我想到一个问题,是否可以将三个容器的日志记录带入一个Stackdriver视图?

在日志查询中,我看到此字段(例如FooService)

resource.labels.pod_name="fooservice-bd4c9bf4d-nv4k2"

问题

  • 这里是否可以进行AND操作?
  • 是否还有一种“搜索”豆荚的方法?此刻,我始终必须深入研究工作负载并挖掘pod的ID(上面的示例:bd4c9bf4d-nv4k2),以便可以在查询中使用它。这样,我只需在Google Cloud Console中单击View Logs就能更快。因此,恕我直言,这不是快速方法

解决方法

您可以使用2个运算符

  • :是包含运算符
  • ()是组操作员

使用:您可以搜索部分名称。使用此resource.labels.pod_name: "fooservice"与所有 fooservice 吊舱名称匹配。

使用(),您可以将值或比较进行分组,例如(“ foo”或“ bar”)

如果全部放在一起

resource.labels.pod_name: ("fooservice" OR "barservice")

->此过滤器使您可以过滤包含值“ fooservice”或“ barservice”的pod_name