본문 바로가기

AWS

CloudWatch Logs 사용한 로그 중앙 집중화

CloudWatch Logs를 사용하여, EC2에서 구동 중인 서버의 로그를 Push 시켜 AWS 서비스에서 로그를 중앙 집중화할 수 있도록 하고자 한다.

 

실습

1. IAM 역할 생성

  • AWS 서비스에 IAM을 검색한 뒤, 역할 -> 역할 만들기를 클릭한다.

 

  • AWS 서비스, EC2를 선택하고 다음을 클릭한다.

 

  • CloudWatchAgentServerPolicy를 검색한 뒤, 선택 후 다음을 클릭한다.
  • 이후, 역할 이름을 입력하고 역할 생성을 클릭한다.

 

2. EC2 역할 연결

  • 역할을 적용할 인스턴스 우클릭 -> 보안 -> IAM 역할 수정을 클릭한다.

  • 1번에서 생성한 역할을 선택하고 역할을 적용한다.

 

3. CloudWatch 로그 그룹 생성

  • AWS 서비스에 CloudWatch를 입력하고, 로그 그룹 -> 로그 그룹 생성을 클릭한다.

 

  • 로그 그룹 이름을 입력한다.
  • 보존 설정을 추가한다. 만기 없음으로 선택 시 요금이 발생할 수 있기 때문에 조심해야 한다.

4. CloudWatch 로그 스트림 생성

  • 로그 스트림 생성 버튼을 클릭한 후, 로그 스트림을 생성한다.

 

5. EC2에 접속해서 CloudWatchAgent 설치하기

다음 명령어를 입력하여 amazon-cloudwatch-agent를 설치한다.

sudo yum install amazon-cloudwatch-agent

 

config.json에 다음과 같은 내용을 작성한다.

sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
  "agent": {
    "metrics_collection_interval": 60,
    "region": "ap-northeast-2",
    "run_as_user": "root"
  },
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
          "file_path": "/home/ec2-user/spring-study/logback-study/logs/test1.log",
          "log_group_name": "test-log-group",
          "log_stream_name": "test-log-1"
          }
        ]
      }
    }
  }
}
  • metrics_collection_interval: 지표가 수집될 빈도
  • run_as_user: CloudWatch 에이전트를 실행하는 데 사용할 사용자 지정
  • log_group_name: 3번에서 생성한 로그 그룹
  • log_stream_name: 지정 안하면 자동으로 생성한다.

 

cloudWatchAgent를 실행한다.

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

 

cloudWatchAgent 상태 확인

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