Monitoring, Troubleshooting & Audit
CloudWatch, EventBridge, X-Ray & CloudTrail
01CloudWatch Metrics (Namespaces & Dimensions)
CloudWatch Metrics คือบริการเก็บ metrics ของ AWS services ทุกตัว โดยจัดกลุ่มเป็น namespace (เช่น AWS/EC2, AWS/Lambda) แต่ละ metric มี timestamp และมี dimensions ได้สูงสุด 30 dimensions ต่อ metric dimension คือคู่ name/value ที่ใช้ระบุ metric เจาะจง เช่น InstanceId, Environment
- Namespace = ตู้เก็บ metrics ของแต่ละ service (custom namespace ต้องไม่ขึ้นต้นด้วย AWS/)
- Dimension = attribute ของ metric (เช่น InstanceId, InstanceType) สูงสุด 30 ต่อ metric
- EC2 Detailed Monitoring ส่ง metrics ทุก 1 นาที (เสียเงินเพิ่ม) ส่วน default คือทุก 5 นาที
- ใช้ Detailed Monitoring เมื่อต้องการ scale ASG ได้เร็วขึ้นด้วยข้อมูลถี่ขึ้น
Custom Metrics & High Resolution
สามารถส่ง Custom Metrics เข้า CloudWatch ผ่าน API PutMetricData ได้ เช่น RAM usage, จำนวนผู้ใช้ login (EC2 ไม่ส่ง memory metric ให้เอง ต้องส่งเอง) ค่า StorageResolution กำหนด resolution ได้ 2 แบบ
aws cloudwatch put-metric-data \
--namespace "MyApp/Performance" \
--metric-name "PageLoadTime" \
--dimensions Environment=Prod,Server=web1 \
--value 230 \
--unit Milliseconds \
--storage-resolution 102CloudWatch Logs (Groups, Agent, Insights)
CloudWatch Logs เก็บ log โดยจัดเป็นลำดับชั้น: Log Group (มักเป็นชื่อแอป) > Log Stream (instance/container/log file เดียวกัน) ตั้ง retention ได้ตั้งแต่ 1 วันถึงตลอดไป (never expire) ต่อ log group
แหล่งที่มาของ Logs และ Agents
- SDK, Elastic Beanstalk, ECS, Lambda, VPC Flow Logs, API Gateway, CloudTrail, Route 53 ส่ง log เข้า CloudWatch Logs ได้
- CloudWatch Logs Agent (รุ่นเก่า) ส่งได้แค่ logs
- CloudWatch Unified Agent (รุ่นใหม่ แนะนำ) ส่งทั้ง logs และ system metrics เช่น RAM, disk, processes, netstat
- EC2 ต้องมี IAM Role ที่อนุญาตให้ส่ง logs ไปยัง CloudWatch
Metric Filters & Logs Insights & Export
- Metric Filter = แปลง pattern ใน log ให้กลายเป็น CloudWatch metric (เช่น นับจำนวน ERROR) แล้วผูกกับ alarm ได้; ใช้ได้เฉพาะกับ log ที่เข้ามาหลังสร้าง filter (ไม่ย้อนหลัง)
- CloudWatch Logs Insights = query log แบบ interactive ด้วยภาษา query เฉพาะ (ไม่ใช่ real-time engine แต่เป็น query/analysis)
- Export to S3 = batch ใช้ CreateExportTask อาจใช้เวลาถึง 12 ชั่วโมง จึงพร้อมให้ export (ไม่เหมาะกับ near-real-time)
- Subscription Filter = stream log แบบ real-time ไปยัง Kinesis Data Streams, Firehose, หรือ Lambda
fields @timestamp, @message
| filter @message like /ERROR/
| sort @timestamp desc
| limit 2003CloudWatch Alarms & Dashboards
CloudWatch Alarm ใช้เพื่อ trigger การแจ้งเตือนจาก metric โดยมี 3 states: OK, INSUFFICIENT_DATA, และ ALARM ตั้งได้ทั้งจาก metric เดี่ยวหรือ math expression
Alarm Actions & EC2 Recovery
- EC2 Action: stop, terminate, reboot, หรือ recover instance
- Auto Scaling Action: เพิ่ม/ลด capacity
- SNS Action: ส่งข้อความไป SNS topic (แล้วต่อไป Lambda, SQS, email)
- EC2 Instance Recovery ใช้ StatusCheckFailed_System metric — instance ใหม่จะคง private/public IP, Elastic IP, metadata, placement group เดิม
Composite Alarms
Composite Alarm รวมหลาย alarm ด้วย logic AND/OR เพื่อลด alarm noise เช่น แจ้งเตือนเฉพาะเมื่อ CPU สูง และ network สูงพร้อมกัน ช่วยกรอง false alarm
04Amazon EventBridge (ครอบคลุมเน้น)
Amazon EventBridge (เดิมชื่อ CloudWatch Events) คือ serverless event bus ที่ทำงานแบบ event-driven โดยจับ event แล้วส่งไป target ผ่าน rule ปัจจุบัน EventBridge เป็นชื่อใหม่ที่มีฟีเจอร์มากกว่า CloudWatch Events (ที่เป็น API/ชื่อเดิม)
ประเภทของ Rule
Event Buses
- Default event bus = event จาก AWS services
- Partner event bus = event จาก SaaS partners (เช่น Zendesk, Datadog)
- Custom event bus = event จากแอปของคุณเอง (PutEvents)
- Event bus แชร์ข้าม account ได้ผ่าน resource-based policy
- Archive & Replay เก็บ event ไว้ replay ภายหลังได้
Schema Registry
Schema Registry วิเคราะห์ event ใน bus เพื่อสร้าง schema (โครงสร้างข้อมูล) อัตโนมัติ และสร้าง code bindings สำหรับแอปคุณ ทำให้รู้ว่า event มี field อะไรบ้าง รองรับ versioning
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["stopped", "terminated"]
}
}| หัวข้อ | CloudWatch Events (เดิม) | EventBridge (ใหม่) |
|---|---|---|
| Event bus | มีแต่ default bus | default + custom + partner bus |
| SaaS partner events | ไม่รองรับ | รองรับ |
| Schema Registry | ไม่มี | มี |
| Archive & Replay | ไม่มี | มี |
| สถานะ | ชื่อ/API เดิม | ชื่อแนะนำปัจจุบัน (superset) |
05AWS X-Ray: Concepts & Tracing (เน้น)
AWS X-Ray เป็นบริการ distributed tracing ช่วยวิเคราะห์และดีบัก microservices โดยติดตาม request ที่วิ่งผ่านหลาย service เห็นภาพรวมเป็น Service Map และหา bottleneck/error ได้ ใช้แทนการ debug ด้วย log กระจัดกระจาย
Segments, Subsegments & Trace
- Trace = end-to-end ของ request เดียวที่ประกอบจากหลาย segment
- Segment = ข้อมูลที่แต่ละ service/compute resource ส่งให้ X-Ray
- Subsegment = รายละเอียดย่อยภายใน segment เช่น call ไป DynamoDB, HTTP downstream
- Service Map = แผนภาพ visual ของ service ทั้งหมดและความสัมพันธ์
Annotations vs Metadata
| คุณสมบัติ | Annotations | Metadata |
|---|---|---|
| รูปแบบ | key-value pairs | key-value (object/array ซับซ้อนได้) |
| ใช้ filter/search ได้ | ได้ (indexed) | ไม่ได้ (not indexed) |
| จุดประสงค์ | ใช้กรอง trace ใน console | เก็บข้อมูลเพิ่มเติมที่ไม่ต้อง search |
06X-Ray: Daemon, Sampling & Integrations
X-Ray SDK ส่ง trace ไปยัง X-Ray Daemon (process ที่ listen UDP port 2000) ซึ่งทำหน้าที่ buffer และส่ง batch ไปยัง X-Ray API การติดตั้ง daemon ต่างกันตาม compute
การติดตั้ง Daemon ตาม Service
Sampling Rules
Sampling Rules ควบคุมว่าจะเก็บ trace กี่ % เพื่อลด cost และ overhead โดย default คือ reservoir 1 request ต่อวินาที บวกกับ 5% ของ request ที่เหลือ ปรับ rules ได้โดยไม่ต้อง redeploy code (เปลี่ยนใน X-Ray console/API)
ServiceLens
ServiceLens รวม X-Ray traces + CloudWatch metrics + logs เข้าด้วยกัน ให้เห็น health และ performance ของ service ครบในที่เดียว
{
"description": "Sample 10% with reservoir of 1/s",
"service_name": "*",
"http_method": "*",
"url_path": "*",
"fixed_target": 1,
"rate": 0.1
}07AWS CloudTrail (Audit & Governance)
AWS CloudTrail บันทึก API calls และ activity ทั้งหมดใน account ตอบโจทย์ governance, compliance และ audit เปิดใช้ by default และเก็บ event history 90 วัน; ถ้าต้องการเก็บนานกว่านั้นต้องสร้าง Trail ส่งไป S3
Management Events vs Data Events
| ประเภท | Management Events | Data Events |
|---|---|---|
| บันทึกอะไร | operations บน resources (เช่น CreateBucket, AttachRolePolicy) | การเข้าถึงข้อมูลภายใน resource |
| ตัวอย่าง | config security, network | S3 GetObject/PutObject, Lambda Invoke |
| Default | เปิดบันทึก | ปิด (ปริมาณสูง เสียเงินเพิ่ม) |
| ปริมาณ | ต่ำกว่า | สูงมาก |
Insights, Integrity & Multi-region
- CloudTrail Insights ตรวจจับ activity ผิดปกติ (unusual API call patterns) เช่น burst ของ IAM action หรือ resource provisioning ที่ผิดปกติ — เป็นฟีเจอร์เสริมที่ต้องเปิด
- Log File Integrity Validation ใช้ SHA-256 hashing + RSA signing พิสูจน์ว่า log file ไม่ถูกแก้ไข/ลบ
- Multi-region Trail จับ event จากทุก region (แนะนำเปิด)
- Organization Trail จับทุก account ใน AWS Organizations
08สรุปเปรียบเทียบ & เลือกบริการให้ถูก
ส่วนนี้เป็นสรุปไว้ตัดสินใจเร็วในห้องสอบ โจทย์ DVA-C02 มักให้ scenario แล้วถามว่าควรใช้บริการไหน ความต่างของแต่ละบริการคือ keyword หลัก
| ต้องการ | บริการที่ถูก | keyword โจทย์ |
|---|---|---|
| ดู metric/สุขภาพระบบ + RAM | CloudWatch (Unified Agent) | memory, disk, CPU, dashboard |
| ใครเรียก API / ลบ resource | CloudTrail | who, audit, compliance, deleted |
| trace request ข้าม microservices | X-Ray | latency bottleneck, distributed, service map |
| event-driven / cron serverless | EventBridge | react to event, schedule, partner SaaS |
| stream log real-time | CloudWatch Logs Subscription | near real-time, Kinesis/Firehose |
| query log สืบสวน | CloudWatch Logs Insights | search/analyze logs |
- เห็นคำว่า memory/RAM/disk บน EC2 -> CloudWatch Unified Agent + custom metric
- เห็นคำว่า who/audit/compliance/หา root cause ว่าใครเปลี่ยน -> CloudTrail
- เห็นคำว่า distributed/latency/bottleneck ข้าม service -> X-Ray
- เห็นคำว่า react to / on event / cron / SaaS partner -> EventBridge
- เห็นคำว่า near real-time log to S3/OpenSearch -> Subscription Filter + Firehose
คำถามทบทวน
ทดสอบความเข้าใจหัวข้อ Monitoring, Troubleshooting & Audit
24 ข้อ · เลือกคำตอบเพื่อดูเฉลยและคำอธิบาย
1.ทีมต้องการ monitor memory utilization ของ EC2 instances ใน production ควรทำอย่างไร?
2.บริษัทต้องการ stream application logs จาก CloudWatch Logs ไปยัง Amazon OpenSearch แบบ near-real-time ควรใช้อะไร?
3.Developer ต้องการกรอง X-Ray traces ตามค่า customerId เพื่อหา request ของลูกค้ารายหนึ่ง ควรเก็บ customerId แบบใด?
4.ต้องการลดอัตราการ sampling ของ X-Ray ใน production โดยไม่หยุด service ควรทำอย่างไร?
5.Security team ต้องการรู้ว่าใครเป็นคนลบ security group เมื่อวานนี้ ควรดูจากที่ไหน?
6.บริษัทต้องการตรวจสอบว่าใครเข้าถึง (GetObject) ไฟล์ใน S3 bucket ที่เก็บข้อมูลลับ จะเปิดอะไรใน CloudTrail?
7.ต้องการรัน Lambda function ทุกวันเวลา 8 โมงเช้าแบบ serverless ควรใช้อะไร?
8.องค์กรต้องการรับ events จาก SaaS provider (เช่น Datadog) เข้ามาประมวลผลใน AWS ควรใช้ฟีเจอร์ใด?
9.single EC2 instance เกิด system status check failure (ปัญหา hardware ฝั่ง AWS) ต้องการกู้คืนอัตโนมัติโดยคง private/public IP เดิม ควรทำอย่างไร?
10.ทีมต้องการ alert เฉพาะเมื่อ CPU สูง และ network สูงพร้อมกัน เพื่อลด false alarm ควรใช้อะไร?
11.ต้องการนับจำนวน log entry ที่มีคำว่า ERROR แล้วสร้าง alarm เมื่อเกิน threshold ควรใช้อะไร?
12.X-Ray daemon รับ trace data จาก SDK ผ่าน protocol และ port ใด?
13.Lambda function เปิด Active Tracing แล้วแต่ trace ไม่ปรากฏใน X-Ray สาเหตุที่เป็นไปได้มากที่สุดคือ?
14.บริษัทต้องการพิสูจน์ในการ audit ว่า CloudTrail log files ไม่ถูกแก้ไขหรือลบหลังจากบันทึก ควรใช้ฟีเจอร์ใด?
15.CloudWatch high-resolution custom metric รองรับ storage resolution ค่าใดบ้าง?
16.ทีมต้องการ visualize health, latency และ error ของ microservices หลายตัวพร้อม metrics และ logs ในที่เดียว ควรใช้อะไร?
17.ข้อใดอธิบายความสัมพันธ์ระหว่าง trace, segment, subsegment ใน X-Ray ได้ถูกต้อง?
18.Default X-Ray sampling rule กำหนดค่าเริ่มต้นไว้อย่างไร?
19.ข้อใดคือเหตุผลหลักที่ควรเลือก EventBridge แทน CloudWatch Events (ชื่อเดิม)?
20.ต้องการ export CloudWatch Logs ไป S3 เพื่อเก็บ archive ระยะยาว ข้อใดถูกต้องเกี่ยวกับ CreateExportTask?
21.Developer สงสัยว่า request ที่ช้าเกิดจาก downstream service ใดในสถาปัตยกรรม microservices ควรใช้อะไร?
22.CloudTrail Insights ใช้ตรวจจับอะไร?
23.API Gateway ต้องการเปิด X-Ray tracing เพื่อตาม request ที่วิ่งจาก API GW ไป backend ควรทำอย่างไร?
24.ต้องการเก็บ CloudTrail event history นานกว่า 90 วันเพื่อ compliance ควรทำอย่างไร?