我正在尝试向CloudWatch发送两个日志。
这是两个日志:
我使用amazon-cloudwatch-agent-config-wizard创建了配置文件,下面是该文件的片段,显示了正确的文件路径:
"collect_list": [
{
"file_path": "/var/log/apache2/access.log",
"log_group_name": "*group_name*",
"log_stream_name": "apache-access"
},
{
"file_path": "/var/log/apache2/error.log",
"log_group_name": "group-name*",
"log_stream_name": "apache-error"
}
]
我在配置中加载了:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
并且没有遇到任何错误,也没有错误并显示在amazon-cloudwatch-agent.log中。
检查Amazon CloudWatch Agent的状态表明它正在运行并且没有错误。还指出该架构有效。
所有这一切的独特之处在于,我删除了旧的CloudWatch代理并安装了新的。我已经在两个EC2实例上完成了此操作,其中一个实例一切运行正常,另一个实例未将日志发送到CloudWatch。
简而言之,为什么日志不上CloudWatch?我该怎么做才能解决此问题?
任何帮助将不胜感激。
答案 0 :(得分:0)
检查
CloudWatch Agent日志-{
"type" : "struct",
"fields" : [ {
"name" : "date_generated",
"type" : "string",
"nullable" : true,
"metadata" : {}
}, {
"name" : "time_generated",
"type" : "string",
"nullable" : true,
"metadata" : {}
}
]
}
。
在这两个文件中,您都应该看到一些类似于-/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
的行。
代理toml文件,以确保配置了两个文件路径,并检查了该区域-
Reading from /var/log/apache2/access.log
。
答案 1 :(得分:0)
因此,该问题原来是基于权限的。 CloudWatch配置向导默认使用cwagent作为运行CloudWatch的用户,官方指南中也重申了这一点。
更改运行用户使用root可以解决该问题,即使在尝试运行该文件时,所有相关文件都具有777权限。
您编辑的配置文件为:
sudo nano /opt/aws/amazon-cloudwatch-agent/bin/config.json
在文件顶部,您将看到:
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "cwagent"
},
您需要将run_as_user更改为root,例如:
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
更改后,您只需重新加载配置文件:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
然后重新启动服务:
sudo systemctl restart amazon-cloudwatch-agent.service
然后您应该看到日志进入CloudWatch。期待一些回填。