사전 준비
모니터링 하고자 하는 인스턴스 준비
IAM 역할 확인 및 부여
IAM 역할 생성 및 정책 부여
인스턴스에 IAM 역할 할당
{
"agent": {
"metrics_collection_interval": 60,
"logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log"
},
"metrics": {
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"InstanceId": "${aws:InstanceId}"
},
"metrics_collected": {
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"disk": {
"measurement": [
"disk_used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"swap": {
"measurement": [
"swap_used_percent"
],
"metrics_collection_interval": 60
},
"cpu": {
"measurement": [
"cpu_usage_idle",
"cpu_usage_iowait",
"cpu_usage_user",
"cpu_usage_system"
],
"metrics_collection_interval": 60
},
"net": {
"measurement": [
"bytes_sent",
"bytes_recv"
],
"metrics_collection_interval": 60,
"resources": [
"eth0"
]
}
}
}
}
작성한 설정 파일을 /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json 경로에 저장한 후, CloudWatch 에이전트를 시작합니다.
sudo mv /path/to/your/amazon-cloudwatch-agent.json /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s
CloudWatch 콘솔에서 알람을 설정하여 특정 메트릭이 임계값을 초과할 경우 알림을 받을 수 있습니다.
예시: 메모리 사용률 알람 설정
스토리: cpu 사용량이 50이 넘어갈 경우 인스턴스가 최대로 생성되고 50이 넘어가질 않을 경우 최소 값이 되는 것을 이용해서
- 인스턴스가 생성되고 종료되는 것을 알람으로 지정하여 인스턴스가 비정상적으로 생성되고 종료되는 알람을 받게 될 시에
- 그 인스턴스에 CloudWatch 에이전트를 사용하여 메모리, 디스크, 네트워크 등의 메트릭을 수집에 대한 알람을 받을 수 있으며 cloud watch를 이용하여 모니터링
경보 생성은 60초 기준으로 했기 때문에 1분으로 맞추기
사전 작업
inventory.ini 구성 ( 8회차 참고, ( nginx, tomcat, db 전부 포함 ) )
---
- name: Deploy CloudWatch Agent to EC2 instance
hosts: All
become: yes
vars:
local_config_path: "/home/ec2-user/cloud-agent/amazon-cloudwatch-agent.json"
remote_config_path: "/home/ec2-user/amazon-cloudwatch-agent.json"
final_config_path: "/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json"
tasks:
- name: Install Amazon CloudWatch Agent
yum:
name: amazon-cloudwatch-agent
state: present
- name: Copy CloudWatch Agent configuration file
copy:
src: "{{ local_config_path }}"
dest: "{{ remote_config_path }}"
owner: ec2-user
group: ec2-user
mode: '0644'
- name: Move configuration file to final destination
command: mv {{ remote_config_path }} {{ final_config_path }}
- name: Apply CloudWatch Agent configuration
command: >
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl
-a fetch-config
-m ec2
-c file:{{ final_config_path }}
-s
nat gateway를 생성할 때 연결 유형을 public으로 설정했기 때문에
- VEC-PRD-VPC-BASTION-PUB-2A로 생성한 인스턴스로 ssh를 통해 VEC-PRD-VPC-DB-PRI-2A의 인스턴스로 접속해서 aws CLI 계정인증을 통해 dynamodb 테이블에 item 추가하고 확인이 가능하다
- private link 구성