使用Cloud Watch Logs SDK发送日志时如何添加和检查约束

时间:2019-08-01 05:51:36

标签: asp.net .net amazon-web-services amazon-cloudwatchlogs

我已使用Cloud Watch Logs SDK将JSON格式的应用程序日志成功发送到Cloud Watch Logs,但是我不明白如何处理端点提供的约束。

问题1: Documentation

  

如果您在狭窄的时间内使用两次调用PutLogEvents   sequenceToken的值相同,两个调用都可能成功,或者一个可能   被拒绝。

现在“可能存在”一词的含义是什么,没有确定的结果吗?

问题2:

限制为每一批10,000 inputlogevent,这不是很难在代码中合并,但也有大小限制,一批只能发送1 MB。这是否意味着每次我将inputlogevent附加到logevent收集/批次时都需要计算批次的大小?这是否意味着发送日志时需要同时检查inputlogeventsize of overall batch的数量?那不是很麻烦吗?

问题3

如果我inputlogevent的第100个字符之一达到1 MB,该怎么办。然后,我不能简单地发送仅包含100个字符的不完整的最后一个日志,我就不得不将inputlogevent从图片中删除,并作为其他批处理的一部分发送出去吗?

问题4

随着多个docker容器写入日志,序列令牌将不断变化,并且大量调用将失败,因为coz序列令牌将不断变化。

问题5:

在官方POC中,他们根本没有检查任何约束。为什么这样? PutBatchEvent POC

我在朝正确的方向思考吗?

1 个答案:

答案 0 :(得分:0)

这是我对如何使用Cloudwatch日志的理解。希望这会有所帮助

问题1:由于分布式系统的性质,我认为无法保证,您的请求可以落在同一群集上并被拒绝,也可以落在不同群集上,而他们俩都可以接受

问题2和问题3:对我而言,日志事件应始终小而快速,并且放置得很快。大多数日志记录框架确实可以帮助您配置(AWS的批处理大小/文件记录的行数...)Take a look at these frameworks

问题4:您的每个容器(或任何并行应用程序单元)都应使用并维护自己的sequenceToken,并且每个容器都会获得单独的日志流