Fur*_* S. 9 amazon-web-services cloudwatch amazon-cloudwatch amazon-cloudwatchlogs
我有两个带有多行日志语句的日志文件.它们在每个日志语句的开头都具有相同的日期时间格式.配置如下所示:
state_file = /var/lib/awslogs/agent-state
[/opt/logdir/log1.0]
datetime_format = %Y-%m-%d %H:%M:%S
file = /opt/logdir/log1.0
log_stream_name = /opt/logdir/logs/log1.0
initial_position = start_of_file
multi_line_start_pattern = {datetime_format}
log_group_name = my.log.group
[/opt/logdir/log2-console.log]
datetime_format = %Y-%m-%d %H:%M:%S
file = /opt/logdir/log2-console.log
log_stream_name = /opt/logdir/log2-console.log
initial_position = start_of_file
multi_line_start_pattern = {datetime_format}
log_group_name = my.log.group
Run Code Online (Sandbox Code Playgroud)
cloudwatch日志代理正在将log1.0日志正确发送到我在cloudwatch上的日志组,但是,它没有发送log2-console.log的日志文件.
awslogs.log说:
2016-11-15 08:11:41,308 - cwlogs.push.batch - WARNING - 3593 - Thread-4 - Skip event: {'timestamp': 1479196444000, 'start_position': 42330916L, 'end_position': 42331504L}, reason: timestamp is more than 2 hours in future.
2016-11-15 08:11:41,308 - cwlogs.push.batch - WARNING - 3593 - Thread-4 - Skip event: {'timestamp': 1479196451000, 'start_position': 42331504L, 'end_position': 42332092L}, reason: timestamp is more than 2 hours in future.
Run Code Online (Sandbox Code Playgroud)
虽然服务器时间是正确的.同样奇怪的是,start_position和end_position中提到的行号在推送的实际日志文件中不存在.
有其他人遇到过这个问题吗?
Bjö*_*ner 14
我能解决这个问题.
awslogs的状态被打破了.状态存储在/ var/awslogs/state/agent-state中的sqlite数据库中.你可以通过它访问它
sudo sqlite3 /var/awslogs/state/agent-state
Run Code Online (Sandbox Code Playgroud)
sudo需要具有写访问权限.
列出所有流
select * from stream_state;
Run Code Online (Sandbox Code Playgroud)
查找日志流并记下source_id,它是v列中json数据结构的一部分.
然后,在push_state表中列出所有带有此source_id的记录(在我的例子中,它是7675f84405fcb8fe5b6bb14eaa0c4bfd)
select * from push_state where k="7675f84405fcb8fe5b6bb14eaa0c4bfd";
Run Code Online (Sandbox Code Playgroud)
生成的记录在v列中有一个json数据结构,其中包含batch_timestamp.而这个batch_timestamp接缝错了.它已经过去,任何较新的(超过2小时)日志条目都不再处理.
解决方案是更新此记录.复制v列,将batch_timestamp替换为当前时间戳,并使用类似的更新
update push_state set v='... insert new value here ...' where k='7675f84405fcb8fe5b6bb14eaa0c4bfd';
Run Code Online (Sandbox Code Playgroud)
使用重新启动服务
sudo /etc/init.d/awslogs restart
Run Code Online (Sandbox Code Playgroud)
我希望这个对你有用!
小智 6
我们遇到了同样的问题,以下步骤解决了这个问题。
如果日志组没有使用最新事件更新:运行以下步骤:
将/var/awslogs/etc/awslogs.conf配置从 hostaname更新为实例 ID Ex:
log_stream_name = {hostname} to log_stream_name = {instance_id}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
7672 次 |
| 最近记录: |