[AWS] EC2에 CloudWatch Agent 설치하여 모니터링하기

monica·2021년 3월 16일

EC2 디스크, 메모리정보는 CloudWatch에 기본으로 제공되지 않으므로 CloudWatchAgent를 설치하여 모니터링 해야함.

  1. CloudWatchAgentServerPolicy 정책을 갖는 역할을 만들어 해당 EC2 인스턴스에 역할로 지정
    (권한 문제 발생시 AmazonSSMFullAccess 정책도 역할에 추가 -- 추후 확인하기)
  1. EC2에 ssh 접속하여 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
  1. EC2 > 해당 인스턴스 오른클릭 > 보안 > IAM 역할 수정 > AmazonCloudWatch-linux 선택

  2. 몇 분 후 AWS CloudWatch에서 지표 항목을 선택하면 Custom Namespaces에 보임.
    기다리는 동안 SNS 주제 설정하고 구독 생성해두기.

  3. CloudWatch > 지표 > CWAgent > 원한는 인스턴스의 메모리 지표 혹은 디스크 지표를 선택하여 알람 설정

profile
개발자

0개의 댓글