一图胜千言
思路
Spring正常向本地输出日志文件,然后,通过amazon-cloudwatch-agent代理收集日志集中到CloudWatch中。并通过EC2实例ID进行区分。
步骤
添加托管策略:CloudWatchAgentServerPolicy
为EC2运行到角色添加托管CloudWatchAgentServerPolicy策略。类似如下:
安装amazon-cloudwatch-agent
sudo yum install amazon-cloudwatch-agent
创建配置文件amazon-cloudwatch-agent.json
为amazon-cloudwatch-agent创建配置文件,内容如下:
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/xxx/log/xxx.log",
"log_group_name": "xxx-xxx-spring-logging",
"log_stream_name": "xxx-xxx-spring-logging-{instance_id}.log",
"timestamp_format": "%Y-%m-%d %H:%M:%S.%f",
"multi_line_start_pattern": "{timestamp_format}"
}
]
}
}
}
}
部署配置文件
在进行文件上传之前,需要停止amazon-cloudwatch-agent服务,类似如下:
sudo systemctl stop amazon-cloudwatch-agent
接着使用,如下命令确定amazon-cloudwatch-agent状态:
sudo systemctl status amazon-cloudwatch-agent
然后,将上述配置文件上传到EC2的目录中即可,具体目录为:
/opt/aws/amazon-cloudwatch-agent/etc/
如果因为权限问题无法上传文件,则需要解开相关文件夹权限,类似如下:
sudo chmod 757 /opt/aws/amazon-cloudwatch-agent/etc/
上传完成后,需要恢复成原来的权限:
sudo chmod 755 /opt/aws/amazon-cloudwatch-agent/etc/
上传成功后,需要对上传的文件拥有者以及拥有组权限进行修改和调整,类似如下:
sudo chown root:root /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
重启amazon-cloudwatch-agent
sudo amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
确认重启状态:
sudo systemctl status amazon-cloudwatch-agent
验证CloudWatch日志组
从上图可知,CloudWatch收到Spring的日志了。
CloudWatch也可以向kibana那样进行简单的全文搜索了。
总结
这就是AWS CloudWatch集中日志方案了,如果进行简单的日志集中的话,不需要使用ELK或者EFK。