AWS Cloudwatch 代理未获取更改

lsh*_*lsh 5 logging amazon-web-services centralized-logging

我难住了。我有两个由 AWS CloudWatch 代理监视的日志文件。第一个,/var/log/nginx/access.log,工作得很好。第二个,/var/log/otherserver/access.log,没有任何变化。最终不会,除非我重新启动代理,然后它会获取更改并将它们按预期发送到 CloudWatch。

/var/log/otherserver/access.log是从另一台无法安装代理的服务器定期同步的日志文件。命令看起来像:

rsync -av user@host:/var/log/access.log /var/log/otherserver/access.log
Run Code Online (Sandbox Code Playgroud)

代理肯定可以读取它,因为它会在重新启动后读取更改。

配置文件中条目的位置似乎无关紧要。

rsync 日志文件的日志条目中的日期与服务器相同(一切都是 UTC)。

如果我移动日志文件,代理开始抱怨:

2015-12-14 16:02:26,158 - cwlogs.push.stream - WARNING - 3344 - Thread-1 - No file is found with given path '/var/log/otherserver/access.log'.
Run Code Online (Sandbox Code Playgroud)

第二个日志文件的配置几乎与第一个(如下)相同。

[website.access.log]
#datetime_format = 09/Dec/2015:14:15:02 +0000
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/otherserver/access.log
log_stream_name = master-platform.sh
initial_position = start_of_file
log_group_name = web-access

[app.access.log]
#datetime_format = 09/Dec/2015:14:15:02 +0000
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/nginx/lax.access.log
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = web-access
Run Code Online (Sandbox Code Playgroud)

有没有人有任何线索,这到底是怎么回事呢?或者可以建议一个不那么......诡异的替代代理?

ADT*_*DTC 1

您的代理状态文件可能已损坏,因为您不断更改配置。有两种方法可以解决此问题:

  • 选项 1:为配置块标头使用新名称。
    • 即更改[website.access.log][something.else].
  • 选项 2:停止服务后删除代理状态文件。

    sudo service awslogs stop
    sudo rm /var/lib/awslogs/agent-state
    sudo service awslogs start
    
    Run Code Online (Sandbox Code Playgroud)

请注意,选项 2 最初可能会导致在创建新状态文件时将重复日志推送到 CloudWatch。