본문 바로가기

Mornitoring/CloudWatch

CWAgent - 1. EC2 Amazon Linux Memory / Disk 수집

Cloudwatch에서는 메모리나 디스크 사용률에 대해서 알려주지 않기 때문에

EC2의 메모리나 디스크 사용률에 대해서 알고 싶다면, 해당 메트릭을 수집할 수 있도록 하는 Agent들을 설치해야합니다.

Cloudwatch 지표를 통해 메모리 디스크를 수집하기 위해서는 CloudWatchAgentServerPolicy를 가진 Role을 EC2에 준 후,

Cloudwatch Agent를 설치하고 어떠한 메트릭을 수집할지 정한 후 Agent를 실행시켜주면 됩니다.

 

이 과정을 하나씩 진행해보도록 하겠습니다.

먼저, IAM에서  CloudWatchAgentServerPolicy을 가진 Role을 구성해보도록 하겠습니다.

사용 서비스는 EC2를 선택해주시고 다음으로 넘어가주시면 됩니다.

 

 

그 다음에는 CloudWatchAgentServerPolicy를 검색해서 선택하고 적당한 이름을 줘서 생성해주시면 됩니다.

 

 

해당 롤을 인스턴스에 연결시켜주도록 하겠습니다.

 

 

만약 OutBound에 대해서 제어를 하고 계시다면 443포트로 모든 대역을 열어주셔야 합니다.

 

이제 Agent를 설치해보도록 하겠습니다.

wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm

 

위의 설치 파일이 받아지면 아래명령어를 통해 설치해주도록 하겠습니다.

sudo rpm -U ./amazon-cloudwatch-agent.rpm

 

이제 어떤 메트릭을 수집할지를 정해주기 위해  config file을 작성하도록 하겠습니다.

저는 정말 기본적인 메모리와 디스크 사용률만 수집할 것이기 때문에 아래와 같이 구성했습니다.

지표에 대한 설명은 아래 공식 다큐를 참조하시면 좋습니다.

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html

 

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html

CloudWatch 에이전트가 수집하는 지표

docs.aws.amazon.com

{
    "metrics": {
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            "disk": {
                "measurement": [
                    "used_percent",
                    "inodes_free"
                ],
                "metrics_collection_interval": 10,
                "resources": [
                    "*"
                ]
            },       
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 10
            }
        },
        "aggregation_dimensions" : [["AutoScalingGroupName"], ["InstanceId", "InstanceType"]]
    }
}

 

만약 이렇게 직접 작성하는것이 어렵다면, 아래 명령어를 통해 만들 수 있습니다.

해당 파일은 /opt/aws/amazon-cloudwatch-agent/bin/config.json에 생성됩니다.

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

 

구성이 끝났다면 아래 명령어로 실행하고, 상태를 체크해볼 수 있습니다.

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

 

이후 Cloudwatch 지표에서 CWAgent라는 namespace에서 설정했던 Metric이 정상적으로 수집되는 것을 볼 수 있습니다.

 

 

 

 

다음 포스트에서는 Windows 서버에서의 수집을 알아보도록 하겠습니다.