🔍 AWS 모니터링 서비스 소개
왜 모니터링이 중요한가?
- 성능 최적화: 리소스 사용량을 실시간으로 파악하여 비용 절감
- 문제 조기 발견: 장애 발생 전 이상 징후 감지
- 규정 준수: 보안 및 컴플라이언스 요구사항 충족
- 운영 가시성: 전체 인프라의 상태를 한눈에 파악
☁️ Amazon CloudWatch
CloudWatch란?
Amazon CloudWatch는 AWS 리소스와 애플리케이션을 실시간으로 모니터링하는 서비스로 메트릭 수집, 로그 관리, 알람 설정 등의 기능을 제공
주요 기능
1. 지표(Metrics) 모니터링
- EC2 인스턴스의 CPU 사용률, 네트워크 트래픽
- RDS 데이터베이스의 연결 수, 읽기/쓰기 작업
- Lambda 함수의 실행 시간, 오류율
- 사용자 정의 메트릭 생성 가능
2. CloudWatch 로그(Logs)
- 애플리케이션 로그 중앙 집중식 관리
- 로그 그룹과 로그 스트림으로 구조화
- 실시간 로그 모니터링 (Live Tail)
- 로그 데이터 쿼리 및 분석
3. CloudWatch 알람(Alarms)
- 메트릭 임계값 초과 시 자동 알림
- SNS를 통한 이메일, SMS 알림
- Auto Scaling 트리거
- EC2 인스턴스 자동 복구
4. CloudWatch Events (EventBridge)
- AWS 리소스 상태 변경 감지
- 이벤트 기반 자동화 구현
- 예약된 작업(Cron) 실행
- 다른 AWS 서비스와 통합
CloudWatch 실습 예제
# CloudWatch 에이전트 설치 (Amazon Linux 2)
sudo yum install amazon-cloudwatch-agent -y
# 사용자 정의 메트릭 전송
aws cloudwatch put-metric-data \
--namespace "MyApp" \
--metric-name "PageViews" \
--value 100 \
--timestamp $(date -u +"%Y-%m-%dT%H:%M:%SZ")
# 알람 생성
aws cloudwatch put-metric-alarm \
--alarm-name "HighCPU" \
--alarm-description "CPU exceeds 80%" \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--statistic Average \
--period 300 \
--threshold 80 \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 2
CloudWatch Insights
CloudWatch Insights는 로그 데이터를 쿼리하고 시각화하는 강력한 도구
-- 오류 로그 검색
fields @timestamp, @message
| filter @message like /ERROR/
| sort @timestamp desc
| limit 20
-- 응답 시간 분석
fields @timestamp, responseTime
| stats avg(responseTime), max(responseTime), min(responseTime) by bin(5m)
📝 AWS CloudTrail
CloudTrail이란?
AWS CloudTrail은 AWS 계정의 모든 API 호출을 기록하고 감사하는 서비스로 "누가, 언제, 무엇을, 어디서" 실행했는지 추적가능
핵심 기능
1. 이벤트 기록
- 관리 이벤트: 리소스 생성, 수정, 삭제
- 데이터 이벤트: S3 객체 수준 작업, Lambda 함수 실행
- Insights 이벤트: 비정상적인 API 활동 감지
2. 감사 및 규정 준수
- 모든 API 호출 영구 기록
- S3 버킷에 로그 저장
- 로그 파일 무결성 검증
- 다중 리전 및 다중 계정 지원
3. 보안 분석
- 무단 접근 시도 탐지
- IAM 정책 변경 추적
- 루트 계정 사용 모니터링
- 리소스 삭제 이력 확인
CloudTrail 설정
# CloudTrail 생성
aws cloudtrail create-trail \
--name MyTrail \
--s3-bucket-name my-cloudtrail-bucket
# CloudTrail 활성화
aws cloudtrail start-logging --name MyTrail
# 이벤트 조회
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=EventName,AttributeValue=StopInstances \
--max-results 10
CloudTrail과 EventBridge 통합
CloudTrail 이벤트를 EventBridge로 전송하여 실시간 대응이 가능
{
"source": ["aws.ec2"],
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventName": ["TerminateInstances"]
}
}
⚙️ AWS Config
AWS Config란?
AWS Config는 AWS 리소스의 구성 변경을 지속적으로 추적하고 평가하는 서비스로 리소스가 원하는 상태를 유지하는지 확인
주요 기능
1. 리소스 구성 추적
- 모든 AWS 리소스의 현재 및 과거 구성 기록
- 리소스 간 관계 매핑
- 구성 변경 타임라인 제공
- 구성 스냅샷 생성
2. 규칙 기반 규정 준수
- AWS 관리형 규칙 (90개 이상)
- 사용자 정의 규칙 (Lambda 함수)
- 자동 규정 준수 평가
- 비준수 리소스 식별
3. 자동 복구(Remediation)
- 비준수 리소스 자동 수정
- SSM Automation 문서 실행
- 수동 또는 자동 복구 선택
Config 규칙 예제
관리형 규칙 활용
# S3 버킷 암호화 확인 규칙
aws configservice put-config-rule \
--config-rule '{
"ConfigRuleName": "s3-bucket-encryption-enabled",
"Source": {
"Owner": "AWS",
"SourceIdentifier": "S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED"
}
}'
# 규정 준수 결과 조회
aws configservice describe-compliance-by-config-rule \
--config-rule-names s3-bucket-encryption-enabled
사용자 정의 규칙
# Lambda 함수로 사용자 정의 규칙 생성
import boto3
import json
def lambda_handler(event, context):
config = boto3.client('config')
# 구성 항목 가져오기
config_item = json.loads(event['configurationItem'])
# 규정 준수 평가
compliance_type = 'COMPLIANT'
if config_item['resourceType'] == 'AWS::EC2::Instance':
if 'Tags' not in config_item['configuration']:
compliance_type = 'NON_COMPLIANT'
# 결과 전송
config.put_evaluations(
Evaluations=[{
'ComplianceResourceType': config_item['resourceType'],
'ComplianceResourceId': config_item['resourceId'],
'ComplianceType': compliance_type,
'OrderingTimestamp': config_item['configurationItemCaptureTime']
}],
ResultToken=event['resultToken']
)
🔄 CloudTrail vs CloudWatch vs Config
비교표
기능 | CloudWatch | CloudTrail | Config |
주요 목적 | 성능 모니터링 | API 활동 감사 | 구성 관리 |
데이터 타입 | 메트릭, 로그 | API 호출 기록 | 리소스 구성 |
실시간성 | 실시간 | 준실시간 (15분) | 준실시간 |
보존 기간 | 사용자 정의 | 90일 (기본) | 7년 (S3) |
주요 사용 사례 | 성능 알람, 로그 분석 | 보안 감사, 규정 준수 | 구성 변경 추적, 규정 준수 |
질문 답변 | "시스템이 정상인가?" | "누가 무엇을 했는가?" | "리소스가 올바르게 구성되었는가?" |
통합 사용 시나리오
이 세 서비스는 함께 사용될 때 최대의 효과를 발휘합니다.
예제 시나리오: 보안 그룹 변경 탐지 및 대응
- Config: 보안 그룹 규칙이 변경되었음을 감지
- CloudTrail: 누가 언제 변경했는지 확인
- CloudWatch Events: 이벤트 트리거하여 Lambda 함수 실행
- 자동 대응: 비승인된 변경 시 자동으로 롤백
# Lambda 함수: 보안 그룹 변경 자동 복구
import boto3
def lambda_handler(event, context):
ec2 = boto3.client('ec2')
# Config에서 전달된 비준수 리소스 정보
security_group_id = event['configRuleInvokingEvent']['configurationItem']['resourceId']
# 원래 상태로 복구
ec2.revoke_security_group_ingress(
GroupId=security_group_id,
IpPermissions=[{
'IpProtocol': '-1',
'FromPort': 0,
'ToPort': 65535,
'IpRanges': [{'CidrIp': '0.0.0.0/0'}]
}]
)
# CloudWatch에 로그 기록
print(f"Automatically remediated security group: {security_group_id}")
💡 실전 활용 팁
1. 비용 최적화
# CloudWatch 로그 보존 기간 설정 (비용 절감)
aws logs put-retention-policy \
--log-group-name /aws/lambda/my-function \
--retention-in-days 7
# 불필요한 메트릭 필터링
aws cloudwatch delete-metric-alarm --alarm-names unused-alarm
2. 효과적인 알람 설정
- 임계값 설정: 평균 사용량의 1.5~2배로 설정
- 평가 기간: 최소 2개 연속 기간으로 설정 (false positive 방지)
- 알람 우선순위: Critical, High, Medium, Low로 분류
3. 보안 강화
# CloudTrail 로그 무결성 검증
aws cloudtrail validate-logs \
--trail-arn arn:aws:cloudtrail:region:account-id:trail/name \
--start-time 2024-01-01T00:00:00Z
# Config Aggregator로 다중 계정 관리
aws configservice put-configuration-aggregator \
--configuration-aggregator-name OrgAggregator \
--organization-aggregation-source '{
"RoleArn": "arn:aws:iam::account-id:role/ConfigRole",
"AllAwsRegions": true
}'
4. 자동화된 대시보드
CloudWatch 대시보드로 주요 메트릭을 한눈에 확인:
{
"widgets": [
{
"type": "metric",
"properties": {
"metrics": [
["AWS/EC2", "CPUUtilization", {"stat": "Average"}],
["AWS/RDS", "DatabaseConnections", {"stat": "Sum"}]
],
"period": 300,
"stat": "Average",
"region": "us-east-1",
"title": "Infrastructure Overview"
}
}
]
}
📋 체크리스트
모니터링 및 감사 설정을 위한 필수 체크리스트:
CloudWatch
모든 EC2 인스턴스에 CloudWatch Agent 설치
주요 메트릭에 대한 알람 설정
로그 그룹 보존 기간 정책 설정
CloudWatch Insights 쿼리 저장
CloudTrail
조직 수준에서 CloudTrail 활성화
S3 버킷 암호화 및 접근 제어 설정
CloudTrail Insights 활성화
로그 파일 무결성 검증 활성화
Config
모든 리전에서 Config 활성화
주요 규정 준수 규칙 설정
자동 복구 작업 구성
Config Aggregator 설정 (다중 계정)
AWS CloudWatch, CloudTrail, Config는 클라우드 인프라를 안전하고 효율적으로 운영하기 위한 필수 도구입니다. 각 서비스는 고유한 목적을 가지고 있으며, 함께 사용할 때 시너지 효과를 발휘합니다.
핵심 요약:
- CloudWatch: 성능 모니터링과 로그 관리
- CloudTrail: API 활동 감사와 보안 추적
- Config: 리소스 구성 관리와 규정 준수
이 세 가지 서비스를 적절히 활용하면 비용 절감, 보안 강화, 운영 효율성 향상을 동시에 달성할 수 있습니다.
Share article