AWS Cloudwatch Agent 未接收更改

AWS Cloudwatch Agent 未接收更改

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

/var/log/otherserver/access.log是从无法安装代理的另一台服务器定期 rsync 的日志文件。命令如下:

rsync -av user@host:/var/log/access.log /var/log/otherserver/access.log

经纪人肯定读取它,因为它在重新启动后读取了更改。

配置文件中条目的位置似乎并不重要。

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'.

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

[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

有谁有任何知道这是怎么回事吗?或者可以推荐一种不那么……古怪的替代药物吗?

答案1

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

  • 选项1:为您的配置块头使用一个新名称。
    • 也就是[website.access.log]改为[something.else]
  • 选项 2:停止服务后删除代理状态文件。

    sudo service awslogs stop
    sudo rm /var/lib/awslogs/agent-state
    sudo service awslogs start
    

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

相关内容