搜索后找到了解决方案,但如果有人碰巧遇到类似的困惑,请将其留在这里。最后看解析。
我想弄清楚为什么 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 参数,而忘记我认为服务正在使用的配置。
最佳答案
将日志记录添加到/var/awslogs/lib/python2.7/site-packages/cwlogs/push.py 并查看如何解释实际配置参数。
您可能会发现该服务实际上在默认位置使用配置文件:
/var/awslogs/etc/awslogs.conf
因此您必须在那里编辑配置值才能实际读取它们。
关于amazon-web-services - CloudWatch 日志事件中的事件时间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41482676/