列出来自匹配模式的 Stckdriver 的错误日志

List error logs from Stckdriver of matching pattern

我正在评估需要从 Stackdriver 获取日志列表的场景的方法。可以有多个过滤条件(例如,有效负载包含类型为 'Warning' 的日志的单词 'retry' ...)

在 gcp sdk 的帮助下,我能够查询 stackdriver,但不确定这种方法的效率如何。请建议我可以使用弹性搜索客户端查询 Stackdriver 并列出匹配日志的其他方法

您似乎有多组日志希望单独使用,并且每组日志都可以使用 Stackdriver 过滤器进行描述。这是一个好的开始,因为针对 Stackdriver 的 运行 过滤器是一种对数据进行排序的有效方法。你是对的,运行 一遍又一遍地针对 Stackdriver 使用相同的过滤器会非常低效。

以下方法使用 Stackdriver 日志接收器,这就是我们在 GCP 帐户上管理日志的方式。我们的监控团队对此非常满意,而且易于维护。

您可以阅读日志接收器 here and aggregated log sinks here

总体思路是让 Google 使用多个日志接收器(每个过滤器一个接收器)为您自动过滤和导出日志。导出目标可以是 Google Storage、BigQuery 或 Pub/Sub。每个接收器都应该导出到不同的位置,并且只要接收器存在就会持续这样做。此外,可以按项目或在组织级别(它可以继承下面的所有项目)设置日志接收器。

例如,假设您要设置三个日志接收器。每个接收器使用不同的过滤器和不同的导出位置(但都到同一个桶):

  • Log Sink 1(计算日志)-> gs://my-example-log-dump-bucket/compute-logs/
  • Log Sink 2(网络日志)-> gs://my-example-log-dump-bucket/network-logs/
  • 日志接收器 3(linux 日志)-> gs://my-example-log-dump-bucket/linux-logs/

设置完成后,您的代码的 SDK 就可以根据当前需要的日志访问每个位置。这消除了您的代码进行过滤的需要,因为 Google 已经在后台为您处理了它。

需要注意的一件事:日志导出到 BigQuery 和 Pub/Sub 是即时的,但导出到 Google 存储在每小时的顶部发生。因此,如果您需要快速处理日志,请避免使用 Google 存储并使用 BigQuery 或 Pub/Sub。

希望对您有所帮助!