참고
Amazon CloudWatch
NOTE
모니터링은 정말로 중요한 개념이다!
•
무슨일이 일어나는지 로그와 지표, 추적을 통해 AWS 인프라에 누가 무엇을 만들었는가 감시
•
유지보수에 꼭 필요한 개념!
•
CloudWatch 경보 액션을 사용해 인스턴스를 재부팅할 수 있다.
CloudWatch Metrics
NOTE
CloudWatch는 AWS의 모든 서비스에 대한 지표(Metrics)를 제공한다!
metric을 스트리밍해서 분석하거나 저장!
•
Metics는 namespaces에 속하고, 서비스당 namespace는 하나이다.
•
Metics의 속성으로 측정 기준(Dimension)이 있다.
◦
CPU 사용률에 대한 지표 - 특정 인스턴스 ID, 특정환경 등
◦
Metics당 최대 10개의 Dimension
•
Metics는 시간을 기반으로 하기 때문에 타임스탬프가 꼭 있어야 한다.
•
CloudWatch 사용자 지정 Metics 생성 가능
CloudWatch Logs
NOTE
AWS에 로그를 저장하는 최고의 저장소!
•
로그 그룹
◦
임의의 이름으로 보통 애플리케이션을 나타냄
•
로그 스트림
◦
애플리케이션 내 인스턴스나 다양한 로그 파일명 또는 컨테이너 등을 나타냄
•
로그 만료일을 정의할 수 있는데, 영원히 만료되지 않게 하거나 일정 기간후 만료되게 설정이 가능하다.
•
이 로그들은 S3, KDS, KDF, Lambda, ElasticSearch 등으로 전송할 수 있음
저장되는 소스
•
ECS
◦
컨테이너의 로그를 CloudWatch로 전송
•
API Gateway
◦
받는 모든 요청을 보냄
•
AWS Lambda
◦
함수 로그에서 수집
메트릭 필터 & 통계
이런식으로 함
•
CloudWatch Logs는 필터 표현식을 사용할 수 있다.
◦
ex) 로그 내에서 특정 IP찾기
•
메트릭 필터를 사용하여 CloudWatch 경보를 트리거할 수 있다.
CloudWatch Logs 에이전트
NOTE
CloudWatch Logs for EC2
CloudWatch Logs로 이동..
•
EC2 인스턴스에서 CloudWatch로는 기본적으로 어떤 로그도 옮겨지지 않음
•
EC2 인스턴스에 CloudWatch Logs 에이전트를 실행시켜 원하는 로그 파일을 푸쉬해야 함
•
EC2 인스턴스에 로그를 보낼 수 있게 해주는 IAM역할 설정이 필요
•
온프레미스 환경에서도 가능하다!
CloudWatch Logs Agent & Unfied Agent
•
EC2 인스턴스나 온프레미스 서버 같은 가상 서버를 위한 것
•
CloudWatch Logs Agent
◦
오래된 버전
◦
CloudWatch Logs로 로그만 전송
•
CloudWatch Unified Agent
◦
프로세스나 RAM등과 같은 추가적인 시스템 단계 지표를 수집
◦
CloudWatch Logs에 로그 전송
CloudWatch Unified Agent - Metrics
•
통합 CloudWatch 에이전트를 EC2 인스턴스나 Linux서버에 설치하면 지표 수집 가능
•
CPU, Disk, Ram, Netstat, 프로세스 지표등을 확인할 수 있음!
CloudWatch Alarams
NOTE
특정 지표에 대해서 알람을 트리거할 때 사용한다!
주로 이 3개에서 지표를 검사하고 알람을 뛰운다.
•
다양한 옵션(%, 최소값, 최대값 등)을 추가해서 복잡한 경보를 정의할 수 있음
•
10초, 30초, 60초의 배수로 설정이 가능
•
Amazon CloudWatch 복합 경보를 사용하여 여러 경보를 결합함으로써 경보 노이즈를 줄이고 중요한 운영 문제에 집중 가능함
Amazon Event Bridge
NOTE
CloudWatch Events의 새 버전이며, 서버리스 이벤트 버스이다!
여러 AWS Resource들의 이벤트를 받고 그걸 처리함
•
클라우드에서 Cron 작업을 예약할 수 있음
•
이벤트 패턴에 반응
◦
ex) 누군가가 root 계정을 사용하면 알람을 받는다
•
대상이 다양하면 Lambda 함수를 트리거해서 SQS, SNS 메세지 등을 보낼 수 있음
•
이벤트는 세부 사항을 나타내는 JSON 문서로 생성
•
기본적으로 EventBridge에 포함된 기본 이벤트 버스는 AWS 서비스에서 생성된 것
•
파트너 이벤트 버스
◦
소프트웨어 서비스 제공자와 같은 파트너와 통합된 AWS 서비스에서 생성된 것
◦
Zendesk, DataDog, Auth0 ..
•
사용자 지정 이벤트 버스
◦
애플리케이션의 자체 이벤트를 사용자 지정 이벤트 버스로 전송
CloudWatch 인사이트 유형
NOTE
CloudWatch Container Insight
•
컨테이너로부터 지표와 로그를 수집, 집계, 요약하는 서비스
•
EKS나 EC2의 쿠버네티스에서 사용할 경우 컨테이너화된 버전의 CloudWatch 에이전트를 사용해야 한다.
CloudWatch Lambda Insights
•
서버리스 애플리케이션을 위한 모니터링과 트러블 슈팅 솔루션을 위한 세부 지표 제공
•
Lambda 함수 옆에서 실행되며 Lambda Insights라는 대시 보드를 생성해 함수의 성능을 모니터링 한다.
CloudWatch Contributor Insight
•
Contributor 데이터를 표시하는 시계열 데이터를 생성하고 로그를 분석하는 서비스
•
VPC, DNS 로그 등 AWS가 생성한 모든 로그에서 동작
•
CloudWatch Logs를 통해 트래픽을 많이 생성하는 N개의 IP주소를 찾을 수 있음
CloudWatch Application Insights
•
모니터링하는 애플리케이션의 잠재적인 문제와 진행 중인 문제를 분리할 수 있도록 자동화된 대시보드 제공
•
EBS, RDS, SQS, S3, EKS.. 다양한 AWS 리소스에 연결
AWS CloudTrail
NOTE
AWS 계정에 대한 거버넌스, 규정 준수 및 감시를 제공한다!
AWS의 작업들을 모두 감시한다고 생각하면 좋다!
•
AWS 계정 내에서 이루어진 이벤트/API 호출 기록을 가져온다
◦
console
◦
SDK
◦
CLI
◦
AWS 서비스
•
CloudTrail의 로그를 CloudWatch Logs나 S3로 옮길 수 있음
•
이벤트는 기본적으로 90일간 저장되고 이후에 삭제
•
기본 기간 이상으로 이벤트를 보존하기 위해서는 S3로 전송해서 로그를 기록하고 Athena를 사용해 분석한다!
CloudTrail Events
NOTE
관리 이벤트
•
AWS 계정의 리소스에서 수행되는 작업을 나타냄
•
리소스나 AWS 계정을 수정하는 모든 작업이 CloudTrail에 표시된다!
•
추적은 기본적으로 관리 이벤트를 기록하게 구성되어 있다.
데이터 이벤트
•
기본적으로 데이터 이벤트는 고볼륨 작업이므로 로깅되지 않는다.
•
AWS Lambda 함수 실행 활동
•
테이블의 Amazon DynamoDB 객체 수준 API 활동
CloudTrail Insights 이벤트
•
CloudTrail Insights는 비용을 지불하고 활성화되면 이벤트를 분석해 계정 내 특이활동 감지
◦
부정확한 리소스 프로비저닝, 서비스 한계 도달, IAM 동작 과다사용 등..
•
정상적인 관리 활동을 분석하고 기준선을 생성한 뒤 모든 쓰기 이벤트를 분석하여 특이한 패턴을 탐지한다
AWS Config
NOTE
AWS내 리소스에 대한 감시와 규정 준수 여부를 기록할 수 있게 해주는 서비스!
•
AWS Config로 해결할 수 있는 문제
◦
보안 그룹에 제한되지 않은 SSH 접근이 있는가?
◦
버킷에 공용 액세스가 있는가?
◦
시간이 지나며 변화한 ALB 구성이 있는가?
•
리전 단위 서비스이므로 모든 리전별로 구성해야 한다.
•
모든 리소스의 구성을 S3에 저장해서 Athena와 같은 서버리스 쿼리 엔진을 통해 분석할 수 있다.
AWS Config 규칙
NOTE
•
AWS Lambda를 이용해 사용자 정의 Config 규칙을 만들 수 있다.
◦
EBS 디스크가 gp2 유형인가?
◦
개발 계정에서 EC2 인스턴스가 t2.micro 유형인가?
•
AWS Config 규칙은 규정 준수를 위한 것이고 어떤 동작을 미리 예방하거나 차단할 수 없다.
•
AWS Config 규칙은 대신 규정을 준수하지 않는 리소스를 수정및 알람을 보낼 수 있다!
◦
리소스를 자동 수정했음에도 미준수한다면 5번까지 재시도
◦
규정을 미준수 했을때 마다 알람을 보낼 수 있음
CloudWatch vs CloudTrail vs Config
NOTE
ELB의 경우 3가지가 어떻게 동작하는지 알아본다!
CloudWatch
•
들어오는 연결 수를 모니터링
•
오류 코드 수를 시간 흐름에 따라 비율로 시각화
CloudTrail
•
누가 API를 호출하여 로드 밸런서를 변경했는지 추적
Config
•
로드 밸런서에 대한 보안 그룹 규칙을 추적해 무언가 수정하지 못하게 사용
•
SSL 인증서가 로드밸런서에 할당되어야 한다는 규칙을 만들어 암호화되지 않은 트래픽 차단