본문 바로가기
AWS

[CloudWatch] CloudWatch 경보 설정하기 - 1

by yonikim 2021. 6. 17.
728x90

AWS EC2 인스턴스 디스크 용량 부족으로 인하여 서비스 정지 상태가 발생했었다.

일차적으로는 docker 컨테이너 로그 logrotate 설정을 해줬고([Docker] Docker 컨테이너 로그 관리)

더 나아가 디스크 용량이 부족할 경우 SLACK 으로 알람을 보내게끔 설정을 해주려고 한다.

 

순서는 아래와 같이 진행하려고 한다. 

1. AWS EC2 인스턴스에 CloudWatch Agent 설치하기

2. Slack에 알람 보내는 AWS SNS & AWS Lambda 함수 생성하기

3. AWS CloudeWatch 설정하기

 


AWS EC2 인스턴스에 CloudWatch Agent 설치하기


 

1. CloudWatch Agent 설치하기

$ cd /tmp
$ wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
$ sudo rpm -U amazon-cloudwatch-agent.rpm

 

2. config 파일 설정하기

$ sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json

 

▷ config.json

{
    "agent":{
       "metrics_collection_interval":60,
       "run_as_user":"ubuntu"
    },
    "metrics":{
       "append_dimensions":{
          "ImageId":"${aws:ImageId}",
          "InstanceId":"${aws:InstanceId}",
          "InstanceType":"${aws:InstanceType}"
       },
       "metrics_collected":{
          "procstat":[
             {
                "pattern":"python",
                "measurement":[
                   "memory_rss",
                   "cpu_usage"
                ]
             },
             {
                "pattern":"python3",
                "measurement":[
                   "memory_rss",
                   "cpu_usage"
                ]
             },
             {
                "pattern":"node",
                "measurement":[
                   "memory_rss",
                   "cpu_usage"
                ]
             },
             {
                "pattern":"java",
                "measurement":[
                   "memory_rss",
                   "cpu_usage"
                ]
             }
          ],
          "collectd":{
             "metrics_aggregation_interval":60
          },
          "disk":{
             "measurement":[
                "used_percent",
                "inodes_free"
             ],
             "metrics_collection_interval":60,
             "resources":[
                "*"
             ]
          },
          "diskio":{
             "measurement":[
                "io_time"
             ],
             "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"
          }
       }
    }
 }

 

3. config 파일 연결해 주기

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

 

* 아래와 같이 types.db 가 없다는 에러가 발생한다면,

Configuration validation second phase failed
======== Error Log ========
2021-07-11T23:56:56Z E! [telegraf] Error running agent: Error parsing /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml, open /usr/share/collectd/types.db: no such file or directory

types.db 파일을 만들어주면 된다 ☆

$ sudo mkdir -p /usr/share/collectd/
$ sudo touch /usr/share/collectd/types.db

 

4. CloudWatch 재시작

$ sudo systemctl restart amazon-cloudwatch-agent

 

+ 로그 확인하기

$ tail -f /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log

 

+ 상태 확인하기

$ /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

 

 

728x90