Cloudwatch 日志 - 时间过去后没有事件数据
Cloudwatch logs - No Event Data after time elapses
我查看了 AWS forums 和其他地方,但没有找到解决方案。我有一个 lambda 函数,当它被调用时,它会创建一个用日志事件填充的日志流。大约 12 小时后,日志流仍然存在,但当我打开它时,我看到以下内容:
link说明了如何开始发送事件数据,但我已经设置好了,我正在发送事件数据,它只是在一定时间后消失。
我猜某处有一些设置(允许的最大存储或是否清除日志),但如果有的话,我还没有找到它。
TL;DR:只需使用 CLI。请参阅下面的更新 2。
这真的很奇怪,但我可以复制它...
我取消选中“在此之后过期事件”框,你瞧,我能够打开较旧的日志流。看起来很奇怪的是,如果我选择显示“存储的字节”数据,许多文件即使有日志事件也会以 0 字节列出:
更新 1:
此解决方案不再有效,因为我只能查看前两个日志流中的日志事件。更重要的是,Stored Bytes 列显示不同(且更准确)的数据:
这让我相信 AWS 进行了某种更新。
更新 2:
只需使用 CLI。我已验证我可以从 CLI 检索我无法通过 Web 控制台检索的日志事件。
首先安装 CLI(如果尚未安装)并使用以下命令:
aws logs get-log-events --log-group-name NAME-OF-LOGGROUP --log-stream-name LOG-STREAM-NAME // be sure to escape special characters such as /, [, $ etc
日志流中丢失数据的另一个原因可能是代理状态文件损坏。首先检查你的日志
vim /var/log/awslogs.log
如果您发现类似 "Caught exception: An error occurred (InvalidSequenceTokenException) when calling the PutLogEvents operation: The given sequenceToken is invalid. The next expected sequenceToken is:" 的内容,您可以按如下方式重新生成代理状态文件:
sudo rm /var/lib/awslogs/agent-state
sudo service awslogs stop
sudo service awslogs start
我查看了 AWS forums 和其他地方,但没有找到解决方案。我有一个 lambda 函数,当它被调用时,它会创建一个用日志事件填充的日志流。大约 12 小时后,日志流仍然存在,但当我打开它时,我看到以下内容:
link说明了如何开始发送事件数据,但我已经设置好了,我正在发送事件数据,它只是在一定时间后消失。
我猜某处有一些设置(允许的最大存储或是否清除日志),但如果有的话,我还没有找到它。
TL;DR:只需使用 CLI。请参阅下面的更新 2。
这真的很奇怪,但我可以复制它...
我取消选中“在此之后过期事件”框,你瞧,我能够打开较旧的日志流。看起来很奇怪的是,如果我选择显示“存储的字节”数据,许多文件即使有日志事件也会以 0 字节列出:
更新 1:
此解决方案不再有效,因为我只能查看前两个日志流中的日志事件。更重要的是,Stored Bytes 列显示不同(且更准确)的数据:
这让我相信 AWS 进行了某种更新。
更新 2:
只需使用 CLI。我已验证我可以从 CLI 检索我无法通过 Web 控制台检索的日志事件。
首先安装 CLI(如果尚未安装)并使用以下命令:
aws logs get-log-events --log-group-name NAME-OF-LOGGROUP --log-stream-name LOG-STREAM-NAME // be sure to escape special characters such as /, [, $ etc
日志流中丢失数据的另一个原因可能是代理状态文件损坏。首先检查你的日志
vim /var/log/awslogs.log
如果您发现类似 "Caught exception: An error occurred (InvalidSequenceTokenException) when calling the PutLogEvents operation: The given sequenceToken is invalid. The next expected sequenceToken is:" 的内容,您可以按如下方式重新生成代理状态文件:
sudo rm /var/lib/awslogs/agent-state
sudo service awslogs stop
sudo service awslogs start