如何在不丢失日志条目的情况下使用 HTTP 跟踪 GCP 日志?

How can I tail the GCP logs with HTTP without missing log entries?

提问人:zino 提问时间:7/25/2023 更新时间:7/25/2023 访问量:100

问:

我正在编写一个 CLI 来跟踪 GCP 日志。

我正在使用HTTP GET方法读取此处的日志:https://cloud.google.com/logging/docs/reference/v2/rest/v2/entries/list

问题:缺少日志条目。

当使用分页(使用 pageToken 和 nextPageToken)并不断轮询最后一页时,我可以获得最新的记录。当日志写入速率较低时,这很好。

但是,当日志写入速率较高时,使用此轮询技术会丢失日志条目。

如果我查询相同的时间段但在过去,则会显示那些丢失的日志条目。

似乎在一定的日志写入速率下,GCP 日志记录服务器会从分页页面中遗漏一些日志条目,似乎跳过它们,并且永远不会再次将它们包含在同一系列分页页面中。

这是一个问题,因为我可能正在轮询特定的日志查询,但结果集不完整,因为时间前沿的日志条目随机丢失。

:在以高速率写入日志时,轮询此端点而不会丢失日志完整性的正确方法是什么?

google-cloud-platform 堆栈驱动程序 google-cloud-logging

评论

1赞 John Hanley 7/25/2023
IIRC 日志是异步发布的,这意味着轮询应用程序可能无法在当前轮询时看到所有日志。在结算期过后,应该有缺失的日志条目。编辑您的帖子并包含演示您的问题的代码。
0赞 zino 7/25/2023
@JohnHanley 谢谢,你知道结算期有多长吗?代码很长,也需要包括并发编写器。但正如所描述的那样 - 使用分页轮询 HTTP GET 端点会错过同时写入的日志条目。pageToken
1赞 John Hanley 7/25/2023
对不起,我不记得确切的细节,也没有文件参考。这是与 StackDriver 团队的一位 Google 工程师的对话。
1赞 Srividya 7/27/2023
您可以配置 Logsink以存储日志,并使用过滤器根据需要显示日志。确保至少有一个接收器用于导出项目中可用的日志条目的副本。当 Cloud Logging 服务收到日志条目时,系统会将其与每个接收器进行比较。如果日志条目与接收器对象查询匹配,则日志条目的副本将写入接收器的导出目标。您可以使用日志接收器在 Cloud Logging 之外导出日志副本。
0赞 Srividya 8/3/2023
@zino,您是否尝试过配置日志接收器。请让我知道共享信息是否有帮助。如果您有任何进一步的疑问,我很乐意为您提供帮助。

答: 暂无答案