CloudWatch Agent
CloudWatch는 AWS 사용자들을 위해서 애플리케이션이나 시스템 성능에 대하여 전반적으로 확인하여 변경 사항에 대응할 수 있는 모니터링 시스템이다.
AWS 뿐만 아니라 온-프레미스 서버에서 관리되는 애플리케이션이나 시스템 성능 또한 수집이 가능하다. 문제나 장애 발생 시 경보(Alert)를 설정하여 알림을 받을 수 있고 지표를 시각화하여 한 눈에 파악할 수 있으며 자동화된 작업 수행이 가능하다.
CloudWatch는 기본적으로 모니터링 가능한 다양한 지표가 제공된다.
그러나, CloudWatch에서 인스턴스의 기본적인 메모리, 디스크 사용률에 대한 지표를 제공하지 않기 때문에 서버에 CloudWatch Agent를 설치하여 더 안정적으로 모니터링하는 것이 필요하다.
Install CloudWatch Agent to EC2 Instance(Linux)
1. IAM 역할 생성
- [IAM] > [역할] > [역할 만들기]
- [EC2] 선택
- 정책은 "AmazonEC2RoleforSSM" 과 "AmazonSSMFullAccess" 선택
- 역할 이름 입력. (예. 역할 이름: CloudWatchAgent-Linux)
2. EC2 인스턴스에 IAM Role 연결
- 적용할 인스턴스 우클릭 > [보안] > [IAM 역할 수정]
- IAM 역할에 새로 생성한 역할을 선택 후, 저장
3. EC2 인스턴스에 CloudWatch Agent 설치
sudo yum install amazon-cloudwatch-agent
- CloudWatch Agent 파일을 yum 명령어를 이용하여 설치
(안될 경우)
wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
sudo rpm -U amazon-cloudwatch-agent.rpm
find / -name amazon-cloudwatch-agent-config-wizard
- 파일 설치가 완료되면, 위 명령어로 설치된 amazon-cloudwatch-agent-config-wizard 파일을 찾는다.
cd /opt/aws/amazon-cloudwatch-agent/bin/
sudo ./amazon-cloudwatch-agent-config-wizard
- 해당 파일이 있는 경로로 들어가서 마법사 파일을 실행한다.
=============================================================
= 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
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]:
1
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]:
1
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
Current config as follows:
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "cwagent"
},
"metrics": {
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"cpu": {
"measurement": [
"cpu_usage_idle",
"cpu_usage_iowait",
"cpu_usage_user",
"cpu_usage_system"
],
"metrics_collection_interval": 60,
"resources": [
"*"
],
"totalcpu": false
},
"disk": {
"measurement": [
"used_percent",
"inodes_free"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"diskio": {
"measurement": [
"io_time",
"write_bytes",
"read_bytes",
"writes",
"reads"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"netstat": {
"measurement": [
"tcp_established",
"tcp_time_wait"
],
"metrics_collection_interval": 60
},
"swap": {
"measurement": [
"swap_used_percent"
],
"metrics_collection_interval": 60
}
}
}
}
Do you have any existing CloudWatch Log Agent (http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.ht
ml) configuration file to import for migration?
1. yes
2. no
default choice: [2]:
2
Do you want to monitor any log files?
1. yes
2. no
default choice: [1]:
2
Saved config file to /opt/aws/amazon-cloudwatch-agent/bin/config.json successfully.
Current config as follows:
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "cwagent"
},
"metrics": {
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"cpu": {
"measurement": [
"cpu_usage_idle",
"cpu_usage_iowait",
"cpu_usage_user",
"cpu_usage_system"
],
"metrics_collection_interval": 60,
"resources": [
"*"
],
"totalcpu": false
},
"disk": {
"measurement": [
"used_percent",
"inodes_free"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"diskio": {
"measurement": [
"io_time",
"write_bytes",
"read_bytes",
"writes",
"reads"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"netstat": {
"measurement": [
"tcp_established",
"tcp_time_wait"
],
"metrics_collection_interval": 60
},
"swap": {
"measurement": [
"swap_used_percent"
],
"metrics_collection_interval": 60
}
}
}
}
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.
- log는 모니터링하지 않고, CPU, 메모리만 나오도록 설정한다.
(필요 시, /var/log/messages 와 /var/log/secure을 등록)
sudo ./amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 fil
sudo /opt/aws/amazon-cloudwatch-agent/bin/config.json -s
- 마법사로 설정한 json 파일을 불러온다.
sudo amazon-cloudwatch-agent-ctl -m ec2 -a status
- 현재 CloudWatch Agent 상태를 확인해보면 "Stopped" 로 나온다.
sudo amazon-cloudwatch-agent-ctl -m ec2 -a start
- 다음 명령어로 CloudWatch Agent를 실행.
sudo amazon-cloudwatch-agent-ctl -m ec2 -a status
- 아래와 같이 status가 "running"으로 변경된 것을 확인할 수 있다.
ps -ef|grep amazon-cloudwatch-agent
- 해당 명령어로 현재 amazon-cloudwatch-agent가 실행 중인지 확인해보자.
cd /opt/aws/amazon-cloudwatch-agent/logs
sudo more amazon-cloudwatch-agent.log
- 해당 명령어로 로그 상태를 보면서 에러가 없는 지 확인할 수 있다.
Log 확인 중, ec2 tagger: unable to descrbe ec2 tags for initial retrieval 오류가 발생한 것을 확인.
권한 오류였고, {}JSON 파일을 편집해도 되지만, IAM 역할에 CloudWatchAgentServerPolicy 정책에 "ec2:DescribeTags" Action이 있는 것을 확인 후 추가.
CloudWatch Agent 서비스 재시작 후, 정상 작동 및 Log에 이상 없음을 확인
4. CloudWatch Agent로 메모리 사용량 확인
- [CloudWatch]의 [지표] > [모든 지표]
> 사용자 지정 네임스페이스에 CWAgent 가 추가된 것을 확인할 수 있다.
- 지표를 대시보드에 추가해서 확인할 수 있다.
https://aws.amazon.com/ko/premiumsupport/knowledge-center/cloudwatch-push-metrics-unified-agent/
'AWS(Amazon Web Service) > CloudWatch' 카테고리의 다른 글
[AWS] CloudWatch, Web Application Monitoring (0) | 2021.11.08 |
---|---|
[AWS] CloudWatch, EBS Monitoring 지표 (0) | 2021.11.08 |
[AWS] CloudWatch, EC2 Network Monitoring (0) | 2021.11.08 |
[AWS] CloudWatch, CloudFront 모니터링 (0) | 2021.11.04 |
[AWS] Cloud Watch, Cloud Trail (0) | 2021.10.08 |