对于需要从Stackdriver获取日志列表的场景,我正在评估各种方法。可以有多个筛选条件(例如,有效负载包含类型为“Warning”的日志的单词“retry”...)
有了help gcp sdk,我能够查询stackdriver,但不确定这种方法的效率。请推荐其他方法,我可以使用elastic search client查询stackdriver并列出匹配的日志
发布于 2019-06-04 03:15:42
看起来您有多个日志集希望单独使用,每个日志集都可以使用Stackdriver筛选器进行描述。这是一个很好的开始,因为对Stackdriver运行筛选器是对数据进行排序的有效方法。你是对的,一遍又一遍地对Stackdriver运行相同的过滤器是非常低效的。
以下方法使用Stackdriver日志接收器,这是我们在GCP帐户上管理日志的方式。我们的监控团队对它非常满意,而且很容易维护。
一般的想法是让Google使用多个日志接收器自动过滤和导出日志(每个过滤器一个接收器)。导出目标可以是Google Storage、BigQuery或发布/订阅。每个接收器都应该导出到不同的位置,并且只要接收器存在,就会一直这样做。此外,可以为每个项目设置日志接收器,也可以在组织级别设置日志接收器(它可以继承下面的所有项目)。
例如,假设您想要设置三个日志接收器。每个接收器使用不同的过滤器和不同的导出位置(但都在同一个存储桶中):
gs://my-example-log-dump-bucket/network-logs/
一旦设置完成,您的代码SDK就可以根据当前需要的日志访问每个位置。这消除了您的代码进行过滤的需要,因为Google已经在后台为您处理了。
需要注意的一点是:到BigQuery和发布/订阅的日志导出是即时的,但是到Google Storage的导出是在每小时的顶部发生的。因此,如果你需要一个快速周转的日志,避免谷歌存储,并使用BigQuery或发布/订阅。
希望这能有所帮助!
https://stackoverflow.com/questions/56320400
复制相似问题