CloudWatch日志事件中的事件时间错误

时间:2017-01-05 10:33:11

标签: amazon-web-services logging amazon-cloudwatch cloudwatch amazon-cloudwatchlogs

搜索后找到解决方案,但如果有人碰巧遇到类似的混乱,请留在此处。最后请参阅决议。

我试图弄清楚为什么AWS CloudWatch日志服务无法理解我的日志事件的正确时间戳。目前,无论事件的实际时间戳是什么,我的所有活动都将在2017-01-01时间内保存。

我正在从syslog中提供日志,其中docker正在保存已记录的事件,我配置了docker以将格式设置为时间戳:

170105/103242 (%y%m%d/%H%M%S)

我使用参数配置了awslogs服务:

datetime_format = %y%m%d/%H%M%S

我重新启动了服务并点击了服务器,但是当我转到CloudWatch并查看日志条目时,即使以时间戳170105/103242开头的条目实际上也会保存为属于包含日期2017-01-01的事件01-01和01-05之间的所有事件

当我查看awslogs.log时,我可以看到以下几行:

2017-01-05 11:05:28,633 - cwlogs.push - INFO - 29223 - MainThread - Missing or invalid value for use_gzip_http_content_encoding config. Defaulting to using gzip encoding.
2017-01-05 11:05:28,633 - cwlogs.push - INFO - 29223 - MainThread - Using default logging configuration.

这让我觉得配置可能实际上并没有读取/使用datetime_format,但我不明白它为什么决定最终使用默认值。我试着把

use_gzip_http_content_encoding = true

在常规设置下,但不会更改错误。

我的想法已经用完 - 有没有人设法以实际正确使用datetime_format的方式配置awslogger?

编辑:

我正在攻击更多的控制台日志到本地python2.7 push.py以查看发生了什么:)

解决:

好的,问题是我在创建初始设置后进入了这个项目,我觉得记录器配置为在位置使用.conf文件:

 /etc/awslogs/awslogs.conf 

动态填充。

环境中有一个脚本将此位置提供给awslogs-agent-setup.py,该脚本试图让代理了解应该从这里读取配置。

然而,这个脚本实际上没有做它应该做的事情,当服务启动时,它实际上是从

读取配置
/var/awslogs/etc/awslogs.conf

其中包含默认值。

所以实际的解决方案是更改默认配置中的datetime_format参数,忘记我认为该服务正在使用的配置。

1 个答案:

答案 0 :(得分:0)

将日志记录添加到/var/awslogs/lib/python2.7/site-packages/cwlogs/push.py,并查看如何解释实际的配置参数。

您可能会发现该服务实际上是在默认位置使用配置文件:

/var/awslogs/etc/awslogs.conf

因此你必须在那里编辑配置值,以便实际读取它们。