AWS Cloudwatch
AWS의 리소스 상태를 실시간으로 모니터링 할 수 있는 서비스로, 데이터 수집, 알람 생성, 모니터링도구(로그, 대쉬보드)를 제공한다.(구체적인 설명은 아래 링크에 잘 나와있습니다.)
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html
AWS Cloudwatch 구조
애플리케이션 환경에서 agent를 설치 후 데이터를 전송하면, aws에서 metric이라는 이름으로 수집되는데, 해당 메트릭은 Namespace 내부의 Dimension(차원) 안에 저장되어있다. 데이터를 가공하기 위한 다양한 math expression이 제공되며 가공처리 후 최종적으로 대시보드에 뿌려주게 되는 구조로 이루어져있다.
1. Window server -On premise 방식
- RDP를 이용해 winodw 서버로 접속(ip, id, password)
- cmd를 열고 Cloudwatch 에이전트 / aws cli 설치
aws cli 설치 이후 powershell이나 cmd에서 "aws --version" 명령어가 인식되어야 함.
- Cloudwatch agent 프로필 등록(region, data format등의 AmazonCloudWatchAgent 프로필을 생성하기 위함)
- "aws configure --profile AmazonCloudWatchAgent" 명령어 입력 후 region은 ap-northeast-2, format은 json으로 설정
- agent의 aws resource 접근 권한 설정
- IAM권한 설정(agent 구성 파일 생성)
- 아래 명령을 입력하여 구성 파일 생성
- cd "C:\Program Files\Amazon\AmazonCloudWatchAgent".\amazon-cloudwatch-agent-config-wizard.exe
- 명령어를 입력 하면 구성 파일 설정을 위한 옵션들을 선택하게 됨.(OS, 지표 타입, 전송 주기 등등)
- 우선 대부분의 진행 옵션을 default로 선택하되 Log Agent/ log files/log/ SSM Parameter store와 관련된 옵션은 모두 No로 설정.
- wizard실행 방식은 json 파일의 기본 format을 사용하기 위해 사용되고, 본인이 직접 config.json 파일을 생성하며 편집해도 됨.
- 아래 명령을 입력하여 구성 파일 생성
- 구성 파일 편집
- cloudwatch에 연동을 시키면 default namespace가 생성되는데, 각 서버에 따라 이름을 따로 지어주기 위해 이전 단계를 통해 생성된 json 파일을 편집함(일단 이름만 변경)
- 현재 디렉토리 위치에 있는 config.json 파일을 open한 뒤 namespace설정 구문 한 줄을 입력(winserver1은 본인이 설정한 namespace임.)
- cloud watch agent 실행
- 실행: & "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m onPremise -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json" - fetch-config: config.json
- 상태 조회(stopped/running): fetch-config를 status로 변경
- 중지: fetch-config를 stop으로 변경
- agent 실행 로그 파악
- ubuntu는 /opt/aws/amazon-cloudwatch-agent/logs 위치에 로그 파일이 존재. 이 파일을 조회하여 agent의 동작 상태 확인(ex. config.json 파일 문법 오류, 기타 에러 등)
- windows는 C:\ProgramData\Amazon\AmazonCloudWatchAgent\Logs\amazon-cloudwatch-gent.txt
- 지표 생성 확인
- 위에서 살펴본 실행 명령의 결과로 aws cloudwatch 콘솔에 본인이 생성한 namespace의 메트릭스 정보가 뜸.
- winserver1이 생성됨(cpu, disk, network 등의 metrics 정보 존재)
- 나머지 3개의 namespace는 본인이 기존에 만들어 놓은 것.
2. Window Server -AWS EC2 방식
EC2방식은 Window/Linux 상관없이 Cloudwatchagentserverpolicy 역할을 생성 한 뒤 EC2인스턴스 페이지에서 해당 역할을 추가하면 됨. on premise방식과 유사하지만 IAM 권한 설정 및 에이전트 실행 명령어 옵션이 상이함.
- IAM 권한 설정>>https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent-commandline.html
- on premise방식의 cloudwatch agent실행 명령어 옵션 중 "onPremise"를 "ec2"로 바꿔주기만 하면 됨
- & "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json"
3. Linux -AWS EC2 방식
- cloudwatch agent 패키지 설치
- sudo yum install amazon-cloudwatch-agent
- IAM 권한 설정
- window EC2방식과 동일
- agent 구성 파일 생성
- sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
- 구성 파일 편집
- 마찬가지로 namespace를 새로 지정하려면 cd /opt/aws/amazon-cloudwatch-agent/ 디렉토리로 이동한 뒤 config.json을 open한 뒤 이전과 마찬가지로 namespace 구문 한 줄 추가 후 저장.
- cloudwatch agent실행
- 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
- 주의) 공식 문서에는 아래와 같이 나와있지만, 실제로 "file:" 뒤에 슬래쉬( / ) 2개 추가 안해주면 cloudwatch 콘솔에서 namespace가 정상적으로 생성되지 않는 이슈 존재
Reference
'AWS' 카테고리의 다른 글
AWS Cloudwatch 알람 설정 (0) | 2022.03.08 |
---|---|
AWS Cloudwatch 대시보드 생성 및 세부설정 (0) | 2022.03.08 |
AWS EC2인스턴스를 로컬 CMD창에서 ssh로 접근하기 (0) | 2021.06.05 |
AWS EC2 인스턴스와 로컬 간 파일 전송하기(FileZilla) (0) | 2021.06.05 |
AWS RDS DB 테이블 생성 및 Php와 연동하기 (0) | 2021.06.02 |