develop/AWS

[SAA] Monitoring, Audit and Performance: CloudWatch, CloutTrail, AWS Config

hsleeee 2024. 6. 23. 10:00
반응형
SMALL

1. Amazon CloudWatch

  • CloudWatch Metrics
    • CloutWatch는 AWS의 모든 서비스에 대한 지표를 제공
    • Metric(지표)는 모니터링 할 변수 (CPUUtilization, NetworkIn ...)
    • 지표는 네임스페이스에 속함
    • 지표의 속성으로 Dimenesion(측정 기준)이 있고(instanc id, environment ...), 지표 당 최대 측정 기준은 10개
    • 지표는 시간을 기반으로 하므로 타임스탬프가 꼭 있어야 함
    • 지표가 많아지면 CloudWatch 대시보드에 ㅇ추가해 모든 지표를 한 번에 확인 가능
    • CloudWatch 사용자 지정 지표 생성 가능(ex. RAM 지표)
    • 기능
      • CloudWatch Metric Streams(외부 스트리밍)
        • CloudWatch 지표를 선택한 대상으로 지속적으로 스트리밍하면 거의 실시간으로 전송도디고 지연 시간은 짧아짐
          • Amazon Kinesis Data Firehose가 대상이 될 수 있고, 해당 대상을 통해 다른 목적지로 이동 가능
          • Datalog, Dynatrace, New Reelic, Splunk, Sumo Logic 등과 같은 제 3자 서비스 제공업체도 사용 가능
        • 필요에 따라 지표를 필터링하여 일부 지표만 스트리밍 하는 옵션도 제공
  • CloudWatch Logs
    • 로그 그룹(Log Groups): 로그 그룹은 동일한 보존 기간, 모니터링 및 액세스 제어 설정을 공유하는 로그 스트림 그룹을 정의, 각 로그 스트림은 하나의 로그 그룹에 속해야 하며 일반적으로 애플리케이션을 나타내는 임의의 이름
    • 로그 스트림(Log Stream): 로그 스트림은 동일한 소스를 공유하는 로그 이벤트 시퀀스, 애플리케이션 내의 인스턴스, 로그 파일, 컨테이너 등을 나타냄
    • 로그의 유효기간을 지정할 수 있으며, 로그를 영원히 유지하거나 30일 등으로 설정할 수 있음
    • Cloudwatch Logs는 다양한 대상으로 로그를 전송 가능: Amazon S3(exports), Kinesis Data Streams, Kinesis Data Firehose, AWS Lambda, OpenSearch
    • Sources
      • SDK: SDK를 사용하여 로그를 직접 CloudWatch로 전송 가능
      • CloudWatch Logs Agent: EC2 인스턴스에서 실행되는 로그 에이전트를 사용하여 로그를 수집 가능
      • CloudWatch Unified Agent: 로그 파일 및 메트릭 데이터를 수집하기 위해 설치된 에이전트, EC2 인스턴스, 온프레미스 서버 및 컨테이너에 사용 가능
      • Elastic Beaenstalk: 애플리케이션에서 생성되는 로그 수집
      • ECS: 컨테이너화된 애플리케이션에서 생성되는 로그 수집
      • AWS Lambda: Lambda 함수의 로그 수집
      • VPC Flow logs: 가상 사설 클라우드(VPC)에서 생성되는 네트워크 흐름 로그를 수집
      • API Gateway
      • CloudTrail Based on Filter: 지정된 필터에 따라 CloudTrail 이벤트 로그를 수집
      • Route 53: DNS 쿼리 로그 수집
    • Metric Filter & Insights
      • Metric Filter
      • CloudWatch Logs는 필터 표현식을 사용하여 로그 데이터 필터링(로그에서 특정 IP 찾기, "ERROR"와 같은 항목의 발생 횟수 확인 등)
      • 지표 필터는 CloudWatch 경보를 트리거하기 위해 사용 가능
      • Insights
      • CloudWatch Logs Insights는 로그 데이터에 대한 쿼리를 수행하고 결과를 분석할 수 있는 기능 제공
      • 이를 통해 로그 데이터를 실시간으로 검색하고 분석 가능, CloudWatch 대시보드에 쿼리 결과를 추가하여 시각화 가능
      • 빠르고 효율적인 로그 분석 가능, 필요한 정보를 쉽게 추출 가능
    • CloudWatch S3 Exports
      • 로그 데이터는 내보내기가 가능해질 때 까지 최대 12시간 소요
      • API 호출은 CreateExportTask
      • 시간이 따로 정해져있어 실시간으로 작동하지 않음
      • CloudWatch Logs에서 로그를 스트림하고 싶다면 구독 필터(Logs Subscriptions)를 사용해야 함
      • Logs Subscriptions: CloudWatch Logs 상단에 적용하여 이를 목적지로 보내는 필터(https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/logs/SubscriptionFilters.html)
    • CloudWatch Logs Agent & Unified Agent
      • CloudWatch Logs for EC2
      • 기본적으로 EC2 인스턴스의 로그는 CloudWatch로 전송 X
      • 원하는 로그 파일을 전송하기 위해서는 EC2에 CloudWatch 에이전트를 실행해야 함
      • 로그를 보낼 수 있게 해주는 IAM Role이 있어야 함
      • CloudWatch Logs Agent는 온프레미스 환경에서도 설정할 수 있음
      • CloudWatch Logs Agent& Unified Agent
      • 가상 서버(EC2 instance, 온프레미스 서버 등)
      • CloudWatch Logs Agent
        • 오래된 버전의 에이전트
        • CloudWatch Logs로만 전송 가능
      • CloudWatch Unified Agent
        • RAM, 프로세스 등과 같은 추가적인 시스템 단계 지표 수집
        • CloudWatch Logs로 전송할 로그 수집
        • SSM Parameter Store를 사용하여 중앙 집중식 환경 구성
        • 지표와 로그를 둘 다 사용하기 때문에 통합 에이전트임
        • Metrics
          • Linux 서버 또는 EC2 인스턴스에서 직접 수집
          • CloudWatch 통합 에이전트가 EC2 인스턴스 모니터링보다 더 세부적이고 많은 지표를 수집
          • 어떤 지표를?
            • CPU(active, guest, idle, system, user, steal)
            • 디스크 지표(free, used, total), 디스크 IO(writes, reads, bytes, iops)
            • RAM(free, inactive, used, total, cached)
            • 넷상태(Netstat)(number of TCP and UDP connections, net packets, bytes)
            • process(total, dead, bloqued, idle, running, sleep)
            • swap space(free, used, used %)
  • CloudWatch Alarms
    • 경보는 모든 지표에 대한 알람을 트리거 하는데 사용
    • 다양한 옵션 (sampling, %, max, min ...)
    • 경보 상태
      • OK: 트리거되지 않은 상태
      • INSUFFICIENT_DATA: 상태를 결정할 데이터 부족
      • ALARM: 임계값이 위반되어 알림이 보내지는 상태
    • 기간
      • 지표를 평가하는 데 걸리는 시간 길이(초단위)
      • 고해상도 사용자 지정 지표: 10초, 30초, 또는 60초의 배수
    • Targets
      • EC2 Instance: 인스턴스를 중지, 종료, 재부팅 또는 복구하는 등의 동작
      • EC2 Auto Scaling: 스케일 OUT/IN
      • Amazon SNS: SNS 서비스에 알림
    • EC2 Instance Recovery
      • 상태 확인 (Staus Check)
      • 인스턴스 상태: ECM VM(Virtual Machine) 점검
      • 시스템 상태: 기반이 되는 하드웨어 점검
      • 복구: 특정 EC2 인스턴스를 모니터링 하다가 경보가 위반되었을 경우, EC2 인스턴스 복구를 실행해 EC2 인스턴스를 다른 호스트로 옮기는 등의 작업 가능, 이 때 동일한 사설, 공인, 탄력적 IP주소와 동일한 메타데이터, 동일한 인스턴스 배치 그룹을 가지게 됨
    • CloudWatch Alarm: Good to Know
      • 경보는 CloudWatch Logs Metrics에 기반하여 생성
      • 경보 알림 테스트시에는 set-alarm-state 라는 CLI 호출을 사용, 특정 임계값이 도달하지 않아도 경보를 트리거 하고 싶을 때 사용
      • ex) aws cloudwatch set-alam-state --alarm-name "myalarm" --state-value ALARM -state-reason "testing purposes"
  • Amazon Event Bridge(= CloudWatch Event)
    • Schedule: CRON 작업(스크립트 예약)
    • Event Pattern: 특정 작업을 수행하는 서비스에 반응하는 이벤트 규칙
    • 대상(destination)이 다양하다면 Lambda 함수를 트리거해서 SQS, SNS 메시지 등을 보낼 수 있음
    • Amazon EventBridge Event Bus
      • 리소스 기반 정책을 사용하여 다른 AWS 계정의 이벤트 버스에 액세스할 수 있음
      • 이벤트 버스로 전송된 이벤트를 아카이브 가능(모든 이벤트 or 필터링된 서브셋)
      • 이벤트를 아카이빙 할 대는 보존기간을 설정 가능(무기한, 일정 기간)
      • 아카이브된 이벤트를 재생할 수 있는 기능도 있음
      • Schema Registy
        • 이벤트 버스의 이벤트를 분석하고 스키마를 추론할 수 있음
        • 스키마 레지스트리를 사용하면 애플리케이션에서 미리 데이터가 이벤트 버스에 어떻게 구조화되어 있는지 알 수 있는 코드를 생성 가능
        • 스키마는 버전 관리 가능
      • Resource-based Policy
        • 특정 이벤트 버스에 대한 권한을 관리
        • 다른 AWS 계정이나 다른 리전에서의 이벤트 수신을 허용 또는 거부할 수 있음
        • ex) AWS 조직의 모든 이벤트를 단일 AWS 계정, 혹은 리전에서 집계하는 등의 사용 사례를 구현 가능
  • CloudWatch Insights and Operational Visibility
    • CloudWatch Container Insights
      • 컨테이너에서 발생하는 지표와 로그를 수집, 집계, 요약하는 기능
      • 이는 Amazon Elastic Container Service(ECS), Amazon Elastic Kubernetes Service(EKS), EC2에서 실행되는 Kubernetes 플랫폼, 그리고 Fargate에서 실행되는 컨테이너에 대해 사용 가능
      • Amazon EKS와 Kubernetes의 경우 컨테이너화된 CloudWatch 에이전트를 사용해야 컨테이너를 찾을 수 있음
    • CloudWatch Lambda Insights
      • AWS Lambda에서 실행되는 서버리스 애플리케이션을 모니터링하고 문제를 해결하는 솔루션
      • CPU 시간, 메모리, 디스크, 네트워크 등 시스템 수준의 지표를 수집, 집계, 요약
      • Lambda의 콜드 스타트나 Lambda 작업자 종료와 같은 진단 정보도 수집, 집계, 요약
      • Lambda Insight는 Lambda 계층으로 제공
    • CloudWatch Contributor Insights
      • 로그 데이터를 분석하고 기고자(Contributor) 데이터를 표시하는 시계열 데이터를 생성하는 기능
        • 상위 N개의 기고자에 댇한 지표 확인
        • 총 고유 기고자 수 및 사용량에 대한 지표 확인
      • 네트워크 상위 대화자를 찾고 시스템 성능에 영향을 미치는 대상을 파악 가능
      • AWS에서 생성한 모든 로그(VPC, DNS ..) 에 대해 동작
      • ex) 불량 호스트 식별, 사용량이 가장 많은 네트워크 사용자 찾기, 가장 많은 오류를 생성하는 URL 찾기 등
      • 규칙을 직접 생성하거나 AWS가 생성한 샘플 규칙을 사용하여 구성 가능 - 백그라운드에서는 CloudWatch Logs가 활용
      • 내장된 규칙이 있어 다른 AwS 서비스에서 가져온 지표도 분석 가능
    • CloudWatch Application Insights
      • 모니터링하는 애플리케이션의 잠재적 문제와 진행중인 문제를 분리할 수 있도록 자동화된 대시보드 기능 제공
      • 선택된 기술을 사용하는 Amazon EC2 인스턴스에서 실행, 지원 기술: Java, .NET, Microsoft IIS 웹 서버, DB 등
      • Amazon EBS, RDS, ELB, ASG, Lambda, SQS, DynamoDB, S3 Bucket, ECS, EKS, SNS, API Gateway와 같은 AWS 리소스 사용 가능
      • SageMaker 머신 러닝 서비스가 내부에서 사용
      • 애플리케이션의 상태에 대한 향상된 가시성을 제공하여 문제 해결 및 복구 시간 단축
      • 발견된 문제와 알림은 모두 Amazon EventBridge 및 SSM OpsCenter로 전송
    • CloudWatch Insights and Operational Visibility
      • CloudWatch Container Insights
        • ECS, EKS, EC2 상의 Kubernetes, Fargate와 같은 환경에서 사용
          • Kubernetes를 사용한다면 실행할 에이전트 필요
        • 컨테이너의 지표와 로그 수집
      • CloudWatch Lambda Insights
        • 서버리스 애플리케이션의 트러블 슈팅을 위한 세부 지표 제공
        • 서버리스 애플리케이션의 성능 및 동작 분석
      • CloudWatch Contributors Insigts
        • "Top-N" 기고자를 찾는 기능 제공
        • 로그 데이터에서 가장 많이 기여한 사용자 또는 리소스 식별
      • CloudWatch Application Insights
        • 자동화된 대시보드를 제공하여 애플리케이션 및 관련된 AWS 서비스의 문제를 해결하는데 도움
        • 애플리케이션과 연관된 여러 서비스의 운영 상태를 모니터링하고 문제 해결 가능

2. AWS CloudTrail

  • AWS 계정의 거버넌스, 규정 준수 및 감사를 제공하는 서비스
  • CloudTrail은 기본적으로 활성화 되어있음
  • AWS 계정 내에서 이루어진 이벤트의 호출 및 API 호출의 이력을 얻을 수 있음
    • 콘솔, SDK, CLI 뿐만 아니라 기타 AWS 서비스에서 발생한 AWS 계정 내의 모든  이벤트 및 API 호출 기록
  • CloudTrail은 로그를 CloudWatch Logs 또는 S3에 저장할 수 있음
  • 전체 또는 단일 리전에 적용되는 Trail을 생성해 모든 리전에 걸친 이벤트 기록을 한 곳으로 모을 수 있음
  • AWS에서 리소스가 삭제되었을 경우에는 먼저 CloudTrail을 통해 조사
  • Events
    • Management Events(관리 이벤트)
      • AWS 계정 내의 리소스에서 수행되는 작업들을 의미
      • ex) 보안 구성(IAM AttachRolePolicy), 데이터 라우팅 규칙 설정(Amazon EC2 CreateSubnet), 로깅 설정(AWS CloudTrail CreateTrail)
      • 트레일은 기본적으로 관리 이벤트를 로깅하도록 설정
      • Read 이벤트와 Write 이벤트를 분리 가능
    • Data Events(데이터 이벤트)
      • 기본적으로 높은 볼륨의 작업으로 인해 데이터 이벤트는 로깅 X
      • Amazon S3 객체 수준의 활동(GetObject, DeleteObject, PutObject ...): Read와 Write 이벤트 분리 가능
      • AWS Lambda 함수 실행 활동 (Invoke API)
    • CloudTrail Insights Event
      • 계정에서 비정상적인 활동을 감지(부정확한 리소스 프로비저닝, 서비스 한도 도달, AWS IAM 작업의 급격한 증가, 주기적인 유지보수 활동의 중단)
      • CloudTrail Insights는 정상적인 관리 이벤트를 분석하여 기준선을 생성한 다음, 지속적으로 쓰기 이벤트를 분석하여 비정상적인 패턴을 감지
      • 이상 상황, 즉 인사이트 이벤트는 CloudTrail 콘솔에 표시
      • 이벤트는 Amazon S3로 전송 가능
      • EventBridge 이벤트가 생성되어 자동화 요구에 대응 가능
    • CloudTrail Events Retention
      • 이벤트는 CloudTrail에 기본적으로 90일동안 저장되고 그 이후에 삭제
      • 기본 기간 이상으로 이벤트를 보존하려면 S3에 전송하여 로그를 기록하고 Athena를 사용하여 분석

3. AWS Config

  • AWS리소스의 감사 및 규정 준수 여부를 기록할 수 있게 해주는 서비스
  • 시간에 따른 구성 및 변경 사항 기록 지원
  • AWS Config로 해결할 수 있는 문제
    • 보안 그룹에 무제한 SSH 액세스가 있는지 여부
    • 내 버킷에 공개 액세스가 있는지 여부
    • 시간이 지나면서 ALB 구성이 어떻게 변경되었는지 등
  • 변경사항에 대한 알림(SNS 알림)을 받을 수 있음
  • AWS Config는 리전별 서비스이기 때문에 모든 리전별로 구성해야 함
  • 리전과 계정 간 데이터 통합 가능
  • 구성 데이터를 S3에 저장하여  Athena로 분석
  • Rules
    • AWS에서 제공하는 사전 정의된 Config 규칙(75개 이상의 규칙 제공)
    • AWS Lambda 함수를 사용하여 사용자 지정 규칙 생성 가능
    • 규칙은 다음과 같은 방식으로 평가 / 트리거 될 수 있음
      • 각 구성 변경 이벤트마다
      • 정기적 / 일정 시간 간격
    • AWS Config Rules는 동작을 미리 예방하지는 못하며, 준수 여부를 평가하고 보고하는 역할(거부 기능 X)
    • 가격
      • NOT Free tier
      • 리전당 기록된 각  구성 항목당  $0.003
      • 리전당 Config 규칙 평가당 $0.001
  • Remediations(보완)
    • SSM 자동화 문서를 사용하여 규정을 준수하지 않는 리소스를 수정 가능
    • AWS에서 제공하는 관리형 자동화 문서를 사동하거나 사용자 정의 자동화 문서를 생성할 수 있음
    • tip: Lambda 함수를 호출하는 사용자 정의 자동화 문서도 생성 가능
    • 자동 보완 후에도 여전히 규정을 미준수한다면 보완 재시도(Remediation Retries)를 설정 할 수 있음
  • Notifications(알림)
    • AWS 리소스가 규정을 미준수했을 때마다 EventBridgee를 통해 알림을 트리거 할 수 있음
    • 구성 변경 및 규정 준수 상태 알림을 SNS로 전송 가능
  CloudWatch CloudTrail Config
  성능 모니터링 (지표, CPU, Network ..)
& 대시보드
모든 사용자에 의해 계정 내에서 수행된 API 호출 기록 구성 변경 기록
이벤트 및 알림 특정 리소스에 대한 트레일 정의 가능 규정 준수 규칙에 따라 리소스 평가
로그 집계 및 분석 글로벌 서비스 변경 내용 및 규정 준수에 대한 타임라인 정보 제공
For an Elastic
Load Balancer
들어오는 연결 수 모니터링 API 호출로 로드밸런서에 대한 변경 사항을 수행한 사용자 추적 로드 밸런서의 보안 그룹 규칙 추척
시간에 따른 오류 코드 비율 시각화   로드 밸런서의 구성 변경 추적
로드밸런서 성능 파악을 위한 대시보드 생성   SSL 인증서가 로드 밸런서에 항상 할당되어 있어야 한다는 규칙을 만들어 암호화되지 않은 트래픽이 로드 밸런서에 접근하지 못하도록 할 수도 있음

 

반응형
LIST