AWS Cloud Watch로 모니터링 연결하기

Frog Lemon·2025년 9월 3일
0

AWS

목록 보기
2/2
post-thumbnail

AWS EC2 인스턴스에 CloudWatch 에이전트를 설치하여 시스템 메트릭(CPU, 메모리, 디스크)를 모니터링하는 방법을 정리했습니다.
다음에는 Spring 로그 지표를 모니터링하는 방법을 쓰려고합니다.

모니터링이란?

시스템의 상태와 성능을 지속적으로 관찰하고 측정하여 문제를 사전에 감지하고 대응하는 활동입니다.
제가 모니터링에 대해 공부하면서 생각한 주요한 핵심요소는 3가지 입니다.

1. 수집

  • 지표(매트릭) 수집 : CPU, 메모리, 디스크, 사용률등 수치 데이터 수집.
  • 로그 수집 : 로그를 레벨에 따라 나누고(Info, Warn, Error 등) 대쉬보드에서 모니터링을 하여 운영 상황에서 발생한 문제 상황 인식.
  • 트레이스 : 요청의 전체 처리 과정을 추적.

2. 시각화

  • 그래프 및 차트로 데이터를 이해하기 쉽게 표현
  • 대쉬보드를 통한 실시간 상태 확인

3. 알림

  • 임계값 초과 시 자동 알림 발송
  • 문제 상황을 즉시 인지하고 대응

사전 준비사항

IAM 역할 설정

EC2 인스턴스에 CloudWatch 에이전트 사용을 위한 IAM 역할을 설정했습니다. 다음 정책이 필요합니다:

  • CloudWatchAgentServerPolicy (CloudWatch 에이전트용)

IAM 역할 설정 방법:
1. AWS EC2 콘솔에서 해당 인스턴스 선택
2. 작업보안IAM 역할 수정
3. 위 정책들이 포함된 역할을 선택하여 적용

역할 생성에 대한 내용은 여러 글들이 있으니 참고하면 금방 할 것 같습니다.


CloudWatch 에이전트 설치

모든 과정은 EC2 인스턴스 안에서 진행했습니다.

1. 패키지 다운로드

먼저 CloudWatch 에이전트 패키지를 다운로드했습니다:

# Ubuntu/Debian 계열
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb

2. 패키지 설치

다운로드한 패키지를 설치했습니다:

sudo dpkg -i amazon-cloudwatch-agent.deb

설치가 완료되면 /opt/aws/amazon-cloudwatch-agent/ 디렉토리가 생성됩니다.


구성 파일 생성

1. 구성 파일 디렉토리 이동

CloudWatch 에이전트 구성 파일을 생성하기 위해 해당 디렉토리로 이동했습니다:

cd /opt/aws/amazon-cloudwatch-agent/bin/

2. 구성 파일 생성

종합적인 모니터링을 위한 구성 파일을 생성했습니다:

sudo vi config.json

vi 에디터로 amazon-cloudwatch-agent.json 파일을 생성 후 아래 내용을 넣습니다.

 {
  "agent": {
    "metrics_collection_interval": 60,
    "run_as_user": "cwagent"
  },
  "metrics": {
    "namespace": "CWAgent",
   "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "cpu": {
        "measurement": ["cpu_usage_user", "cpu_usage_system", "cpu_usage_idle", "cpu_usage_iowait"],
        "metrics_collection_interval": 60,
        "totalcpu": true
      },
      "disk": {
        "measurement": ["used_percent"],
        "metrics_collection_interval": 60,
        "resources": ["*"]
      },
      "mem": {
        "measurement": ["mem_used_percent"],
        "metrics_collection_interval": 60
      }
    }
  },
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
            "file_path": "/var/log/messages",
            "log_group_name": "lifelog-dev-system-logs",
            "log_stream_name": "{instance_id}-messages",
            "timezone": "Local"
          }
        ]
      }
    }
  }
}

CloudWatch 에이전트 실행

1. 에이전트 시작

config.json파일을 실행하기 위한 권한을 주었습니다.

chmod 755 config.json

그리고 생성한 config.json 파일을 참조하여 CloudWatch 에이전트를 시작했습니다

sudo amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:config.json -s

2. 에이전트 상태 확인

정상적으로 실행되고 있는지 상태를 확인했습니다:

sudo systemctl status amazon-cloudwatch-agent

<결과>

3. 시스템 서비스 관리

에이전트가 시스템 서비스로 등록되었으므로, 이후에는 systemctl로도 관리할 수 있습니다:

# 상태 확인
sudo systemctl status amazon-cloudwatch-agent

# 재시작
sudo systemctl restart amazon-cloudwatch-agent

# 자동 시작 설정 (인스턴스 재부팅 시 자동 시작)
sudo systemctl enable amazon-cloudwatch-agent

모니터링 결과 확인

CloudWatch 대시보드에서 시각화하기

모니터링 설정이 완료되었다면, CloudWatch 대시보드를 통해 수집된 메트릭을 시각화해보겠습니다.

대시보드 생성 과정

  1. AWS 콘솔CloudWatch대시보드대시보드 생성
  2. 위젯 추가선 그래프 선택
  3. 지표 탭 → 모든 지표CWAgent 네임스페이스 선택

수집되는 주요 메트릭

CloudWatch Agent를 통해 다음과 같은 시스템 메트릭들이 1분 간격으로 수집됩니다:

  • CPU 사용률

  • cpu_usage_idle: 유휴 상태 CPU 비율

  • cpu_usage_iowait: I/O 대기 시간

  • cpu_usage_user: 사용자 프로세스 CPU 사용률

  • cpu_usage_system: 시스템 프로세스 CPU 사용률

  • 디스크 사용률

  • disk_used_percent: 디스크 사용률 (%)

  • 메모리 사용률

  • mem_used_percent: 메모리 사용률 (%)

대시보드 결과 예시

설정이 완료되면 아래와 같이 실시간 모니터링 대시보드를 확인할 수 있습니다:

CloudWatch 대시보드 모니터링 결과

참고: 메트릭이 대시보드에 나타나기까지 5-10분 정도 소요될 수 있습니다. Agent 설정 적용 후 잠시 기다린 다음 확인해보세요.

profile
도전하며 굴러가는 돌멩이, 인생 마라톤 중 😎

0개의 댓글