2252 ๋จ์ด
11 ๋ถ
๐ AWS Monitoring, Troubleshooting & Audit
๐ AWS Monitoring, Troubleshooting & Audit
CloudWatch ยท EventBridge ยท CloudTrail ยท AWS Config
๋ฆฌ์์ค ์ํ ๋ชจ๋ํฐ๋ง, API ๊ฐ์ฌ, ๊ท์ ์ค์ ๊ด๋ฆฌ์ 3๋ ์ถ
๋ชฉ์ฐจ
- ์ธ ์๋น์ค ํ๋์ ๋น๊ต
- Amazon CloudWatch
- Amazon EventBridge (๊ตฌ: CloudWatch Events)
- AWS CloudTrail
- AWS Config
- CloudWatch vs. CloudTrail vs. Config ๋น๊ต
- ๐ ์ํ ์์ฃผ ์ถ์ ํฌ์ธํธ
์ธ ์๋น์ค ํ๋์ ๋น๊ต
| ์๋น์ค | ํต์ฌ ์ญํ | ์ฃผ์ ์ง๋ฌธ |
|---|---|---|
| CloudWatch | ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง + ๋ก๊ทธ + ์๋ | โ์ง๊ธ CPU๊ฐ ์ผ๋ง๋ ๋๋?โ |
| CloudTrail | API ํธ์ถ ๊ฐ์ฌ ๊ธฐ๋ก | โ๋๊ฐ ์ธ์ ์ด๋ค API๋ฅผ ํธ์ถํ๋?โ |
| AWS Config | ์ค์ ๋ณ๊ฒฝ ๊ธฐ๋ก + ๊ท์ ์ค์ ํ๊ฐ | โ๋ฆฌ์์ค ์ค์ ์ด ์ด๋ป๊ฒ ๋ฐ๋์๋? ๊ท์ ์ค์ํ๋?โ |
๐ ๋ฆฌ์์ค ์ญ์ ์์ธ ์กฐ์ฌ โ CloudTrail ๋จผ์ ํ์ธ
Amazon CloudWatch
CloudWatch Metrics
- AWS ๋ชจ๋ ์๋น์ค์์ ์งํ(Metric) ์ ๊ณต
- Namespace ๋จ์๋ก ์งํ ๊ทธ๋ฃนํ
- Dimension: ์งํ์ ์์ฑ (Instance ID, ํ๊ฒฝ ๋ฑ), ์งํ๋น ์ต๋ 30๊ฐ Dimension
- ์งํ์ Timestamp ํฌํจ
- Custom Metrics ์์ฑ ๊ฐ๋ฅ (์: RAM ์ฌ์ฉ๋ฅ โ ๊ธฐ๋ณธ ์ ๊ณต ์ ๋จ)
CloudWatch Metric Streams
- CloudWatch Metrics๋ฅผ Near real-time์ผ๋ก ๋์์ ์ง์ ์คํธ๋ฆฌ๋ฐ
- ๋์: Kinesis Data Firehose (โ S3, Redshift ๋ฑ)
- 3rd party: Datadog, Dynatrace, New Relic, Splunk, Sumo Logic
CloudWatch Logs
| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| Log Group | ์์ ์ด๋ฆ, ๋ณดํต ์ ํ๋ฆฌ์ผ์ด์ ๋จ์ |
| Log Stream | ์ธ์คํด์ค/๋ก๊ทธํ์ผ/์ปจํ ์ด๋ ๋จ์ |
| ๋ง๋ฃ ์ ์ฑ | ์๊ตฌ ๋ณด์กด ~ 1์ผ~10๋ ์ค์ ๊ฐ๋ฅ |
| ๊ธฐ๋ณธ ์ํธํ | ํ์ฑํ๋จ (KMS ์ปค์คํ ํค ์ค์ ๊ฐ๋ฅ) |
CloudWatch Logs ์ ์ก ๋์:
- Amazon S3 (Export)
- Kinesis Data Streams
- Kinesis Data Firehose
- AWS Lambda
- OpenSearch
์ฃผ์ Log Sources:
- SDK, CloudWatch Logs Agent, CloudWatch Unified Agent
- Elastic Beanstalk, ECS, Lambda, VPC Flow Logs, API Gateway, CloudTrail, Route 53
CloudWatch Logs Agent vs. Unified Agent
| ํญ๋ชฉ | CloudWatch Logs Agent | CloudWatch Unified Agent |
|---|---|---|
| ๋ฒ์ | ๊ตฌ๋ฒ์ | ์ ๋ฒ์ (๊ถ์ฅ) |
| ๋ก๊ทธ ์ ์ก | CloudWatch Logs๋ง | CloudWatch Logs |
| ์์คํ ์งํ | โ | โ (RAM, Process ๋ฑ ์ถ๊ฐ ์์ง) |
| ์ค์ ๊ด๋ฆฌ | - | SSM Parameter Store ์ค์ ๊ด๋ฆฌ |
Unified Agent ์์ง ์งํ: CPU, Disk metrics/IO, RAM, Netstat, Processes, Swap Space โ EC2 ๊ธฐ๋ณธ Out-of-the-box Metrics(Disk, CPU, Network)๋ณด๋ค ์์ธํ ์์ค
CloudWatch Logs Insights
- CloudWatch Logs์์ SQL ์ ์ฌ ์ฟผ๋ฆฌ๋ก ๋ก๊ทธ ๋ถ์
- AWS ์๋น์ค ๋ฐ JSON ๋ก๊ทธ์์ ํ๋ ์๋ ๊ฒ์
- ์ฌ๋ฌ Log Group, ์ฌ๋ฌ ๊ณ์ ๋์ ์ฟผ๋ฆฌ ๊ฐ๋ฅ
- ์ฟผ๋ฆฌ ์ ์ฅ ๋ฐ Dashboard ์ถ๊ฐ ๊ฐ๋ฅ
- โ ๏ธ Query Engine โ ์ค์๊ฐ ์์ง ์๋ (๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ง ์กฐํ)
CloudWatch Logs S3 Export
- ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ S3๋ก ๋ด๋ณด๋ด๊ธฐ (API:
CreateExportTask) - ๋ฐ์ดํฐ ๊ฐ์ฉ๊น์ง ์ต๋ 12์๊ฐ ์์
- Near real-time ๋๋ ์ค์๊ฐ ์๋ โ ์ค์๊ฐ์ด ํ์ํ๋ฉด Subscriptions Filter ์ฌ์ฉ
CloudWatch Logs Subscriptions
- ์ค์๊ฐ ๋ก๊ทธ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐ ๋ถ์์ฉ
- ๋์: Kinesis Data Streams, Kinesis Data Firehose, Lambda
- Subscription Filter: ํน์ ์กฐ๊ฑด์ ๋ก๊ทธ๋ง ๋์์ผ๋ก ์ ๋ฌ
- Cross-Account Subscription: ๋ค๋ฅธ ๊ณ์ ์ KDS/KDF๋ก ์ ๋ฌ ๊ฐ๋ฅ
CloudWatch Alarms
Alarm States:
OK/INSUFFICIENT_DATA/ALARM
Alarm Targets:
- EC2 Instance: ์ค์ง/์ข ๋ฃ/์ฌ๋ถํ /๋ณต๊ตฌ
- Auto Scaling Action ํธ๋ฆฌ๊ฑฐ
- SNS Topic ์๋ฆผ โ ์ด๋ฅผ ํตํด ์ฌ์ค์ ๋ชจ๋ ๊ฒ ๊ฐ๋ฅ
Composite Alarms:
- ์ฌ๋ฌ ์๋ ์ํ๋ฅผ AND/OR ์กฐ๊ฑด์ผ๋ก ์กฐํฉ
- โ์๋ ๋ ธ์ด์ฆ(Alarm Noise)โ ๊ฐ์์ ํจ๊ณผ์
EC2 Instance Recovery:
StatusCheckFailed_SystemAlarm โ ๋ณต๊ตฌ ์คํ- ๋ณต๊ตฌ ํ: Private/Public/Elastic IP, Metadata, Placement Group ๋์ผ ์ ์ง
์๋ ํ ์คํธ (CLI):
aws cloudwatch set-alarm-state \ --alarm-name "myalarm" \ --state-value ALARM \ --state-reason "testing purposes"CloudWatch ํนํ Insights ์๋น์ค
| ์๋น์ค | ๋์ | ๊ธฐ๋ฅ |
|---|---|---|
| Container Insights | ECS, EKS, EC2 Kubernetes, Fargate | ์ปจํ ์ด๋ ๋ฉํธ๋ฆญ + ๋ก๊ทธ ์์ง (EKS: ์ปจํ ์ด๋ํ๋ CW Agent ํ์) |
| Lambda Insights | Lambda (Lambda Layer ํํ) | Cold Start, ์์คํ ๋ฉํธ๋ฆญ, ์ง๋จ ์ ๋ณด |
| Contributor Insights | VPC Flow Logs, DNS ๋ฑ ๋ชจ๋ CW Logs | Top-N ๊ธฐ์ฌ์ ํ์ (์: ์์ IP, ์ต๋ค ์ค๋ฅ URL) |
| Application Insights | EC2 ๊ธฐ๋ฐ ์ฑ (Java, .NET ๋ฑ) + AWS ์๋น์ค | ๋ฌธ์ ์๋ ๊ฐ์ง ๋์๋ณด๋, SageMaker ๊ธฐ๋ฐ |
CloudWatch Network Synthetic Monitor
- On-premises โ AWS ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ ๋คํธ์ํฌ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ์ง
- Agent ์ค์น ๋ถํ์
- ICMP/TCP ํธ๋ํฝ ํ ์คํธ (Direct Connect ๋๋ Site-to-Site VPN ๊ฒฝ์ )
- ํจํท ์์ค, ์ง์ฐ, Jitter ์ธก์ โ CloudWatch Metrics๋ก ๋ฐํ
Amazon EventBridge (๊ตฌ: CloudWatch Events)
ํต์ฌ ๊ธฐ๋ฅ
| ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
| Cron Jobs | ํน์ ์๊ฐ/์ฃผ๊ธฐ ๊ธฐ๋ฐ ์ค์ผ์ค ์คํ |
| Event Pattern | ํน์ ์ด๋ฒคํธ ๋ฐ์ ์ ๊ท์น ํธ๋ฆฌ๊ฑฐ |
| ๋์ | Lambda, SQS, SNS, KDS, Step Functions, ECS Task, API Gateway, Batch ๋ฑ |
Event Bus ์ ํ
| ์ ํ | ์ค๋ช |
|---|---|
| Default Event Bus | AWS ์๋น์ค ์ด๋ฒคํธ ์์ |
| Partner Event Bus | SaaS ํํธ๋ ์ด๋ฒคํธ (Zendesk, Datadog ๋ฑ) |
| Custom Event Bus | ์ปค์คํ ์ฑ ์ด๋ฒคํธ |
- Event Bus๋ Resource-based Policy๋ก ๋ค๋ฅธ ๊ณ์ ์ ๊ณต์ ๊ฐ๋ฅ
- ์ด๋ฒคํธ ์์นด์ด๋ธ(Archive) + Replay ๊ฐ๋ฅ
Schema Registry
- EventBridge๊ฐ Event Bus์ ์ด๋ฒคํธ ์คํค๋ง๋ฅผ ์๋ ๋ถ์/์ถ๋ก
- ์คํค๋ง ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋ ์๋ ์์ฑ (์ด๋ฒคํธ ๊ตฌ์กฐ ์ฌ์ ํ์ )
- ์คํค๋ง ๋ฒ์ ๋ ์ง์
EventBridge Resource-based Policy
- ํน์ Event Bus์ ๊ถํ ๊ด๋ฆฌ
- ๋ค๋ฅธ ๊ณ์ /๋ฆฌ์ ์ ์ด๋ฒคํธ ํ์ฉ/๊ฑฐ๋ถ
- Use Case: AWS Organization ์ ์ฒด ์ด๋ฒคํธ๋ฅผ ๋จ์ผ ๊ณ์ /๋ฆฌ์ ์ผ๋ก ์ง๊ณ
EventBridge ๋ณด์ (Target ๋ณ ๊ถํ)
| Target ์ ํ | ๊ถํ ๋ฐฉ์ |
|---|---|
| Lambda, SNS, SQS, S3, API Gateway | Resource-based Policy |
| Kinesis Streams, EC2 ASG, SSM Run Command, ECS Task | IAM Role |
AWS CloudTrail
- AWS ๊ณ์ ๋ด ๋ชจ๋ API ํธ์ถ ๊ธฐ๋ก (๊ธฐ๋ณธ ํ์ฑํ)
- ์ฝ์, SDK, CLI, AWS ์๋น์ค๋ฅผ ํตํ ํธ์ถ ํฌํจ
- ๋ก๊ทธ ๋์: CloudWatch Logs ๋๋ S3
- Trail์ ๋ชจ๋ ๋ฆฌ์ ๋๋ ๋จ์ผ ๋ฆฌ์ ์ ์ฉ ๊ฐ๋ฅ
CloudTrail ์ด๋ฒคํธ ์ ํ
| ์ ํ | ๊ธฐ๋ณธ ๊ธฐ๋ก | ์ค๋ช |
|---|---|---|
| Management Events | โ | ๋ฆฌ์์ค ์์ (IAM, EC2 ์๋ธ๋ท ์์ฑ, ๋ก๊น ์ค์ ๋ฑ) |
| Data Events | โ (๊ณ ๋ณผ๋ฅจ) | S3 Object ๋ ๋ฒจ ์์ (GetObject, DeleteObject ๋ฑ), Lambda ์คํ |
| CloudTrail Insights Events | ๋ณ๋ ํ์ฑํ | ๋น์ ์์ ์ธ ํ๋ ์๋ ๊ฐ์ง |
CloudTrail Insights
- ๋น์ ์ ํ๋ ๊ฐ์ง:
- ๋ถ์ ํํ ๋ฆฌ์์ค ํ๋ก๋น์ ๋
- ์๋น์ค ํ๋ ๋๋ฌ
- IAM ์์ ๊ธ์ฆ
- ์ฃผ๊ธฐ์ ์ ์ง๋ณด์ ๋๋ฝ
- ์ ์ Management Event๋ก Baseline ์์ฑ โ Write Event ์ง์ ๋ถ์
- ์ด์ ํ์ง ๊ฒฐ๊ณผ: CloudTrail ์ฝ์ + S3 ์ด๋ฒคํธ + EventBridge ์ด๋ฒคํธ ์์ฑ
CloudTrail ์ด๋ฒคํธ ๋ณด์กด
- ๊ธฐ๋ณธ ๋ณด์กด: 90์ผ
- 90์ผ ์ด์ ๋ณด์กด: S3 ๋ก๊ทธ ์ ์ฅ + Athena ๋ถ์ ์กฐํฉ
CloudTrail + EventBridge ํจํด
[์ฌ์ฉ์ API ํธ์ถ] โ โผ[CloudTrail ๊ธฐ๋ก] โ โผ[EventBridge ์ด๋ฒคํธ] โ โผ[SNS ์๋ฆผ ๋๋ ์๋ํ]์์:
DeleteTable(DynamoDB) โ CloudTrail โ EventBridge โ SNS ๊ฒฝ๋ณดAssumeRole(IAM) โ CloudTrail โ EventBridge โ SNS ๊ฒฝ๋ณดAuthorizeSecurityGroupIngress(EC2) โ CloudTrail โ EventBridge โ SNS ๊ฒฝ๋ณด
AWS Config
- ๋ฆฌ์์ค ์ค์ ๋ณ๊ฒฝ ๊ธฐ๋ก ๋ฐ ๊ท์ ์ค์(Compliance) ํ๊ฐ
- ๋ฆฌ์ ๋ณ ์๋น์ค (๋ฆฌ์ ๊ฐ ์ง๊ณ ๊ฐ๋ฅ)
- ์ค์ ๋ฐ์ดํฐ๋ฅผ S3์ ์ ์ฅ โ Athena๋ก ๋ถ์ ๊ฐ๋ฅ
๋ตํ ์ ์๋ ์ง๋ฌธ๋ค:
- SSH๊ฐ ์ ํ ์์ด ์ด๋ ค ์๋ Security Group์ด ์๋?
- Public Access๊ฐ ์ด๋ฆฐ S3 Bucket์ด ์๋?
- ALB ์ค์ ์ด ์๊ฐ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ฐ๋์๋?
Config Rules
- AWS Managed Rules: 75๊ฐ ์ด์ ๊ธฐ๋ณธ ์ ๊ณต
- Custom Rules: Lambda ๊ธฐ๋ฐ ์ปค์คํ ํ๊ฐ ๋ก์ง
- ํธ๋ฆฌ๊ฑฐ: ์ค์ ๋ณ๊ฒฝ ์ ๋๋ ์ฃผ๊ธฐ์ ํ๊ฐ
- โ ๏ธ Config Rules๋ ์๋ฐฉ(Deny) ๊ธฐ๋ฅ ์์ โ ๊ท์ ์ค์ ํ๊ฐ๋ง
๊ฐ๊ฒฉ: Free Tier ์์, ๋ฆฌ์ ๋น ์ค์ ํญ๋ชฉ 0.001
Config ๋ฆฌ์์ค ๋ทฐ
- ํน์ ๋ฆฌ์์ค์ ๊ท์ ์ค์ ๋ณํ ํ์๋ผ์ธ
- ํน์ ๋ฆฌ์์ค์ ์ค์ ๋ณ๊ฒฝ ํ์๋ผ์ธ
- ํน์ ๋ฆฌ์์ค ๊ด๋ จ CloudTrail API ํธ์ถ ํ์๋ผ์ธ
Config Rules โ Remediations (์๋ ์์ )
- ๋น์ค์ ๋ฆฌ์์ค๋ฅผ SSM Automation Document๋ก ์๋ ์์
- AWS Managed Automation Document ๋๋ Custom Document (Lambda ํธ์ถ ๊ฐ๋ฅ)
- Remediation Retry ์ค์ ๊ฐ๋ฅ (์๋ ์์ ํ์๋ ๋น์ค์ ์)
์์:
IAM Access Key ๋ง๋ฃ (NON_COMPLIANT) โ Auto Remediation: AWSConfigRemediation-RevokeUnusedIAMUserCredentialsConfig Rules โ Notifications
- EventBridge: ๋น์ค์ ๋ฆฌ์์ค ๋ฐ์ ์ ํธ๋ฆฌ๊ฑฐ โ ์๋ํ
- SNS: ์ค์ ๋ณ๊ฒฝ + ๊ท์ ์ค์ ์ํ ์๋ฆผ (SNS Filtering ๋๋ ํด๋ผ์ด์ธํธ ์ธก ํํฐ ํ์ฉ)
CloudWatch vs. CloudTrail vs. Config ๋น๊ต
| ํญ๋ชฉ | CloudWatch | CloudTrail | Config |
|---|---|---|---|
| ๋ชฉ์ | ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง + ์๋ + ๋ก๊ทธ | API ํธ์ถ ๊ฐ์ฌ ๊ธฐ๋ก | ์ค์ ๋ณ๊ฒฝ ๊ธฐ๋ก + ๊ท์ ์ค์ |
| ์ง๋ฌธ | โCPU๊ฐ ๋์๊ฐ?" | "๋๊ฐ API๋ฅผ ํธ์ถํ๋๊ฐ?" | "์ค์ ์ด ๋ฐ๋์๋๊ฐ? ๊ท์ ์ ๋ง๋๊ฐ?โ |
| ๋ฒ์ | ๋ฆฌ์ (๊ธ๋ก๋ฒ ์ง๊ณ ๊ฐ๋ฅ) | ๊ธ๋ก๋ฒ ์๋น์ค | ๋ฆฌ์ (์ง๊ณ ๊ฐ๋ฅ) |
ELB ๊ด์ ์์ ์ธ ์๋น์ค ์ญํ
| ์๋น์ค | ELB์์์ ์ญํ |
|---|---|
| CloudWatch | Incoming Connection ๋ชจ๋ํฐ๋ง, ์๋ฌ ์ฝ๋ ๋น์จ ์๊ฐํ, ์ฑ๋ฅ ๋์๋ณด๋ |
| Config | Security Group ๊ท์น ์ถ์ , ์ค์ ๋ณ๊ฒฝ ์ด๋ ฅ, SSL ์ธ์ฆ์ ์์ ๋ถ์ฐฉ ์ฌ๋ถ ๊ท์ ์ค์ |
| CloudTrail | API ํธ์ถ ์ถ์ (๋๊ฐ LB ์ค์ ์ ๋ณ๊ฒฝํ๋๊ฐ?) |
๐ ์ํ ์์ฃผ ์ถ์ ํฌ์ธํธ
| ํฌ์ธํธ | ๋ด์ฉ |
|---|---|
| EC2 ๊ธฐ๋ณธ ๋ฏธ์ ๊ณต ์งํ | RAM (Unified Agent๋ก ์ถ๊ฐ ์์ง ํ์) |
| Custom Metric | RAM, ํ๋ก์ธ์ค ๋ฑ ์ง์ ํธ์ ํ์ |
| CW Logs โ S3 Export | API: CreateExportTask, ์ต๋ 12์๊ฐ ์์ (Near real-time ์๋) |
| CW Logs ์ค์๊ฐ ์ ์ก | Subscription Filter โ KDS/KDF/Lambda |
| Cross-Account Logs | Cross-Account Subscription ์ฌ์ฉ |
| CW Alarm ํ ์คํธ | set-alarm-state CLI ๋ช
๋ น์ผ๋ก ๊ฐ์ ALARM |
| Composite Alarm | AND/OR ์กฐ๊ฑด ์กฐํฉ, ์๋ ๋ ธ์ด์ฆ ๊ฐ์ |
| EC2 Recovery | ๋์ผ Private/Public/Elastic IP, Metadata, Placement Group ์ ์ง |
| Container Insights + EKS | ์ปจํ ์ด๋ํ๋ CW Agent ํ์ |
| Lambda Insights ๋ฐฐํฌ | Lambda Layer ํํ |
| Contributor Insights | Top-N ๊ธฐ์ฌ์ ํ์ |
| EventBridge Target ๊ถํ | Lambda/SNS/SQS: Resource-based Policy / Kinesis/ECS: IAM Role |
| EventBridge Replay | โ ์์นด์ด๋ธ๋ ์ด๋ฒคํธ ์ฌ์ ๊ฐ๋ฅ |
| CloudTrail ๊ธฐ๋ณธ ๋ณด์กด | 90์ผ |
| 90์ผ ์ด์ CloudTrail ๋ณด์กด | S3 + Athena |
| CloudTrail Data Events | ๊ธฐ๋ณธ ๋นํ์ฑํ (๊ณ ๋ณผ๋ฅจ) |
| CloudTrail Insights | ๋น์ ์ ํ๋ โ CloudTrail ์ฝ์ + S3 + EventBridge |
| ๋ฆฌ์์ค ์ญ์ ์์ธ ์กฐ์ฌ | CloudTrail ๋จผ์ |
| Config Rules ๊ธฐ๋ฅ | ๊ท์ ์ค์ ํ๊ฐ๋ง (Deny/์ฐจ๋จ ๋ถ๊ฐ) |
| Config Auto Remediation | SSM Automation Document |
| Config ์๋น์ค ๋ฒ์ | ๋ฆฌ์ ๋ณ (๋ฆฌ์ ๊ฐ ์ง๊ณ ๊ฐ๋ฅ) |