将多个项目的日志接收器指向一个存储桶

时间:2017-11-14 17:31:06

标签: google-cloud-platform

我有一些GCP项目,其中包含到不同存储桶的日志接收器。我想将它们组合成一个桶。但是stackdriver导出不会向它创建的对象名称添加任何区别信息;它们看起来都像cloudaudit.googleapis.com/activity/2017/11/14/00:00:00_00:59:59_S0.json

如果我开始将它们全部推到一个桶中会发生什么?不同的项目下沉是否会覆盖彼此的对象?有没有办法区分哪个项目只是从对象创建日志?

如果没有,我想我应该切换到pubsub接收器,然后编写一些产生具有更多所需名称的对象的代码。这样做是否有既定的模式或示例?

更新:我已就此问题提交了https://issuetracker.google.com/issues/69371200

2 个答案:

答案 0 :(得分:1)

要启用此功能,只需在接收器上选择custom destination,然后使用以下格式指向存储桶:storage.googleapis.com/[BUCKET_ID]

我刚刚在我的几个项目中启用了此功能,因为我很想在导出到存储桶时看到结果。但是,我一直在为我的所有项目使用单个BQ接收器,并且创建的表将所有日志混合在一起,因此使用单个BQ接收器时不会丢失任何日志。

我假设GCS接收器的工作方式相同,但我会在几天后告诉你。

如果单个水槽接收器不起作用,您可以随时使用单个BQ接收器(这将有助于分析日志),当您不再希望将它们放入BQ时,导出它们并将文件存储在任何地方想。

另外,既然你不断写入你的接收器,你就不能使用近线或冷线,所以storage pricing is better in BQ而不是regional bucket(BQ为0.02美元/ GB)区域存储的比例在0.02到0.35美元/ GB之间,具体取决于地区; BQ每月免费10GB,GCS 5GB)。

我一般建议使用BQ接收器,但我会告诉你我的存储桶日志会发生什么。

<强>更新

几个小时之后,我已经验证了共享桶式水槽的工作方式与您预期的相当。它按时间顺序连接日志,而不管项目的来源如何,并且只为每个时间窗口创建一个文件。希望这可以帮助! (我仍然更喜欢BQ作为日志接收器...)

更新2:

对于您在功能请求中寻找的行为,我会使用BQ,但您可以轻松地查看项目ID并分离日志:

grep '"logName":"projects/<your-project-id>/' mixed-log.json > single-project-log.json

或者只是获取由bucket updates触发的云功能(因此,每次在接收器中收到日志文件时)都可以为您运行此功能。

或者命名空间并使用云功能将它们移动到您需要的任何地方。

可能性无穷无尽!

答案 1 :(得分:0)

如果您有organizationfolder包含要从中收集日志的所有项目,则可以创建从该组织/文件夹中的所有项目收集的接收器。

不幸的是,您无法从云控制台执行此操作。相反,您必须将gcloud--organization--folder选项或API一起使用。

相关问题