CloudWatch
CloudWatch 지표
- AWS 모든 서비스에 대한 지표를 제공합니다.
- 지표 (Metric)
- 모니터링할 변수입니다.
- 이름 공간(namespace)에 속합니다.
- 지표의 속성은 배열이 됩니다.
- 지표당 10개의 배열을 선택할 수 있습니다.
- 지표에는 타임스탬프가 있습니다.
- CloudWactch 대시보드를 만들 수 있습니다.
EC2 세부 모니터링
- EC2 인스턴스는 5분마다 지표를 가집니다.
- 비용을 추가하면, 1분마다 지표를 가질 수 있습니다.
- 지표의 변화에 더 빨리 대응하고 더 빨리 스케일 아웃해야 할 때 ASG에 이점을 제공합니다.
- 프리 티어로는 세부 모니터링 지표를 열 개 얻을 수 있습니다.
- 중요한 점은 EC2 메모리 사용량인
RAM이 푸시 되려면 꼭 사용자 지정 지표인
인스턴스가 푸시해야 합니다.
CloudWatch Custom Metrics
- CloudWatch에서 직접 지표를 정의해 사용자 지정 지표를 얻을 수도 있습니다.
- put-metric-data라는 API 호출을 사용해서 말이죠.
- 세그먼트 지표에 Instance.id나 Environment.name 같은 배열을 추가할 수 있습니다.
- 두 값을 가진
storage-resolution
이라는 API 매개변수를 통해 지표 해상도를 지정할 수 있습니다.
- 기본 60초를 1/5/10/30초로 설정 가능합니다.
- 비용이 증가합니다.
- 사용자 지정 지표의 좋은 점은
과거나 미래의 지표를 푸시해도 작동한다는 것입니다.
CloudWatch Dashboards
- 주요 지표와 경보에 접근할 수 있습니다.
- 글로벌
다른 AWS 계정이나 다른 리전
의 그래프도 포함할 수 있습니다.
- 대시보드에서 시간대와 시간 범위를 바꿀 수도 있습니다.
- 자동 새로고침을 설정할 수도 있습니다.
- AWS 계정이 없는 사람들과 대시보드를 공유할 수도 있습니다.
- 무료로 제공되는 3개의 대시보드는 지표를 50개까지 넣을 수 있습니다.
CloudWatch Logs
- 로그 그룹
- 임의의 이름으로 보통 애플리케이션을 나타냅니다.
- 로그 스트림
- 애플리케이션 내 인스턴스나 다양한 로그 파일명 또는 컨테이너 등을 나타냅니다.
- 로그 만료일도 정의할 수 있습니다.
- 로그가 영원히 만료되지 않게 하거나 일정 기간 후 만료되게 할 수 있습니다.
- CloudWatch Logs는 로그들 보낼 수 있다. 다음으로 :
- Amazon S3
- Kinesis Data Streams
- Firehose
- Lambda
- ElasticSearch
CloudWatch Logs - Sources
SDK
, CloudWatch Logs 에이전트
, 통합 CloudWatch 에이전트
를 통해 로그를 보낼 수 있습니다.
Elastic Beanstalk
는 애플리케이션의 로그를 CloudWatch에 전송하고 ECS는 컨테이너의 로그를 CloudWatch에 전송합니다.
Lambda
는 함수 자체에서 로그를 보냅니다.
VPC Flow Logs
는 VPC 메타데이터 네트워크 트래픽 로그를 보냅니다.
API Gateway
CloudTrail
은 필터링해 로그를 보낼 수 있습니다.
Route53
은 모든 DNS 쿼리를 로그로 저장합니다.
CloudWatch Logs Metric Filter & Insights
CloudWatch Logs
에서 필터 표현식을 쓸 수 있습니다.
- 로그 내 특정 IP를 찾을 수 있습니다.
ERROR
라는 문구를 가진 모든 로그를 찾을 수 있습니다.
- 그렇게 만들어진 지표는 CloudWatch 경보로 연동할 수 있습니다.
- CloudWatch Logs Insights
- 이 기능을 통해 로그를 쿼리하고 이 쿼리를 대시보드에 바로 추가할 수 있습니다.
S3 Expert
- CloudWatch에서 S3로 보낼 때 내보내기가 가능해질 때까지 최대 12시간은 걸릴 수 있습니다.
- API 호출은 CreateExportTask입니다.
- 실시간이 아닙니다.
- CloudWatch Logs에서 로그를 스트림하고 싶다면
구독 필터
를 사용해야 합니다.
CloudWatch Logs Subscriptions (구독 필터)
CloudWatch Logs로 여러 계정과 리전간 로그를 집계
CloudWatch Logs for EC2
- EC2 인스턴스에서 CloudWatch로는
기본적으로
어떤 로그도 옮겨지지 않습니다.
- EC2 인스턴스에 에이전트라는 작은 프로그램을 실행시켜 원하는 로그 파일을 푸시해야 합니다.
- EC2 인스턴스에 로그를 보낼 수 있게 해주는 IAM 역할이 있어야 합니다.
- 에이전트는 온프레미스 환경에서도 셋업될 수 있습니다.
CloudWatch Logs Agent & Unified Agent
- 가상 서버들을 위한 것입니다.
- CloudWatch Logs Agent
- 오래된 버전
- CloudWatch Logs로 로그만 보냅니다.
- CloudWatch Unified Agent
- 프로세스나 RAM 같은 추가적인 시스템 단계 지표를 수집합니다.
- CloudWatch Logs에 로그를 보냅니다.
- 지표와 로그를 둘 다 사용하기 때문에 통합 에이전트인 겁니다.
- SSM Parameter Store를 이용해서 에이전트를 쉽게 구성할 수 있습니다.
CloudWatch Unified Agent – Metrics
EC2 / Linux 서버에 설치하면
- CPU 지표 (active, guest, idle, system, user, steal)
- 디스크 지표 (free, used, total),
- 디스크 IO (writes, reads, bytes, iops)
- RAM (free, inactive, used, total, cached)
- 넷 상태 (number of TCP and UDP connections, net packets, bytes)
- 프로세스 (total, dead, bloqued, idle, running, sleep)
- 스와프 공간 (free, used, used %)
의 지표를 확인할 수 있습니다.
EC2에서 곧장 디스크, CPU, 스와프나 메모리가 아닌
네트워크에 대한 지표를 얻을 수 있긴 하지만
상당히 포괄적인 지표만 얻을 수 있는데요
세부 지표를 얻고 싶다면
통합 CloudWatch 에이전트를 이용하시면 됩니다
CloudWatch Alarms
- 경보는 지표에서 알림을 트리거할 때 사용됩니다.
- sampling, %, max, min 등의 다양한 옵션을 추가해 복잡한 경보를 정의할 수도 있습니다.
- 세 상태 :
- OK
- INSUFFICIENT_DATA
- ALARM
- 기간 :
- 경보가 지표를 평가하는 기간을 말합니다.
- 고해상도 사용자 지정 지표에도 적용될 수 있는데
10초, 30초 또는 60초의 배수로 설정될 수 있습니다.
CloudWatch Alarm Targets
- 인스턴스를
멈추거나
, 삭제하거나
, 재시작하거나
, 복구하는 등의 동작
Auto Scaling 동작의 트리거
입니다.
SNS 서비스에 알림
을 보내는 겁니다.
EC2 인스턴스 복구
-
상태 점검
- 인스턴스 상태
- 시스템 상태
* 하드웨어 점검
-
회복
- EC2 인스턴스 복구를 실행해 EC2 인스턴스를 다른 호스트로 옮기는 등의 작업을 할 수 있습니다.
CloudWatch Events
- 이벤트 패턴
- AWS 서비스 내의 이벤트를 인터셉트할 수 있습니다.
- EC2 인스턴스 스타트나 CodeBuild 실패 Amazon S3나 Trusted Advisor의 이벤트
- CloudTrail의 통합을 통해 어떤 API 호출도 인터셉트할 수 있습니다.
- 예약이나 Cron을 생성할 수도 있습니다.
- 예를 들어 매 4시간마다 이벤트를 생성하려 한다면,
- 이벤트에 대한 JSON 페이로드가 생성되어 대상으로 이동할 겁니다.
- Lambda, Batch, ECS task 같은
컴퓨팅
- SQS, SNS, Kinesis DS DF 등의
통합
- Step Functions 등의
오케스트레이션
- SSM나 EC2 동작과 같은 유지
보수
Amazon EventBridge
- Amazon EventBridge는 CloudWatch Events의 차세대 버전입니다.
기본적으로 EventBridge
에 포함된 이벤트 버스는 AWS 서비스에서 생성된 것으로
이 버스는 CloudWatch 이벤트에서 사용하는 것과 동일합니다.
파트너 이벤트 버스
는 소프트웨어 서비스 공급자 또는 Zendesk, DataDog, Segment, Auth0와 같은 앱에서 이벤트를 받을 수 있습니다.
사용자 지정 이벤트 버스
는 애플리케이션에 이벤트를 전송할 수도 있습니다.
- 이벤트 버스는 다른 AWS 계정에서도 접근할 수 있으며 이는 리소스 정책을 통해 확인할 수 있습니다.
- 모든 이벤트를 아카이빙하거나 이벤트 버스에 필터를 적용해 저장하려는 기간을 지정할 수 있습니다.
- 아카이빙된 이벤트를 재생해서 과거에 수행된 이벤트 결과를 확인할 수 있어 유용합니다.
Amazon EventBridge – Schema Registry
- EventBridge에 이벤트가 전송되면 서비스 자체에서 버스 내 이벤트를 분석하고 스키마(schema)를 추론합니다.
- 스키마 레지스트리(Schema Registry)에서 코드를 생성하고 앱은 코드를 통해 이벤트 버스 내 데이터의 구조를 인식합니다.
- UI는 오른쪽과 같고 모든 스키마는 버전이 기록됩니다.
Amazon EventBridge – Resource-based Policy
-
리소스 기반 정책이 있어 버스 자체에 특정 권한을 부여할 수 있습니다.
-
예시: 다른 AWS 계정 또는 리전 이벤트를 허용/거부
이를 통해 핵심 이벤트 버스로 모든 이벤트를 통합하여 기관이나 다른 지역의 이벤트를 한 곳에 종합할 수 있습니다.
Amazon EventBridge vs CloudWatch Events
- EventBridge는 CloudWatch Events에 기반해 기능을 확장한 차세대 버전입니다.
- 백그라운드에서는 같은 서비스 API와 엔드 포인트 그리고 같은 서비스 인프라를 사용합니다.
- EventBridge에서는 이벤트 버스를 확장하여 사용자 지정 애플리케이션 또는 타사 SaaS 앱에도 사용할 수 있습니다.
- 스키마 레지스트리 기능과 더불어 이벤트 재생, 아카이빙 리소스 기반 정책도 갖고 있습니다.
- EventBridge는 새로운 이름과 새로운 기능을 가진 CloudWatch Events의 차세대 버전입니다.
- EventBridge와 CloudWatch Events를 혼용해서 사용하지만 특정 EventBridge 기능을 가리킬 때는 별도로 언급하겠습니다.
AWS CloudTrail
- 거버넌스(Governance)와 규정 준수 그리고 감사권을 부여합니다.
- 동작이 기본값으로 설정돼 있고요.
- AWS 계정 내의 모든 이벤트 기록과 다음 서비스에 의한 API 호출 기록을 볼 수 있습니다.
- 콘솔, SDK, CLI 그 외 AWS 서비스들
- 모든 로그를 CloudTrail에서 볼 수 있습니다.
- 이 로그들을 CloudWatch Logs나 Amazon S3로 옮길 수 있습니다.
- 또한 모든 리전과 단일 리전에 추적을 적용할 수 있습니다.
- 모든 리전에서 축적된 이벤트의 모든 기록을 S3 버킷과 같은 특정 서비스에 넣을 수 있습니다.
CloudTrail Events
- 관리 이벤트
- AWS 계정 내 리소스에 작동한 연산을 나타냅니다.
- 예를 들어
- 누군가 보안을 구성하려면, IAM AttachRolePolicy라는 API 코드를 쓸 것입니다.
- 서브넷을 생성해도 마찬가지로 표시될 것이고 로깅을 셋업해도 볼 수 있습니다.
- 리소스나 AWS 계정을 수정하는 모든 것이 CloudTrail에 표시됩니다.
- 기본적으로 추적은 관리 이벤트를 항상 로그하게 구성돼 있습니다.
- 관리 이벤트는 두 가지로 나눌 수 있는데 먼저 리소스를 수정 않는 읽기 이벤트가 있습니다.
- 데이터 이벤트
- 기본적으로 데이터 이벤트는 로깅되지 않습니다.
- GetObject나 DeleteObject와 같은 Amazon S3의 객체 활동을 말합니다.
- AWS Lambda 함수 실행 활동입니다.
- CloudTrail Insights 이벤트
- CloudTrail Insights는 유료로 활성화되지만 이벤트를 분석합니다.
- 불명확한 리소스 프로비저닝
- 서비스 한계 도달
- AWS IAM 동작 과다 사용
- 주기적 유지 보수 활동 빈틈 같은 것
- CloudTrail은 먼저 정상적인 관리 활동을 분석해서 기준을 세우고 그 후 들어오는 쓰기 이벤트를 계속해서 분석합니다.
- 분석해서 기준을 세우고 그 후 들어오는 쓰기 이벤트를 계속해서 분석합니다.
- 이 Insights 이벤트는 CloudTrail 콘솔에 표시됩니다.
- 필요하면 Amazon S3로도 보내집니다.
- EventBridge 이벤트가 생성됩니다.
CloudTrail Events Retention
- 기본적으로 CloudTrail 내 이벤트는 90일까지 저장됩니다.
- 그 이후에는 삭제됩니다.
- 보존 기간을 늘리기 위해서는 이벤트를 S3에 로그해 즉, S3에 보내 Athena를 사용해 이벤트를 분석하면 됩니다.
AWS Config
- Config는 AWS 내 리소스에 대한 감사와 규정 준수 여부를 기록할 수 있게 해주는 서비스입니다.
- 설정된 규칙에 기반해 구성과 구성의 시간에 따른 변화를 기록할 수 있으며 이를 통해 필요할 경우 인프라를 빠르게 롤백하고 문제점을 찾아낼 수 있습니다.
- AWS Config로 해결되는 Q :
- '보안 그룹에 제한되지 않은 SSH 접근이 있나?'
- '버킷에 공용 액세스가 있나?'
- '시간이 지나며 변화한 ALB 구성이 있나?'
- Config는 리전별 서비스이기 때문에 모든 리전별로 구성해야 합니다.
- 데이터를 중앙화하기 위해 리전과 계정 간 데이터를 통합할 수 있습니다.
- 모든 리소스의 구성을 S3에 저장해 나중에 분석할 수도 있습니다.
Config Rules
- AWS 관리형 Config 규칙이 있고 여기에는 75종의 규칙이 있습니다.
- 스스로 Config 규칙을 만들어도 됩니다.
- 예를 들어 각 EBS 디스크가 gp2 유형인지 평가할 수 있습니다.
- 개발 계정의 EC2 인스턴스가 t2.micro 유형인지 평가할 수도 있습니다.
- Config 규칙은 규정 준수를 위한 것이지 어떤 동작을 미리 예방하지는 못합니다.
- Config는 결제해야 하며 굉장히 비싸질 수 있습니다.
- 3센트를 지불해야 하고 리전당 Config 규칙 평가별로 0.1센트를 내야 합니다.
-
Config 내에서 행동을 차단할 수는 없지만,
SSM 자동화 문서를 이용해서 규정을 준수하지 않는 리소스를 수정할 수 있습니다.
- SSM 문서가 IAM 액세스 키를 비활성화합니다
-
AWS 관리형 문서를 사용하든 본인만의 자동화 문서를 만들어 사용하든
규정을 준수하지 않는 리소스를 수정할 수 있다는 겁니다
-
만약 계속 스크립트를 하고 싶다면
람다 함수를 실행하는 문서를 생성해서 원하는 작업을 수행할 수도 있죠
수정 작업은 재시도 될 수 있습니다.
-
리소스를 자동 수정했음에도 여전히 규정을
미준수한다면 5번
까지 재시도될 수 있습니다
Config Rules - Notifications
- EventBridge를 사용해 리소스가 규정을 미준수했을 때마다 알림을 보낼 수 있습니다.
- 모든 구성 변경과 모든 리소스의 규정 준수 여부 알림을 Config에서 SNS로 보낼 수도 있습니다.
CloudWatch vs CloudTrail vs Config
- CloudWatch
- 성능 모니터링 (지표, CPU, 네트워크, etc) 그리고 대시보드
- 이벤트 & 경고
- 로그 집계 및 분석 도구도 사용할 수 있습니다.
- CloudTrail
- 계정 내에서 만든 API에 대한 모든 호출을 기록합니다.
- 특정 리소스에 대한 추적도 정의할 수 있습니다.
- 글로벌 서비스
- Config
- 구성 변경을 기록하고
- 규정 준수 규칙에 따라 리소스를 평가합니다.
- 변경과 규정 준수에 대한 타임라인을 멋진 UI로 보여줍니다.
Elastic Load Balancer를 통해
-
CloudWatch
- 들어오는 연결 수를 모니터링합니다.
- 오류 코드 수를 시간 흐름에 따라 비율로 시각화할 수 있으며
- 로드 밸런서의 성능을 볼 수 있는 대시보드도 만들 수 있습니다
-
Config
- 로드 밸런서에 대한 보안 그룹 규칙을 추적해
누구도 수상하게 행동하거나 무언가 변경하지 못하게 하려고 사용합니다.
- 누군가 SSL 인증서 등을 수정하지는 않는지 감시하기 위해
로드 밸런서의 구성 변경을 추적하는 데 사용할 수도 있습니다.
- SSL 인증서가 로드 밸런서에 항상 할당되어 있어야 한다는 규칙을 만들어
암호화되지 않은 트래픽이 로드 밸런서에 접근하지 못하게 할 수도 있습니다.
-
CloudTrail
- 누가 API를 호출하여 로드 밸런서를 변경했는지 추적합니다.
From
AWS Certified Solutions Architect Associate 시험합격!