ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Ubuntu EC2의 메모리 사용량 모니터링하기
    Data Engineering/AWS, Spark 2023. 8. 23. 19:24
    728x90
    반응형

    AWS의 모든 인프라는 Cloudwatch로 모니터링한다. 몇일 전부터 사내용 api가 간헐적으로 죽어서 모니터링 지표를 봤는데, 특별히 api가 죽을만한 이유가 없어보였고, 코드 로직 상 데이터가 늘어나면 메모리 부하가 생길 수 있는 구조라 메모리 부하는 아닌가 했는데 cloudwatch가 메모리는 트래킹하지 않고 있었다 (기본적인 지표 아니냐며...). 이유를 대충 찾아보니 baremetal단에 접근해야해서 어쩌구저쩌구 하는데 암튼 안되는 거니 되는 방법을 찾아봤고, cloudwatch agent라는 것을 사용하면 된다고 해서 설치 방법을 적어보려고한다.

     

    괜히 블로그 글 참고했다가 실패하지 말고(내 얘기) 언제나 공식문서를 따르자

     

    1. IAM 만들고 연결

    1. IAM > Roles들어가서 create role > EC2 선택

    2. CloudWatchAgentServerPolicy 정책 붙여서 역할 생성

    3. 모니터링하고자하는 EC2 인스턴스 선택 > Action (또는 오른쪽 클릭) > Security > Modify IAM role 들어가서 방금 생성한 역할 연결

     

    2. Cloudwatch agent 설치

    1. 해당 ec2에 ssh 접속

    2. cloudwatch agent 패키지 다운로드 & 압축해제

    wget https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip
    unzip AmazonCloudWatchAgent.zip

    3. cloudwatch agent 패키지 설치

    sudo ./install.sh

    4. cloudwatch agent 패키지 실행

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

    cloudwatch agent의 기본 설정 마법사가 실행된다.

    =============================================================
    = Welcome to the AWS CloudWatch Agent Configuration Manager =
    =============================================================
    On which OS are you planning to use the agent?
    1. linux
    2. windows
    3. darwin
    default choice: [1]:
    1
    
    Trying to fetch the default region based on ec2 metadata...
    Are you using EC2 or On-Premises hosts?
    1. EC2
    2. On-Premises
    default choice: [1]:
    1
    
    Which user are you planning to run the agent?
    1. root
    2. cwagent
    3. others
    default choice: [1]:
    2
    
    Do you want to turn on StatsD daemon?
    1. yes
    2. no
    default choice: [1]:
    2
    
    Do you want to monitor metrics from CollectD?
    1. yes
    2. no
    default choice: [1]:
    2
    # collectD를 사용하면 더 많은 지표를 수집할 수 있다.
    
    Do you want to monitor any host metrics? e.g. CPU, memory, etc.
    1. yes
    2. no
    default choice: [1]:
    1
    
    Do you want to monitor cpu metrics per core? Additional CloudWatch charges may apply.
    1. yes
    2. no
    default choice: [1]:
    2
    
    Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metr
    ics if the info is available?
    1. yes
    2. no
    default choice: [1]:
    2
    
    Would you like to collect your metrics at high resolution (sub-minute resolution)? This enables sub-minute resolu
    tion for all metrics, but you can customize for specific metrics in the output json file.
    1. 1s
    2. 10s
    3. 30s
    4. 60s
    default choice: [4]:
    4
    
    Which default metrics config do you want?
    1. Basic
    2. Standard
    3. Advanced
    4. None
    default choice: [1]:
    3
    
    Please check the above content of the config.
    The config file is also located at /opt/aws/amazon-cloudwatch-agent/bin/config.json.
    Edit it manually if needed.
    Do you want to store the config in the SSM parameter store?
    1. yes
    2. no
    default choice: [1]:
    2
    
    Program exits now.

    Cloudwatch agent로 수집할 수 있는 지표는 다음과 같이 구분된다 (맨 마지막 단계에서 설정)

    • Basic: 메모리 사용 비율, 디스크 사용 비율
    • Standard: Basic + cpu 유휴 시간
    • Advanced:

     

    3. Cloudwatch agent 실행

    다음 명령어로 실행, 중지, 상태 확인 할 수 있다.

     

    4. Cloudwatch에서 확인

    Cloudwatch > All metrics (모든 지표)콘솔에 들어가면 사용자 정의 네임스페이스에 CWAgent라는 지표가 생성되었을 것이다. (만약 생성이 안되었다면 IAM권한이 제대로 부여되었고, 인스턴스에 잘 연결되었는지 다시 확인해보자)

    해당 지표를 통해 메모리 사용량을 확인할 수 있다.

    728x90
    반응형

    댓글