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 방식

          aws cli 설치 이후 powershell이나 cmd에서 "aws --version" 명령어가 인식되어야 함.

  • Cloudwatch agent 프로필 등록(region, data format등의 AmazonCloudWatchAgent 프로필을 생성하기 위함)
    • "aws configure --profile AmazonCloudWatchAgent" 명령어 입력 후 region은 ap-northeast-2, format은 json으로 설정
  • 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 권한 설정 및 에이전트 실행 명령어 옵션이 상이함.

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

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance.html

+ Recent posts