amazon-web-services - CloudWatch 日志事件中的事件时间错误

标签 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 参数,而忘记我认为服务正在使用的配置。

最佳答案

将日志记录添加到/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/

相关文章:

amazon-web-services - NVidia 驱动程序停止在使用 Ubuntu 16.04 和 Tesla K80 GPU 的 AWS EC2 实例上工作

node.js - 如何使用node js合并两个json的数据

amazon-web-services - 添加星期几时,AWS SAM 参数 ScheduleExpression 无效

python - 在另一个区域调用 Lambda 并在调用的区域进行更改

amazon-web-services - 如何使用 Elastic Beanstalk CLI 更改 AWS 账户

logging - 限制kubernetes中的日志

java - PropertyConfigurator.configure 不适用于 spring

php - 使用 monolog 将日志从 php 应用程序发送到 graylog

amazon-web-services - AWS Cloudwatch 在动态标签上触发 Codepipeline

docker - 如何将应用程序日志从Docker发送到CloudWatch