Aws Ec2로 만들어진 Ubuntu 서버에 Docker 설치하는 법을 알아보겠습니다.

1. Docker 설치 명령어

# 패키지 업데이트
sudo apt update

# https관련 패키지 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common

# docker repository 접근을 위한 gpg 키 설정
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# docker repository 등록
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

# 업데이트
sudo apt update

# 도커 설치
sudo apt install docker-ce

# 설치 확인
docker --version

2. sudo 없이 Docker 명령어 사용

# 현재 사용자를 docker group 포함
sudo usermod -aG docker ${USER}

# 터미널 재시작 후 결과 확인
id -nG

'Server > Docker' 카테고리의 다른 글

[Centos] aws linux centos에 docker로 jenkins 띄우기  (0) 2023.08.08
.net core React docker image 만드는 법  (0) 2023.04.03
Docker 명령어  (0) 2023.01.29
Docker 설치 - linux편  (0) 2023.01.29
Docker 설치 - windows편  (0) 2023.01.29

Aws Ubuntu Server에 Mariadb DB 세팅을 시작하려고 합니다.

1) Server Mariadb 설치

2) 계정/비번 설정 하는 방법

3) 별도의 스토리지 공간에 데이터 쌓이도록 세팅 값 변경

4) 외부에서 접속 가능하도록 세팅

시작해보겠습니다 : )

 

데이터 저장만을 위한 스토리지 AWS EBS Volumn은 미리 세팅해두었으니 참고 부탁드립니다.
[Ubuntu] AWS EBS Volume 추가하기 (tistory.com)

 

1) Server Mariadb 설치

# 체크와 업데이트
sudo apt update && sudo apt-get -y upgrade

# mariadb 설치
sudo apt-get install -y mariadb-server

2) 계정/비번 설정 하는 방법

# 입력 없이 접속
sudo mysql

# 비번 설정 및 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '비밀번호' WITH GRANT OPTION;

# 적용
FLUSH PRIVILEGES;

3) Mariadb 설정 파일 편집

1. port 설정

2. 외부 접속 허용

3. 새로 추가된 ebs 볼륨 연결

# 데이터를 저장하고 싶은 위치에 폴더 생성
sudo mkdir -p /ddrive/mariadb-data

# mariadb stop 후
sudo service mysql stop

# 데이터 copy
sudo cp -R /var/lib/mysql/* /ddrive/mariadb-data/

# 해당 폴더에 권한 부여
sudo chown -R mysql:mysql /ddrive/mariadb-data

# 환경 설정 파일 편집
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

# 편집 후
sudo systemctl restart mariadb

 

4) 방화벽 허용

1. aws ec2 보안그룹 설정

2. db 서버 방화벽 설정

[Ubuntu] 외부 방화벽 설정하는 법 Firewalld (tistory.com)

 

오류 대응 및 추가 내용

[Ubuntu] Failed to start MariaDB 10.6.12 database server 오류 해결 (tistory.com)

 

[Ubuntu] Failed to start MariaDB 10.6.12 database server 오류 해결

mariadb를 실행하려고 명령어를 쳤는데 sudo systemctl start mariadb mariadb.service: Main process exited, code=exited, status=1/FAILURE mariadb.service: Failed with result 'exit-code'. Failed to start MariaDB 10.6.12 database server. 오류가

nitpick92.tistory.com

[Ubuntu] 외부 방화벽 설정하는 법 Firewalld (tistory.com)

 

[Ubuntu] 외부 방화벽 설정하는 법 Firewalld

docker로 배포 한 웹 서비스를 외부에서 확인할 수 있도록 linux Firewalld를 활용하여 방화벽 설정을 하는 법을 알아보겠습니다. 1. Aws EC2 보안그룹 설정 2. Aws EC2 배포용 Ubuntu Server Firewalld 설치 및 설

nitpick92.tistory.com

 

AWS Ubuntu ec2 서버에 드라이브를 추가 세팅하는 방법을 알아보겠습니다.

AWS EBS Volumn을 추가하는 방법입니다.

 

1. EBS 볼륨 생성

륨 생성을 클릭 해줍니다.

연결 시킬 인스턴스 가용 영역을 선택해주세요.

2. 인스턴스 연결

볼륨 상태가 사용 가능으로 변하면 원하는 인스턴스에 볼륨 연결을 해줍니다.
EC2 > 스토리지에서 연결이 확인 되면
인스턴스 재부팅을 진행해주세요.

3. EBS 볼륨 연결 확인하기

$ lsblk # 파일 시스템 조회

lsblk 명령어로 새로 추가된 ebs 볼륨을 확인합니다.
Linux 커널로 인해 디바이스 이름이 변경이 될 수 있습니다.

4. EBS 볼륨을 파일시스탬 포맷하기

/dev/nvme0n1은 디렉토리가 아니여서 파일 시스템으로 포맷을 해주어야 쓸 수 있습니다.

$ sudo mkfs -t ext4 nvme0n1


5. EBS 볼륨 마운트 설정하기

마운트 작업이란 운영체제에 파일 시스템을 연결하는 것입니다.

(윈도우 E: 드라이브 처럼)

$ mkdir /backup
$ mount /dev/nvme0n1 /backup

centos 서버 자체에 jenkins 설치 하는 방법에 이어 docker로 jenkins를 띄우는 방법에 대해서 알아보겠습니다.

 

1. EC2 인스터스 시작 및 설정

1) 보안 그룹 설정 시 테스트를 위해 로컬 ip에 8080(기본 Jenkins 포트) 22(SSH)를 열어 둡니다.

2. EC2 인스턴스 연결

1) SSH로 인스턴스 연결

3. Docker 설치

sudo yum update -y
sudo yum install -y docker
sudo service docker start
sudo usermod -a -G docker ec2-user

4. Jenkins Docker 이미지 실행

docker run -d -p 8080:8080 -p 50000:50000 --restart=always jenkins/jenkins:lts

5. Jenkins 초기 설정

docker exec [컨테이너 ID] cat /var/jenkins_home/secrets/initialAdminPassword

6. Jenkins 접속 확인

http://[EC2 인스턴스의 퍼블릭 IP]:8080

'Server > Docker' 카테고리의 다른 글

[Ubuntu] Docker 설치하기  (0) 2023.10.23
.net core React docker image 만드는 법  (0) 2023.04.03
Docker 명령어  (0) 2023.01.29
Docker 설치 - linux편  (0) 2023.01.29
Docker 설치 - windows편  (0) 2023.01.29

[linux] MongoDB 설치하기 (tistory.com)

 

[linux] MongoDB 설치하기

저번 시간에는 aws ec2 centos linux에 MongoDB를 설치하기 위해 드라이브 공간을 추가해보는 작업을 진행하였습니다. [linux] AWS Centos EBS Volume 추가하기 (tistory.com) [linux] AWS Centos EBS Volume 추가하기 AWS Cento

nitpick92.tistory.com

서버의 문제 혹은 접속이 불가능한 상황을 대응하기 위해 주 1회 mongodb 데이터를 S3로 백업할 수 있는 방법에 대해서 정리를 해보았습니다.

 

1. s3 인입 권한을 가진 계정 생성하여 Access Token 발급

1) AWS Console IAM 접속

2) 사용자 추가
3) 직접 정책 연결
4) 정책 생성 클릭
5) JSON 인입

- 삭제 권한은 제거하고 인입 권한만 부여

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
        },
        {
            "Effect": "Deny",
            "Action": "s3:DeleteObject",
            "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
        }
    ]
}

6) 권한 정책 창에서 정책 세로고침 후 연결

7) 보안 자격 증명 창에서 엑세스 키 발급

 

2. aws cli 설치 및 연동

# AWS CLI 설치
sudo yum install awscli

# AWS CLI 구성
aws configure

3. mongodb_backup_to_s3.sh 생성

nano mongodb_backup_to_s3.sh
#!/bin/bash

# MongoDB 설정
DB_NAME="your-db"             # 백업할 MongoDB 데이터베이스 이름
COLLECTION_NAME="your-collection"  # 백업할 MongoDB 컬렉션 이름
OUTPUT_DIR="/path/to/backup/folder" # 백업 파일을 저장할 경로

# S3 설정
S3_BUCKET="your-bucket"
TODAY_DATE=$(date '+%Y-%m-%d')
S3_PATH="s3://${S3_BUCKET}/${TODAY_DATE}" # 원하는 경로

# MongoDB에서 지정된 collection 백업
mongodump --db=${DB_NAME} --collection=${COLLECTION_NAME} --out=${OUTPUT_DIR}

# 백업된 데이터를 tarball로 압축
tar -czvf ${OUTPUT_DIR}/${COLLECTION_NAME}.tar.gz -C ${OUTPUT_DIR} ${DB_NAME}

# 백업된 tarball을 S3로 업로드
aws s3 cp ${OUTPUT_DIR}/${COLLECTION_NAME}.tar.gz ${S3_PATH}/

# JSON 형식으로 백업 데이터를 변환
mongoexport --db=${DB_NAME} --collection=${COLLECTION_NAME} --out=${OUTPUT_DIR}/${COLLECTION_NAME}.json

# 백업된 JSON 데이터를 S3로 업로드
aws s3 cp ${OUTPUT_DIR}/${COLLECTION_NAME}.json ${S3_PATH}/

# (선택적) 로컬에 저장된 백업 파일 및 tarball, json 삭제
rm -rf ${OUTPUT_DIR}/${DB_NAME}
rm ${OUTPUT_DIR}/${COLLECTION_NAME}.tar.gz
rm ${OUTPUT_DIR}/${COLLECTION_NAME}.json

echo "Backup for ${COLLECTION_NAME} completed!"

4. 백업 테스트

./mongodb_backup_to_s3.sh

 

5. 자동 스케줄러(cron)

crontab -e
# 월요일 새벽 2시에 실행
0 2 * * 1 /path/to/script/mongodb_backup_to_s3.sh

 

'Server > AWS' 카테고리의 다른 글

[CentOS] Aws CloudWatch Memory 및 용량 확인  (0) 2023.04.13
[Windows] Aws CloudWatch Memory 및 용량 확인  (0) 2023.04.12
AWS Global Accelerator란?  (0) 2023.03.24

저번 시간에는 aws ec2 centos linux에 MongoDB를 설치하기 위해

드라이브 공간을 추가해보는 작업을 진행하였습니다.
[linux] AWS Centos EBS Volume 추가하기 (tistory.com)

 

[linux] AWS Centos EBS Volume 추가하기

AWS Centos ec2 서버에 드라이브를 추가 세팅하여 MongoDB를 설치해보려고 합니다. 이에 앞서 EBS Volumn을 추가해보려고 합니다. 1. EBS 볼륨 생성 볼륨 생성을 클릭 해줍니다. 연결 시킬 인스턴스 가용 영

nitpick92.tistory.com

 

이어서 mongodb를 설치하는 방법을 알아보겠습니다.

https://www.mongodb.com/docs/v4.4/tutorial/install-mongodb-on-amazon/ 참고 하였습니다.

 

1. MongoDB 설치

# 파일 생성 후 내용 저장
https://www.mongodb.com/docs/v4.4/tutorial/install-mongodb-on-amazon/
# 해당 텍스트 붙혀넣기 후 저장
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
# 설치 시작
sudo yum install -y mongodb-org

2. MongoDB 데이터 삽입 공간 변경

# 빈 폴더 생성
sudo mkdir -p /xvdb/mongodb/data/mongo

# 추가 된 스토리지 경로로 설치된 mongo 폴더 카피
cp -ra /var/lib/mongo /xvdb/mongodb/data/mongo

# conf파일 열기
sudo vi /etc/mongod.conf

# 추가 된 스토리지 경로로 dbPath 변경
storage:
	dbPath: /xvdb/mongodb/data/mongo

# 외부에서 접속할 수 있도록 net 변경
net:
	port: 27017
    bindIp: 0.0.0.0

# 권한 부여
sudo chown mongod:mongod /xvdb/mongodb/data/mongo

3. MongoDB 시작

# MongoDB 실행 확인 (없는 거 확인)
ps -ef | grep mongo

# 몽고 디비 실행
sudo systemctl start mongod

# 몽고 디비 상태 확인
sudo systemctl status mongod

# 접속 확인
mongo 혹은 netstat -ano | grep mongo

 

4. 서버 방화벽 오픈

linux 서버 방화벽 오픈

linux CentOS 외부 접속(방화벽 오픈) 허용 (tistory.com)

 

linux CentOS 외부 접속(방화벽 오픈) 허용

# firewalld 설치 sudo yum install firewalld # firewalld 시작 sudo systemctl start firewalld sudo systemctl enable firewalld # port 추가 sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp # firewalld 재로드 sudo firewall-cmd --reload #

nitpick92.tistory.com

aws ec2 보안 그룹 설정 > 인바운드 규칙 > 27017

5. 외부 접속 확인

 

DB Enterprise Server Download | MongoDB

접속 확인

 

 

AWS Centos ec2 서버에 드라이브를 추가 세팅하여 MongoDB를 설치해보려고 합니다.

이에 앞서 EBS Volumn을 추가해보려고 합니다.

 

1. EBS 볼륨 생성

볼륨 생성을 클릭 해줍니다.

연결 시킬 인스턴스 가용 영역을 선택해주세요.

2. 인스턴스 연결

볼륨 상태가 사용 가능으로 변하면 원하는 인스턴스에 볼륨 연결을 해줍니다.
EC2 > 스토리지에서 연결이 확인 되면
인스턴스 재부팅을 진행해주세요.

3. EBS 볼륨 연결 확인하기

$ lsblk # 파일 시스템 조회

lsblk 명령어로 새로 추가된 ebs 볼륨을 확인합니다.
* Linux 커널로 인해 디바이스 이름이 변경이 될 수 있습니다.

4. EBS 볼륨을 파일시스탬 포맷하기

/dev/nvme1n1은 디렉토리가 아니여서 파일 시스템으로 포맷을 해주어야 쓸 수 있습니다.

# file -s <장치명>
$ file -s /dev/nvme1n1
# /dev/nvme1n1: data <- 파일시스템이 존재하지 않는다.
/dev/nvme1n1: data 확인
# 루트 권한 획득
$ sudo -s
# mkfs -t <볼륨타입> <볼륨장치명> -> 해당 볼륨을 파일시스템으로 포맷
$ mkfs -t ext4 /dev/nvme1n1

/dev/nvme1n1:  Linux rev 1.0 ext4 filesystem data 확인

5. EBS 볼륨 마운트 설정하기

마운트 작업이란 운영체제에 파일 시스템을 연결하는 것입니다.

(윈도우 E: 드라이브 처럼)

# 현재 파일시스템들의 UUID와 TYPE을 확인
$ blkid
UUID와 TYPE을 저장해줍니다.
$ vi /etc/fstab

UUID= "aaaaaaaa" /xvdb ext4 defaults,nofail 0 2 한 줄 추가해줍니다.
# /etc/fstab에 있는 파일시스템 전체를 mount
$ mount -a
# 리눅스 시스템 디스크 사용량 확인
$ df -h

연결 확인 완료

웹 취약점 검사를 위해 OWASP ZAP – Download (zaproxy.org)를 설치를 진행하던 중 해당 오류가 발생 하였습니다.

Java Downloads | Oracle jdk 설치 후 해당 .exe 파일을 연결해주니 해당 오류가 사라졌습니다.

 

오류 화면

 

AWS CloudWatch는 애플리케이션을 모니터링할 수 있도록 해주는 서비스 입니다.

 

하지만 기본적으로 CPU 사용률, 디스크 I/O, 네트워크 부하 등 기본 지표는 제공을 하나

인스턴스 메모리 및 운영체제 디스크 사용률과 같은 운영체제의 지표는 가져오지 못합니다.

이를 위해서 CloudWatch Agent를 설치하여 메모리와 디스크 사용률을 가져올 수 있는 방법을 정리해보려고 합니다.

 

Linux(CentOS) 운영체제에서 진행해보겠습니다.

 

1. Aws IAM 역할 만들기

 

1) IAM 접속 > 역할 > 역할 생성 > AWS 서비스 > EC2 > CloudWatchAgentServerPolicy 

역할 생성
CloudWatchAgentServerPolicy 추가

2) 원하는 EC2 인스턴스에 IAM 역할을 수정해줍니다.


2. CentOS CloudWatchAgent 설치

 

1) CloudWatchAgent(amazon-cloudwatch-agent) 설치 합니다.

sudo yum install -y amazon-cloudwatch-agent

 

2) 설치된 마법사 파일을 찾아냅니다.

sudo find / -name amazon-cloudwatch-agent-config-wizard

 

3) 경로 이동 후 마법사 파일을 실행합니다.

cd /opt/aws/amazon-cloudwatch-agent/bin/
sudo ./amazon-cloudwatch-agent-config-wizard

4) Log는 모니터링하지 않고 CPU, 메모리만 나오도록 진행합니다.

$ /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
================================================================
= Welcome to the Amazon CloudWatch Agent Configuration Manager =
=                                                              =
= CloudWatch Agent allows you to collect metrics and logs from =
= your host and send them to CloudWatch. Additional CloudWatch =
= charges may apply.                                           =
================================================================
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? WARNING: CollectD must be installed or the Agent will fail to start
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?
1. yes
2. no
default choice: [1]:
1
Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metrics if the info is available?
1. yes
2. no
default choice: [1]:
1
Do you want to aggregate ec2 dimensions (InstanceId)?
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 resolution 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": "root"
	},
	"metrics": {
		"aggregation_dimensions": [
			[
				"InstanceId"
			]
		],
		"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
			}
		}
	}
}
Are you satisfied with the above config? Note: it can be manually customized after the wizard completes to add additional items.
1. yes
2. no
default choice: [1]:
1
Do you have any existing CloudWatch Log Agent (http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html) 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": "root"
	},
	"logs": {
		"logs_collected": {
			"files": {
				"collect_list": [
					{
						"file_path": "/var/log/nginx/access.log",
						"log_group_name": "access.log",
						"log_stream_name": "{instance_id}",
						"retention_in_days": -1
					}
				]
			}
		}
	},
	"metrics": {
		"aggregation_dimensions": [
			[
				"InstanceId"
			]
		],
		"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.

 

5) 마법사로 만들어진 json 파일 호출합니다.

sudo ./amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 fil
e://opt/aws/amazon-cloudwatch-agent/bin/config.json -s

6) Agent를 실행시켜주세요.

-- agent 상태
sudo amazon-cloudwatch-agent-ctl -m ec2 -a status

-- agent 실행
sudo amazon-cloudwatch-agent-ctl -m ec2 -a start

 

7) CloudWatch > 모든 지표 정상동작 확인

정상 동작 확인

감사합니다.😊

'Server > AWS' 카테고리의 다른 글

[linux] MongoDB AWS S3 백업하기  (0) 2023.08.07
[Windows] Aws CloudWatch Memory 및 용량 확인  (0) 2023.04.12
AWS Global Accelerator란?  (0) 2023.03.24

AWS CloudWatch는 애플리케이션을 모니터링할 수 있도록 해주는 서비스 입니다.

 

하지만 기본적으로 CPU 사용률, 디스크 I/O, 네트워크 부하 등 기본 지표는 제공을 하나

인스턴스 메모리 및 운영체제 디스크 사용률과 같은 운영체제의 지표는 가져오지 못합니다.

이를 위해서 CloudWatch Agent를 설치하여 메모리와 디스크 사용률을 가져올 수 있는 방법을 정리해보려고 합니다.


Windows 운영체제에서 진행해보겠습니다.

 

1. Aws IAM 역할 만들기

 

1) IAM 접속 > 역할 > 역할 생성 > AWS 서비스 > EC2 > CloudWatchAgentServerPolicy 

역할 생성
CloudWatchAgentServerPolicy 추가

2) 원하는 EC2 인스턴스에 IAM 역할을 수정해줍니다.


2. Windows CloudWatchAgent 설치

 

1) Windows PowerShell 관리자 권한 실행을 해줍니다.


2) CloudWatchAgent 설치 파일을 다운해주세요.

Invoke-WebRequest https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/amazon-cloudwatch-agent.msi -OutFile C:amazon-cloudwatch-agent.msi

 

3) 해당 설치 파일을 실행해주세요.

msiexec /i amazon-cloudwatch-agent.msi

 

4) Agent를 실행시켜주세요.

상태 확인
& $Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1 -m ec2 -a status

실행
& $Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1 -m ec2 -a start

 

5) 해당 위치로 접근하여 cw-config.json파일을 만들어주세요.

{
    "agent": {
        "metrics_collection_interval": 60,
        "region": "ap-northeast-2",
        "logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log",
        "debug": false
    },
    "metrics": {
        "namespace": "Windows/CloudWatchAgent",
        "metrics_collected": {

            "LogicalDisk": {
                "measurement": [
                    {
                        "name":"% Free Space",
                        "rename":"DiskFreeSpaceUtilization",
                        "unit":"Percent"
                    }

                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "C:"
                ]
            },
            "Memory": {
                "measurement": [
                    {
                        "name":"% Committed Bytes In Use",
                        "unit":"Percent"
                    }
                ],
                "metrics_collection_interval": 60
            }

        },
        "append_dimensions": {
            "InstanceId": "${aws:InstanceId}"
        }
    }
}

 

6) 해당 json 파일을 실행해주세요.

& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\cw-config.json"

 

7) CloudWatch > 모든 지표 정상동작 확인

정상 동작 확인

감사합니다.😊

'Server > AWS' 카테고리의 다른 글

[linux] MongoDB AWS S3 백업하기  (0) 2023.08.07
[CentOS] Aws CloudWatch Memory 및 용량 확인  (0) 2023.04.13
AWS Global Accelerator란?  (0) 2023.03.24

+ Recent posts