我已使用Cloud Watch Logs SDK将JSON格式的应用程序日志成功发送到Cloud Watch Logs,但是我不明白如何处理端点提供的约束。
问题1: Documentation说
如果您在狭窄的时间内使用两次调用PutLogEvents sequenceToken的值相同,两个调用都可能成功,或者一个可能 被拒绝。
现在“可能存在”一词的含义是什么,没有确定的结果吗?
问题2:
限制为每一批10,000 inputlogevent
,这不是很难在代码中合并,但也有大小限制,一批只能发送1 MB。这是否意味着每次我将inputlogevent
附加到logevent
收集/批次时都需要计算批次的大小?这是否意味着发送日志时需要同时检查inputlogevent
和size of overall batch
的数量?那不是很麻烦吗?
问题3
如果我inputlogevent
的第100个字符之一达到1 MB,该怎么办。然后,我不能简单地发送仅包含100个字符的不完整的最后一个日志,我就不得不将inputlogevent
从图片中删除,并作为其他批处理的一部分发送出去吗?
问题4
随着多个docker容器写入日志,序列令牌将不断变化,并且大量调用将失败,因为coz序列令牌将不断变化。
问题5:
在官方POC中,他们根本没有检查任何约束。为什么这样? PutBatchEvent POC
我在朝正确的方向思考吗?
答案 0 :(得分:0)
这是我对如何使用Cloudwatch日志的理解。希望这会有所帮助
问题1:由于分布式系统的性质,我认为无法保证,您的请求可以落在同一群集上并被拒绝,也可以落在不同群集上,而他们俩都可以接受
问题2和问题3:对我而言,日志事件应始终小而快速,并且放置得很快。大多数日志记录框架确实可以帮助您配置(AWS的批处理大小/文件记录的行数...)Take a look at these frameworks
问题4:您的每个容器(或任何并行应用程序单元)都应使用并维护自己的sequenceToken,并且每个容器都会获得单独的日志流