亚马逊云监控日志代理忽略日志行的第一个字符。

3
如果我向我的日志文件中添加一批包含n个测试记录的内容,那么awslogs代理会错误地忽略我添加的这一批行的第一行的第一个字符。这是可以完全重现的。因此,如果我使用vi工具来追加以下测试日志行:
2017-06-16 15:20:01,123 this line will not get correctly parsed. first character in date string will be skipped.
2017-06-16 15:21:23,456 this will get parsed. 1
2017-06-16 15:22:23,456 this will get parsed. 2
2017-06-16 15:23:23,456 this will get parsed. 3
2017-06-16 15:24:23,456 this will get parsed. 4
2017-06-16 15:25:23,456 this will get parsed. 5
2017-06-16 15:26:23,456 this will get parsed. 6
2017-06-16 15:27:23,456 this will get parsed. 7

第一行中的前导数字2被日志代理忽略。在CloudWatch Logs Web控制台中,事件将显示为017-06-16 15:20:01,123 this line will...,日期时间字符串无法成功解析,并且日志事件必须使用先前日志的时间戳。

通常情况下,我逐个将日志事件添加到文件中时,每行的第一个字母会被忽略,时间戳字符串也无法正确解析。如果在按:w保存之前在vi中附加多行,则只有第一行会遇到此问题,并且批处理中的其他行会正确摄取。

我使用touch创建了日志文件(作为测试),并仅使用vi手动添加了行,因此我认为这不是文件编码问题。

我使用的是大部分标准的默认配置。

我的CloudWatch Agent配置文件:

[general]
state_file = /var/awslogs/state/agent-state

[/var/log/myapp/app.log]
file = /var/log/myapp/app.log
log_group_name = MyAppLogGroup
log_stream_name = MyAppLogStream
datetime_format=%Y-%m-%d %H:%M:%S,%f

我从 https://s3.amazonaws.com//aws-cloudwatch/downloads/latest/awslogs-agent-setup.py 下载了最新的设置脚本。

然后运行 sudo ./awslogs-agent-setup.py -n -r us-west-2 -c cloudwatch_logs.config

1个回答

1
请设置

标签。

initial_position = start_of_file

如果在您的配置文件中明确设置了该选项,您是否会得到相同的行为?


尝试过了。重新运行了awslogs-agent-setup.py,验证了新的配置设置在/var/awslogs/etc/awslogs.conf中,重启了awslogs服务,添加了一批新的测试记录,但没有帮助。行为没有任何改变。 - clay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接