반응형

EC2 인스턴스를 사용하면 인스턴스의 디스크 사용량이 전부 차기 전 미리 알아야 한다. 

예를 들어 EC2 인스턴스의 용량이 40GB라고 가정하자.

이 때 EC2 인스턴스의 사용중인 용량이 20GB를 넘어가면 (50%) cloudwatch를 통해 모니터링을 하고 알림을 받을수 있다.

본 글에서는 EC2인스턴스의 디스크 사용량 체크를 위해서 CloudWatch를 적용한다.

 

환경

  • ubuntu: 18.04

 

AWS EC2 인스턴스에 CloudWatch를 붙이는 방법

IAM 역할 설정

먼저 EC2에 CloudWatch 서비스에 대한 엑세스 권한을 부여해야 한다.

 

1.AWS Management 콘솔에서 IAM 접속

 

2. 액세스 관리 - 역할 - 역할 만들기 클릭

 

3.신뢰할 수 있는 엔터티 선택 설정 및 다음

  • 신뢰할 수 있는 엔터티 유형 - AWS 서비스
  • 사용 사례 - EC2

 

4. 권한 추가

  • CloudWatchAgent 검색
  • CloudWatchAgentServerPolicy 선택
  • 다음 클릭

 

5. 이름 지정, 검토 및 생성

  • 역할 이름 - ec2-monitoring (원하는 이름으로 해도 상관없다.)
  • 역할 이름 지정 후 역할 생성

 

6. EC2 인스턴스에 IAM 적용

  • EC2 인스턴스로 이동
  • CloudWatch를 붙이고 싶은 인스턴스 클릭
  • 작업 - 보안 - IAM 역할 수정

  • IAM 역할에 방금 만들어둔 role 선택후 저장

이제 EC2 인스턴스에서 CloudWatch에 데이터를 보낼 권한이 추가되었다.

 

CloudWatch 에이전트 설치

1. ssh를 통해 EC2 인스턴스에 접속

 

2.CloudWatch 에이전트 다운로드

  • 운영체제 별로 패키지 파일이 다르다. 본 글에서는 ubuntu를 사용하기 때문에 ubuntu 18.04 기준으로 작성
cd /tmp 
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb

 

3. CloudWatch 에이전트 설치

sudo dpkg -i -E ./amazon-cloudwatch-agent.deb

 

4. CloudWatch 설정 파일 생성

sudo vim /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
{
  "agent": {
    "metrics_collection_interval": 3600
  },
  "metrics": {
    "append_dimensions": {
        "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "disk": {
        "measurement": [
          "used_percent"
        ],
        "metrics_collection_interval": 3600,
        "resources": [
          "/"
        ]
      }
    }
  }
}
  • 위 파일 처럼 설정하면 / (root)에 대한 disk 사용량을 1시간마다 수집한다.

 

5. cloud watch 재시작 및 로그 확인

// cloud watch 재시작
sudo systemctl restart amazon-cloudwatch-agent

// 로그 확인
tail -f /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log

// 인스턴스 재부팅시에 자동으로 재시작
sudo systemctl enable amazon-cloudwatch-agent

이제 CloudWatch에서 EC2 디스크 사용량을 확인할 수 있다.

 

 

CloudWatch에서 확인

1. CloudWatch - 지표 - 모든 지표 - 찾아보기 - CWAgent

  • 최초 실행시에는 로그 수집까지 5분정도 소요 될 수 있다.

  • InstanceId, device, fstype, pat - 등록한 인스턴스 클릭
  • 이제 상단 그래프에 현재 디스크 사용량이 표시된다. (아래 예시의 경우 Test-instance에서 전체 디스크의 31.3%를 사용중이다.)

 

Cloud Watch 알림 설정

1. 경보 생성

  • cloudWatch - 경보 - 경보 생성

  • 지표 선택

  • CWAgent - InstanceId, device, fstype, path3 - CloudWatch를 붙여둔 instance

  • 지표 및 조건 지정
    • 기간 - 1시간으로 변경
    • 1시간마다 디스크의 사용량을 확인
    • 조건 - 디스크의 사용량이 50% 이상일 때 알림을 준다.

  • 작업 구성
    • 주제가 이미 존재한다면 기존 주제 사용
    • 주제가 없다면 아래 예시처럼 주제 구성 후 주제 생성

  • 주제 생성 후 기존 SNS 주제 선택 및 다음

  • 이름 및 설명 추가

  • 경보 생성
  • 위의 주제에서 등록한 이메일에서 confirm (최초만 적용)

이제 Test 인스턴스의 용량이 50% 이상을 사용한다면 이메일로 알림이 온다.

반응형
얼은펭귄