在我深入探讨这个问题之前,有人尝试过吗?这很疯狂吗?
假设我想将日志文件放入 Amazon S3。但是 S3 无法在不先读取对象、然后附加、然后写回的情况下附加到现有对象,因此在日志文件中写入每一行新内容的成本越来越高。
我可以这样做吗?每次我添加新行时,只需将该行写为 s3 对象的全部内容。启用版本后,每个版本将是日志文件的一行,我可以通过检索所有版本来检索整个日志文件。如果每个日志文件都有数十亿行,那么这可能很糟糕,但就我而言,它更像是几千行。
这可行吗?有什么理由不这么做吗?
答案1
你“可以”,但这并不一定是一个好主意。
替换大型对象并不比创建一个小型新版本更昂贵——价格是相同的,这使得成本基本相同,因为在区域内 S3 和 EC2 之间的数据传输不收费。
logrotate
每次旋转时将旧日志移入 s3可能会更好。
根据日志量,收集日志的更类似云的方式可能是 SQS 或 Kinesis。