csct3434
CloudWatch Log Group으로 로그 전송하기 (feat. CloudWatch Agent) 본문
1. EC2 권한 설정
EC2 인스턴스와 연결된 IAM Role에 CloudWatchAgentServerPolicy 정책을 추가해 줍니다.
인스턴스와 연결된 IAM Role이 없는 경우 AWS Console에 접속하여 아래의 순서대로 진행해 주세요.
- [IAM] -> [액세스 관리 | 역할] -> [역할 생성]
- [신뢰할 수 있는 엔티티 유형] : "AWS 서비스", [사용 사례] : "EC2" 선택 후 [다음]
- [권한 정책] 검색 창에 "CloudWatchAgentServerPolicy" 입력하여 체크박스 선택 후 [다음]
- 역할 이름 "ec2_role" 입력 후 [역할 생성]
- [EC2] -> [인스턴스 | 인스턴스] -> 체크박스 선택
- [작업] 버튼 클릭 후 [보안 | IAM 역할 수정]
- [IAM 역할] : "ec2_role" 선택 후 [IAM 역할 업데이트]
2. CloudWatch Logs Group 생성
로그를 저장할 Log Group을 생성해 줍니다.
- [CloudWatch] -> [Logs | Log groups] -> [Create log group]
- 로그 그룹명 및 보관 기간 지정 후 [Create] 선택
3. CloudWatch Agent 설치
EC2 인스턴스에 접속하여 CloudWatch Agent를 설치해 줍니다.
Amazon Linux
sudo yum install amazon-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
4. CloudWatch Agent 설정
cd /opt/aws/amazon-cloudwatch-agent/bin
sudo vi config.json
/opt/aws/amazon-cloudwatch-agent/bin 아래에 config.json 파일을 작성해 줍니다.
config.json
{
"agent": {
"run_as_user": "root"
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/your/log/location/**.log",
"log_group_name": "your_cloudwatch_log_group_name",
"log_stream_name": "{instance_id}",
"retention_in_days": -1
}
]
}
}
}
}
collect_list에 자신의 환경에 맞는 내용을 작성해 주시면 됩니다.
- file_path : 로그 경로, 와일드 마스크(**) 사용 가능
- log_group_name : 로그를 전송할 CloudWatch Log Group 이름
- log_stream_name : Log Group에 기록될 스트림명 ("{instance_id}" 입력 시, EC2 인스턴스 아이디로 자동 설정됨)
- retention_in_days: 로그 보관 기간
types.db
mkdir /usr/share/collectd
touch /usr/share/collectd/types.db
CloudWatch Agent 실행 시 /usr/share/collectd/types.db 파일이 없으면 오류가 발생합니다. 따로 만들어 줍시다.
CloudWatch Agent 실행
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
위의 명령어를 통해 에이전트를 실행시켜 줍니다.
참고로 config.json 파일이 변경된 경우, 위의 명령어를 통해 에이전트를 다시 실행시켜 주어야 변경 사항이 반영됩니다.
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
위 명령어 입력 시 status가 running이면 정상입니다.
/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
에이전트가 정상적으로 동작하지 않는 경우, 로그 내용을 확인해주세요.
5. 로그 전송 확인
CloudWatch Log Group에서 로그 스트림을 통해 전송된 로그를 확인하실 수 있습니다.
참고한 글
https://seeminglyjs.tistory.com/412
https://omoknooni.tistory.com/58
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/troubleshooting-CloudWatch-Agent.html
'개발 일지' 카테고리의 다른 글
STOMP (Simple Text Oriented Messaging Protocol) (10) | 2024.07.23 |
---|---|
AWS WAF를 활용한 봇 공격 차단 (feat. web ACL) (1) | 2024.06.04 |
스프링부트 액세스 로그 설정 방법 (0) | 2024.05.25 |
Amazon S3 트리거와 Lambda를 활용한 썸네일 이미지 생성 (2) - 코드 구현 (1) | 2024.04.20 |
Amazon S3 트리거와 Lambda를 활용한 썸네일 이미지 생성 (1) - 인프라 구축 (1) | 2024.04.16 |