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

monica·2021년 3월 16일
1

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개의 댓글