ABOUT ME

heemang.site

Today
Yesterday
Total
  • [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
    			}
    		}
    	}
    }
Designed by Tistory.