CloudWatch agent란?
클라우드워치 에이전트란 AWS에서 제공하는 리소스 모니터링, 관찰 서비스인 클라우드워치에 리소스 내부에서 나온 지표, 데이터를 수집할 수 있게 해주는 것입니다. 본 글에서는 EC2에 설치하여 아파치 웹 서버의 로그를 남겨보도록 하겠습니다.
설치하기
로그를 클라우드워치로 수집할 CloudWatch agent를 아래 명령어를 통해 설치해줍니다.
sudo yum -y install amazon-cloudwatch-agent
그리고 로그를 만들 웹 서버인 아파치를 아래 명령어를 통해 설치해줍니다.
sudo yum -y install httpd
아파치 엑세스 로그 남기기
로그를 남길 트래픽을 받기 위해 아래 명령어를 통해 아파치를 실행시킵니다.
sudo systemctl start httpd
그리고 편하게 지속적으로 로그를 남겨주기 위해 아래와 같이 testlog.sh를 만들어줍니다.
testlog.sh
#!/bin/bash
while :
do
curl http://localhost
sleep 1
done
그리고 아래 명령어를 통해 지속적으로 백그라운드에서 실행시킨다, 그러면 /var/log/httpd/access_log에 지속적으로 로그가 남고 있을 것입니다.
nohup sh testlog.sh 1> /dev/null 2>&1 &
만약 이를 종료하고 싶다면 testlog.sh가 있는 디렉터리에서 아래 명령어를 실행하면 됩니다.
sudo pkill -f testlog.sh
IAM Role 만들기
클라우드워치에 권한을 남기기 위한 권한을 주기 위한 role을 생성해 주어야 합니다.
아래와 같이 IAM -> roles로 들어가 Create role을 클릭해줍니다.
그리고 아래 그림처럼 Use case에서 EC2에 체크하고 Next를 눌러줍니다.
role에서 CloudWatchAgentServerPolicy를 찾아 넣어주고, 이름을 지정해줍니다.
아래 그림처럼 실행 중인 EC2에 IAM role을 넣어줄 수 있도록 Modify IAM role을 클릭하고 아까 만들어준 role을 선택해줍니다.
CloudWatch agent 설정하기
설정을 진행하기 전, EC2에서 아래와 같이 aws configure을 입력해 Default region name을 사용 중인 리전으로 바꿔줍니다.
클라우드 워치 에이전트는 수동으로 설정하는 방법과, amazon-cloudwatch-agent-config-wizard를 통하여 설정하는 방법이 있는데, 본 글에서는 후자를 선택할 것입니다.
아래 명령어를통해 amazon-cloudwatch-agent-config-wizard를 실행해줍니다.
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
그러면 아래와 같은 화면이 나올 것입니다.
테스트기 때문에 전부 엔터를 눌러 기본값으로 진행하다 보면 아래와 같은 화면이 나올 것입니다.
그러면 access_log가 있는 /var/log/httpd/access_log를 입력해줍니다. 그리고 세 번 정도 진행하다 보면 아래와 같은 화면이 나올 것인데. 추가로 모니터링할 파일이 있는지 물어보는 것이니 2를 입력해 살포시 무시해줍시다.
진행하다 보면 아래와 같은 메시지가 나올 텐데, 위에서 만들어준 IAM role의 이름을 넣어줍니다.
What parameter store name do you want to use to store your config? (Use 'AmazonCloudWatch-' prefix if you use our managed AWS policy)
default choice: [AmazonCloudWatch-linux]
계속 엔터를 눌러 진행해주다가 전부 완료되면 /opt/aws/amazon-cloudwatch-agent/bin/config.json이란 파일이 생성될 것이다 그러면 아래 명령어를 통해 클라우드워치 에이전트를 실행해줍니다.
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
확인하기
AWS 콘솔창 에서 cloudwatch -> Log groups로 들어가 access_log라는 로그 그룹으로 들어가 i_인스턴스 아이디로 되어있는 로그 스트림을 눌러보면 아래와 같이 로그가 떠있는 모습을 볼 수 있습니다.
참고로 클라우드워치 에이전트를 사용하여 EC2 내부의 데이터를 보낼 때는 보안 그룹의 아웃바운드가 0.0.0.0/0 이 열려있어야 합니다.