EC2 디스크, 메모리정보는 CloudWatch에 기본으로 제공되지 않으므로 CloudWatchAgent를 설치하여 모니터링 해야함.
ubuntu용 CloudWatchAgent 다운로드
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
설치
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
설정파일은 다음 경로에 생성 또는 복사하거나 마법사를 통해 만든다.
/opt/aws/amazon-cloudwatch-agent/bin/config.json
설정파일 예)
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "cwagent"
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/messages",
"log_group_name": "messages",
"log_stream_name": "{instance_id}"
},
{
"file_path": "/var/log/secure",
"log_group_name": "secure",
"log_stream_name": "{instance_id}"
}
]
}
}
},
"metrics": {
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}
또는 설정 마법사로 설정파일 생성하기
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
대부분 default로 넘기고 port 번호, charge(요금 추가)는 default로 하지 않도록 주의
Which user are you planning to run the agent?
1. root
2. cwagent
3. others
default choice: [1]:
여기서 2번 고르면 cloudwatch 지표 목록에 cwagent라고 표시됨
Which default metrics config do you want?
1. Basic
2. Standard
3. Advanced
4. None
default choice: [1]:
Basic이면 mem_used_percent, disk_used_percent 이 두가지를 얻을 수 있음.
(https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file-wizard.html)
로그파일은
/var/log/message
/var/log/secure
정도만
What parameter store name do you want to use to store your config? (Use 'AmazonCloudWatch-' prefix if you use our managed AWS policy)
default choice: [AmazonCloudWatch-linux]
여기서 처음에 만든 역할의 이름을 적어준다.
설정파일 생성 끝
아래와 같이 /usr/share/collectd/types.db 파일 생성
$ mkdir /usr/share/collectd
$ cd /usr/share/collectd
$ touch types.db
설정 적용
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
EC2 > 해당 인스턴스 오른클릭 > 보안 > IAM 역할 수정 > AmazonCloudWatch-linux 선택
몇 분 후 AWS CloudWatch에서 지표 항목을 선택하면 Custom Namespaces에 보임.
기다리는 동안 SNS 주제 설정하고 구독 생성해두기.
CloudWatch > 지표 > CWAgent > 원한는 인스턴스의 메모리 지표 혹은 디스크 지표를 선택하여 알람 설정