-
[AWS] CloudWatch Agent가 /root 경로에 있는 로그를 수집하는 방법dev-ops/aws 2025. 3. 20. 19:51
- ubuntu EC2
- EC2 인스턴스는 CloudWatchAgentServerPolicy 역할을 부여받은 상태
- /root/.. 경로에 저장되는 로그를 수집하고자 함CloudWatch Agent가 실행될 때 수행할 작업은 /opt/aws/amazon-cloudwatch-agent/bin/config.json에 저장된다.
{ "agent": { "metrics_collection_interval": 60, "run_as_user": "cwagent" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/root/...생략/server.log", "log_group_name": "shared-contacts/prod/server-logs", "log_stream_name": "{instance_id}-deploy" } ] } } }, "metrics": { "namespace": "EC2/PerformanceMetrics", "append_dimensions": { "AutoScalingGroupName": "${aws:AutoScalingGroupName}" }, "metrics_collected": { "mem": { "measurement": [ "mem_used_percent" ], "metrics_collection_interval": 60 } } } }
위 설정 파일을 바탕으로 CloudWatch Agent를 실행하면 정상적으로 실행이 되는데, Metric 값은 수집하는 것과 달리 로그 데이터를 수집하지 않는 문제가 발생한다.
이 문제가 발생한 이유는 /root 경로에 접근하기 위해서는 root 사용자 권한을 가지고 있어야 한다. 그러나 위 설정 파일을 보면 run_as_user가 cwagent로 되어있기에 /root 경로에 접근하지 못해 로그를 수집하고 못했던 것이다.
따라서 run_as_user를 cwagent에서 root로 수정하면 된다.
{ "agent": { "metrics_collection_interval": 60, "run_as_user": "root" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/root/...생략/server.log", "log_group_name": "shared-contacts/prod/server-logs", "log_stream_name": "{instance_id}-deploy" } ] } } }, "metrics": { "namespace": "EC2/PerformanceMetrics", "append_dimensions": { "AutoScalingGroupName": "${aws:AutoScalingGroupName}" }, "metrics_collected": { "mem": { "measurement": [ "mem_used_percent" ], "metrics_collection_interval": 60 } } } }