Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

CloudWatch Log Group으로 로그 전송하기 (feat. CloudWatch Agent) 본문

개발 일지

CloudWatch Log Group으로 로그 전송하기 (feat. CloudWatch Agent)

csct3434 2024. 5. 25. 22:21

1. EC2 권한 설정

EC2 인스턴스와 연결된 IAM Role에 CloudWatchAgentServerPolicy 정책을 추가해 줍니다.

 

인스턴스와 연결된 IAM Role이 없는 경우 AWS Console에 접속하여 아래의 순서대로 진행해 주세요.

  1. [IAM] -> [액세스 관리 | 역할] -> [역할 생성]
  2. [신뢰할 수 있는 엔티티 유형] : "AWS 서비스", [사용 사례] : "EC2" 선택 후 [다음]
  3. [권한 정책] 검색 창에 "CloudWatchAgentServerPolicy" 입력하여 체크박스 선택 후 [다음]
  4. 역할 이름 "ec2_role" 입력 후 [역할 생성]
  5. [EC2] -> [인스턴스 | 인스턴스] -> 체크박스 선택
  6. [작업] 버튼 클릭 후 [보안 | IAM 역할 수정]
  7. [IAM 역할] : "ec2_role" 선택 후 [IAM 역할 업데이트]

2. CloudWatch Logs Group 생성

로그를 저장할 Log Group을 생성해 줍니다.

  1. [CloudWatch] -> [Logs | Log groups] -> [Create log group]
  2. 로그 그룹명 및 보관 기간 지정 후 [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/ko_kr/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance-fleet.html

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/troubleshooting-CloudWatch-Agent.html

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html