본문 바로가기

⭐ AWS/CloudWatch

CloudWatch Agent를 통한 인스턴스 로그 수집

1. 로그를 수집할 대상의 인스턴스에 SSH로 접속을 합니다. (SSH 접속이 가능한지 테스트)

2. Cloud Agent를 이용하여 사용량을 조회

일단 CPU 사용량이나 네트워크 전송량 등은 CloudWatch에서 기본적으로 제공해주지만, 메모리와 디스크 사용량은 제공해주지 않습니다. 이를 지표로 보기 위해서는 다음과 같은 작업이 필요합니다.

3. 인스턴스에 IAM 역할을 추가해주어야 합니다.

IAM 서비스에서 역할 만들기를 선택한 후, EC2에 서비스 역할을 지정할 것이므로 EC2를 선택합니다.

4. 정책 중 CloudWatchAgentServerPolicy를 검색 후 선택하고, 역할을 생성해줍니다.

5. 인스턴스로 들어가여 IAM 역할을 바꾸어줍니다.

6. 위의 작업을 설정한 인스턴스로 SSH 접속을 해줍니다.

7. CloudWatchAgent를 설치하기 위해 폴더를 이동 후, 스크립트 묶음을 내려받습니다.

cd /var/www/
wget https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip

8. 압축해제 후 > 설치 스크립트를 실행해줍니다.

unzip AmazonCloudWatchAgent.zip -d AmazonCloudWatchAgent

rm AmazonCloudWatchAgent.zip

cd AmazonCloudWatchAgent

sudo ./install.sh

9. 설치 완료된 화면

10. 설치 마법사를 실행합니다.

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

11. 아래와 같은 화면이 나온다. 엔터를 입력하면 디폴트 값으로 입력된다. 아래의 설정을 완료하자.

- 만약 설정 중 아래와 같은 오류가 발생한다면 aws-configure를 통해 계정에 대한 Credencial 설정을 다시 진행해야 한다.

An error occurred (AccessDeniedException) when calling the StartSession operation: User: arn:aws:iam::<AWS Account>:user/<IAM User> is not authorized to perform: ssm:StartSession on resource: arn:aws:ec2:<region>:<AWS Account>:instance/<EC2 인스턴스 ID>

- 그리고 설정 마지막에 Credencial 값이 다르다고 나오는 경우에는 others를 선택하여 자신의 계정의 Credencial 값을 입력해 주어야 한다.

12. CloudWatchAgent를 실행해줍니다.

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

13. 실행을 하면 아래와 같이 에러가 발생한다. 에러 내용을 보면 해당 위치에 types.db 파일이 없어서 나는 오류이므로, 생성을 해주자.

14. /usr/share/collectd/types.db 파일이 없다는 에러를 해결하기 위해 root로 접속하여 빈 types.db 파일을 만들어주어 위의 오류를 해결합니다.

$ mkdir /usr/share/collectd
$ cd /usr/share/collectd
$ touch types.db

15. 다시 위의 CloudWatch Agent 명령어를 실행해주면 아래와 같이 정상적으로 실행 된것을 확인 할 수 있습니다.

16. CloudWatchAgent가 올바르게 살행됐는지 확인를 해봅시다.

만약 상태가 running이라면 올바르게 시작이 된 것입니다.

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

- 아래와 같이 정상적으로 실행된 모습을 확인 할 수 있습니다.

17. 자 이제 그럼 CloudWatch로 돌아가서 설정한 지표를 확인해 봅시다.

CloudWatch로 들어간 후, 지표를 클릭해보면 CWAgent라는 네임스페이스가 생성된 것을 확인할 수 있습니다.

- 메모리 사용량 등 세부 지표를 확인 가능합니다.

- 끝-