AWS EC2에서 발생하는 로그 파일을 확인하기 위해 매번 인스턴스에 직접 들어가서 로그파일을 확인하는 작업은 번거롭다.
따라서 CloudWatch Agent를 이용해 파일 로그를 CloudWatch에 출력하는 방법을 알아보자.
CloudWatch agent 설치
CloudWatch agent는 CloudWatch에서 기본적으로 제공하는 cpu 사용률 등 기본적인 지표 외에도 메모리와 디스크 사용률 등 다양한 custom 지표를 확인할 수 있다.
IAM 역할 설정
CloudWatchAgentServerPolicy 정책을 원하는 EC2 인스턴스에 적용한다.
CloudWatch agent 설치
설치 방법은 ubuntu 기준이다.
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
설정 파일 작성, 수집하고 싶은 Metric 설정
sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json
해당 파일에서 다양한 custom 지표와 로그 설정을 할 수 있는데, 특히 로그 설정 시에는 다음과 같이 입력한다.
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": [로그파일위치],
"log_group_name": [로그그룹명],
"log_stream_name": [로그스트림명]
}
]
}
}
}
+) 참고: CloudWatch 로그 개념
- 로그 이벤트: 로그 이벤트는 모니터링 중인 애플리케이션 또는 리소스에 기록된 일부 활동에 대한 레코드
- 로그 스트림: 로그 스트림은 동일한 소스를 공유하는 로그 이벤트 시퀀스
- 로그 그룹: 로그 그룹은 동일한 보존 기간, 모니터링 및 액세스 제어 설정을 공유하는 로그 스트림 그룹을 정의
여기서는 설정 파일을 다음과 같이 작성했다.
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/home/ubuntu/deploy.log",
"log_group_name": "easy-yum-log-group",
"log_stream_name": "deploy"
}
]
}
}
},
"metrics": {
"metrics_collected": {
"disk": {
"measurement": [
"used_percent",
"used",
"total"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent",
"mem_total",
"mem_used"
],
"metrics_collection_interval": 60
}
}
}
}
1. logs: 로그 그룹 및 스트림 설정
2. metrics: 디스크와 메모리 각각의 사용률, 전체, 사용됨 지표 수집
지금은 CloudWatch logs에 집중하기 위해 일단 metrics는 무시해도 좋다.
설정 파일 적용
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
로그 확인
이제 ec2에서 로그를 찍어보고 CloudWatch에 연결되는지 확인해보자.
AWS Console의 CloudWatch로 접속해 로그 그룹이 생성되었는지 확인한다. (로그를 찍으면 자동으로 생성된다)
해당 로그 그룹으로 들어가 로그 스트림이 생성되었는지 확인한다.
해당 로그 스트림으로 들어가 로그 이벤트들을 확인해본다.
'aws' 카테고리의 다른 글
[AWS] RDS "Too many connections" (2) | 2022.08.01 |
---|---|
[AWS] S3 버킷 퍼블릭 엑세스 설정 (0) | 2022.07.25 |
[AWS] EC2, ufw enable 후 ssh 접속 불가 문제 (6) | 2022.01.13 |
[Ubuntu] Ubuntu에서 rc.local 없을 때, 생성하는 방법 (0) | 2022.01.09 |
[EC2] 프리티어(t2.micro)에서 Jenkins 용량 초과 문제 (2) | 2022.01.09 |