본문 바로가기

Log Aggregation/CloudWatch or S3

2. EC2 Linux Command Log 수집 - CW Agent

CloudWatchAgentServerPolicy를 가진 Role을 EC2에 준 후,

Cloudwatch Agent를 설치하고 어떠한 로그를 수집할지 정한 후 Agent를 실행시켜주면 됩니다.

 

하지만 Amazon Linux2에서는 세팅이 안 되기 때문에, CWAgent를 통해 수집해야합니다.

기본적으로 CWAgent 설치 및 세팅까지의 과정은 CWAgent Metric 수집과 동일합니다.

또한, CMD로그 세팅은 이전 CloudWatch Logs Agent글을 참고해주세요.

 

이 과정을 하나씩 진행해보도록 하겠습니다.

먼저, IAM에서  CloudWatchAgentServerPolicy을 가진 Role을 구성해보도록 하겠습니다.

사용 서비스는 EC2를 선택해주시고 다음으로 넘어가주시면 됩니다.

 

 

그 다음에는 CloudWatchAgentServerPolicy를 검색해서 선택하고 적당한 이름을 줘서 생성해주시면 됩니다.

 

 

해당 롤을 인스턴스에 연결시켜주도록 하겠습니다.

 

 

만약 OutBound에 대해서 제어를 하고 계시다면 443포트로 모든 대역을 열어주셔야 합니다.

 

이제 Agent를 설치해보도록 하겠습니다.

wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm

 

 

위의 설치 파일이 받아지면 아래명령어를 통해 설치해주도록 하겠습니다.

sudo rpm -U ./amazon-cloudwatch-agent.rpm

 

 

이제 어떤 메트릭을 수집할지를 정해주기 위해 config file을 작성하도록 하겠습니다.

로그 수집 예시 파일에 대한 설명은 아래 공식 다큐를 참조하시면 좋습니다.

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-common-scenarios.html

 

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-common-scenarios.html

CloudWatch 에이전트를 사용하는 일반적인 시나리오

docs.aws.amazon.com

 

아래와 같은 세팅 파일을 logs.json으로 /opt/aws/amazon-cloudwatch-agent/bin/ 경로에 만들어 주겠습니다.

{
	"logs": {
		"logs_collected": {
			"files": {
				"collect_list": [
					{
						"file_path": "/var/log/cmdlog.log",
						"log_group_name": "cb-test-api"
					}
				]
			}
		}
	}
}

 

구성이 끝났다면 아래 명령어로 실행하고, 상태를 체크해볼 수 있습니다.

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/logs.json -s
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

 

 

이후 Cloudwatch Logs에서 정상적으로 로그가 수집되는 것을 보실 수 있습니다.