AWS CloudWatch & CloudTrail

2020. 10. 18. 23:20BACKEND/AWS

안녕하세요 〰️

오늘은 AWS 중 CloudWatch와 CloudTrail에 대해 알아보도록 하겠습니다.

 

*****************  INDEX  *****************

 

🔭AWS CloudWatch

📄 AWS CloudTrail

 

******************************************** 


🔭  AWS CloudWatch

Amazon CloudWatch는 AWS 리소스와 AWS에서 실시간으로 실행 중인 애플리케이션을 모니터링합니다.

CloudWatch를 사용하여 리소스 및 애플리케이션에 대해 측정할 수 있는 변수인 metrics를 수집하고 추적할 수 있습니다.

 

CloudWatch의 작동 방식은 아래와 같습니다.

 

 

 

✔️ Metrics

CloudWatch 페이지에서는 사용 중인 모든 AWS 서비스에 대한 metrics가 자동으로 표시됩니다.

사용자 지정 대시보드를 추가로 생성해 사용자 지정 애플리케이션에 대한 metrics를 표시하고,

선택한 metrics의 사용자 지정 집합을 표시할 수 있습니다.

 

아래는 Metrics 리스트 예시입니다.

 

출처) AWS Docs

 

✔️ Alarms

Metrics를 감시해 알림을 보내거나 임계값을 위반한 경우 모니터링 중인 리소스를 자동으로 변경하는 경보를 생성할 수 있습니다.

예를 들어 Amazon EC2 인스턴스의 CPU 사용량과 디스크 읽기 및 쓰기를 모니터링한 다음,

이러한 데이터를 사용하여 증가된 로드를 처리하기 위해 추가 인스턴스를 시작해야 할지 결정할 수 있습니다.

 

또한 이러한 데이터를 사용하여 잘 사용되지 않는 인스턴스를 중지할 수도 있습니다.

CloudWatch를 사용하면 시스템 전체의 리소스 사용률, 애플리케이션 성능 및 운영 상태를 파악할 수 있습니다.

 

예시를 하나 들어보자면,

EC2 사용중에 CPU 사용량(CPUUtilization)이 80%가 넘는 상태가 5분 이상 지속될 때 이메일이나 문자를 받을 수 있게끔 만들 수 있죠.

그 밖에도 위에서 보이는 다양한 옵션으로 Alarms을 설정할 수 있습니다.

 

 

✔️ 함께 사용하는 서비스

CloudWatch 서비스와 함께 사용하는 서비스는 아래와 같습니다.

 

- Amazon Simple Notification Service (Amazon SNS)

구독 엔드포인트나 클라이언트로의 메시지 배달 또는 전송을 조정하고 관리합니다.

CloudWatch와 함께 Amazon SNS를 사용하여 경보 임계값에 도달한 경우 메시지를 보냅니다.

 

- Amazon EC2 Auto Scaling

사용자 정의 정책, 상태 확인 및 예약 일정에 따라 Amazon EC2 인스턴스를 자동으로 시작 또는 종료할 수 있습니다.

Amazon EC2 Auto Scaling과 CloudWatch 경보를 함께 사용하여 필요에 따라 EC2 인스턴스를 확장할 수 있습니다.

 

- AWS CloudTrail

AWS Management 콘솔, AWS CLI 및 기타 서비스를 통해 이루어진 호출을 포함하여 계정에서 Amazon CloudWatch API에 대한 호출을 모니터링할 수 있도록 합니다.

CloudTrail 기록이 활성화되어 있으면 CloudWatch는 CloudTrail을 구성할 때 지정한 Amazon S3 버킷에 로그 파일을 기록합니다.

자세한 정보는 AWS CloudTrail 사용을 통한 Amazon CloudWatch API 호출 로깅 단원을 참조하십시오.

 

- AWS Identity and Access Management (IAM)

사용자를 위해 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다.

IAM을 사용하여 AWS 리소스를 사용할 수 있는 사람을 제어(인증)하고 이들이 사용할 수 있는 리소스 및 그 사용 방법을 제어(권한 부여)합니다.

 

 

 

 

📄 AWS CloudTrail

계정의 거버넌스, 규정 준수, 운영 및 위험 감사를 활성화하도록 도와주는 서비스입니다.

CloudTrail 이벤트는 AWS Management 콘솔, AWS SDK, 명령줄 도구 및 기타 AWS 서비스를 통해 수행되는 API 계정 활동과 비 API 계정 활동 모두에 대한 기록을 제공합니다.

CloudTrail에는 로깅할 수 있는 두 가지 유형의 이벤트(관리 이벤트 및 데이터 이벤트)가 있습니다.

기본적으로 추적은 관리 이벤트를 로깅하지만 데이터 이벤트는 로깅하지 않습니다.

 

 

이번엔 CloudTrail의 로그 파일의 예시를 살펴보도록 하겠습니다❗️ 

 

 

로그 파일

먼저, 로그 파일의 이름은 아래의 형식으로 생성됩니다.

 

// AccountID_CloudTrail_RegionName_YYYYMMDDTHHmmZ_UniqueString.FileNameFormat 
111122223333_CloudTrail_us-east-2_20150801T0210Z_Mu0KsOhtH1ar15ZZ.json.gz 

 

 

- YYYY, MM, DD, HH 및 mm은 로그 파일이 전송된 연도, 월, 일, 시, 분에 대한 숫자입니다.

   시간은 24시간 형식입니다. Z는 시간이 UTC 기준임을 나타냅니다.

- 로그 파일 이름의 16자 UniqueString 구성 요소는 파일의 덮어쓰기를 방지할 목적으로 사용됩니다. 특별한 의미는 없습니다.

- FileNameFormat은 파일의 인코딩입니다. 현재 인코딩은 json.gz이며, 압축 gzip 형식의 JSON 텍스트 파일입니다.

 

 

 

로그 파일의 예시는 아래와 같습니다.

 


{"Records": [{
    "eventVersion": "1.0",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "EX_PRINCIPAL_ID",
        "arn": "arn:aws:iam::123456789012:user/Alice",
        "accessKeyId": "EXAMPLE_KEY_ID",
        "accountId": "123456789012",
        "userName": "Alice"
    },
    "eventTime": "2014-03-06T21:22:54Z",
    "eventSource": "ec2.amazonaws.com",
    "eventName": "StartInstances",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "205.251.233.176",
    "userAgent": "ec2-api-tools 1.6.12.2",
    "requestParameters": {"instancesSet": {"items": [{"instanceId": "i-ebeaf9e2"}]}},
    "responseElements": {"instancesSet": {"items": [{
        "instanceId": "i-ebeaf9e2",
        "currentState": {
            "code": 0,
            "name": "pending"
        },
        "previousState": {
            "code": 80,
            "name": "stopped"
        }
    }]}}
}]}

 

위의 예에서는 Alice라는 IAM 사용자가 AWS CLI를 사용하였고 를 사용하여 작업을 호출했음을 보여 줍니다.

 

'BACKEND > AWS' 카테고리의 다른 글

AWS EKS - Web Application (1)  (0) 2022.07.17
AWS CodeDeploy VS AWS Elastic Beanstalk  (0) 2021.02.07
AWS, S3  (0) 2020.11.08
AWS, IAM  (5) 2020.11.01
AWS Elastic Load Balancing  (0) 2020.10.25