ทำไมต้อง Monitor (Why Monitor?)
Monitoring คือหัวใจของการดูแลระบบบน cloud — ถ้าไม่มี visibility ก็ไม่รู้ว่าระบบทำงานปกติหรือไม่ มีปัญหาตรงไหน หรือมีคนเข้ามาทำอะไรกับ account
- Visibility: มองเห็นสถานะการทำงานของระบบทั้งหมด แบบ real-time
- Troubleshoot issues: หาสาเหตุของปัญหาได้รวดเร็วเมื่อ application เกิด error
- Improve performance: ระบุ bottleneck แล้วปรับปรุงประสิทธิภาพ
- Security audit: ตรวจสอบว่ามี unauthorized access หรือ suspicious activity หรือไม่
- Compliance: เก็บหลักฐานสำหรับ audit (PCI-DSS, HIPAA, SOC) ว่าระบบเป็นไปตามข้อกำหนด
- Cost optimization: หาว่า resource ใดถูกใช้น้อย/ไม่ได้ใช้ เพื่อลดค่าใช้จ่าย
Amazon CloudWatch
เก็บ metrics + logs + events จาก AWS services และ application ของคุณ พร้อม alarms และ dashboards
AWS CloudTrail
บันทึกทุก API call ภายใน AWS account เพื่อ governance, compliance, และ audit
AWS Config
ตรวจสอบและบันทึกการเปลี่ยนแปลง configuration ของ resource เพื่อ compliance
Health Dashboards
Service Health Dashboard (สถานะ AWS public) + Personal Health Dashboard (resource ของคุณ)
CloudWatch Metrics
CloudWatch Metrics คือข้อมูลตัวเลข (variable) ที่เราต้องการ monitor เช่น CPU, network, disk — ทุก AWS service ส่ง default metrics มาให้อัตโนมัติ
- Variable to monitor: CPU utilization, network in/out, disk read/write ฯลฯ
- AWS services come with default metrics — ไม่ต้อง config เอง
- Namespace: metric แต่ละตัวอยู่ใน namespace ของแต่ละ service เช่น AWS/EC2, AWS/S3, AWS/Lambda
- Dimension: attribute ของ metric เช่น InstanceId, InstanceType — ใช้แยก metric ของแต่ละ resource
- Metric หนึ่งตัวมีได้สูงสุด 30 dimensions
- ทุก metric มี timestamp ติดมาด้วย
- Custom Metrics: ส่ง metric ของเราเองได้ผ่าน PutMetricData API (เช่น active users, queue length)
- High-resolution custom metrics: ส่งได้ละเอียดถึง 1 วินาที (StorageResolution = 1)
CloudWatch Alarms
CloudWatch Alarms ใช้ trigger notification หรือ action เมื่อ metric เข้าเงื่อนไข (threshold) ที่ตั้งไว้ — ใช้ตอบสนองอัตโนมัติเมื่อระบบมีปัญหา
- Trigger notifications สำหรับ any metric ใน CloudWatch
- Various options: sampling, percentage, max, min, average, sum ฯลฯ
- Alarm States (3 states): OK / INSUFFICIENT_DATA / ALARM
- Alarm Period: 10 วินาที, 30 วินาที, หรือทวีคูณของ 60 วินาที
Auto Scaling Action
Trigger ASG ให้ scale out (เพิ่ม instance) หรือ scale in (ลด instance) เมื่อ alarm เข้า ALARM state เช่น CPU > 70% → เพิ่ม instance
EC2 Action
Stop, Terminate, Reboot, หรือ Recover EC2 instance อัตโนมัติเมื่อ alarm trigger เช่น StatusCheckFailed → recover
SNS Notifications
ส่ง notification ผ่าน SNS topic ไปยัง email, SMS, Lambda, SQS เมื่อ alarm state เปลี่ยน
Composite Alarms
รวมหลาย alarms เข้าด้วยกันด้วย AND / OR logic เช่น Alarm1 AND Alarm2 = ALARM → จึงจะ trigger — ลด alarm noise
CloudWatch Logs
CloudWatch Logs คือที่เก็บ log แบบ centralized ของ AWS สำหรับ application logs และ AWS service logs ค้นหาและวิเคราะห์ได้ในที่เดียว
- Log Groups: มักเป็นหนึ่งกลุ่มต่อ application เช่น /aws/lambda/my-function
- Log Streams: อยู่ภายใน log group แยกตาม instance, container, หรือ log file
- Log Expiration Policies: กำหนดเวลาเก็บ log ได้ (never expire / 1 day / 1 year / 10 years)
- Export to S3: ส่ง log ไป S3 สำหรับ long-term archive ราคาถูกกว่า
- Stream to ElasticSearch (OpenSearch): ส่งต่อเพื่อ search + analytics ขั้นสูง
Sources of Logs
SDK / CloudWatch Logs Agent / Elastic Beanstalk / ECS / Lambda / VPC Flow Logs / API Gateway / CloudTrail / Route 53 — ทุก service หลักของ AWS ส่ง log มาที่ CloudWatch Logs ได้
CloudWatch Logs Insights
Search + analyze logs ด้วย custom query language — query แบบ SQL-like เพื่อหา error, นับ event, หรือ aggregate ข้อมูล
Logs → Metrics (Metric Filter)
แปลง pattern ใน log เป็น metric เช่น count คำว่า ERROR แล้วทำ alarm — ตอบสนองต่อ event ใน log อัตโนมัติ
Real-time Processing
Subscribe log ไปยัง Lambda, Kinesis Data Streams, Kinesis Firehose เพื่อ process แบบ real-time
CloudWatch Events / EventBridge
CloudWatch Events (ชื่อเดิม) = Amazon EventBridge (ชื่อใหม่ + features เพิ่ม) คือ event bus ที่ใช้ตอบสนองต่อเหตุการณ์ใน AWS แบบ real-time
- Schedule (Cron): ตั้งให้ทำงานตามเวลา เช่น ทุก 1 ชั่วโมง trigger Lambda
- Event Pattern: trigger เมื่อ AWS service ทำอะไรบางอย่าง เช่น EC2 state change, S3 object upload, CodePipeline failure
- Targets: Lambda, SNS, SQS, Step Functions, ECS Task ฯลฯ
Default Event Bus
Bus มาตรฐานที่ AWS services ส่ง event มาให้อัตโนมัติ — ทุก account มีให้ใช้
Custom Event Bus
สร้าง bus ของเราเองสำหรับ application events ภายใน — แยก event ของแต่ละ team/service
Partner Event Bus
รับ events จาก SaaS partners เช่น Zendesk, Datadog, Auth0 เข้ามาใน AWS โดยตรง
Schema Registry
เก็บ schema ของ events ทำให้ developer รู้รูปแบบ event แล้ว generate code (SDK bindings) ได้อัตโนมัติ
CloudWatch Dashboards
CloudWatch Dashboards คือ custom view สำหรับแสดง metrics + alarms รวมในหน้าจอเดียว — เหมาะสำหรับ NOC / DevOps team ที่ต้อง monitor ระบบทั้งหมด
- สูงสุด 1,000 dashboards ต่อ account
- สูงสุด 100 widgets ต่อ dashboard
- Cross-region + Cross-account: รวม metrics จากหลาย region และหลาย account ในหน้าเดียว
- Dashboard เป็น Global resource — สร้างทีเดียวเข้าดูได้จากทุก region
- Pricing: 3 dashboards แรกฟรี (50 metrics/dashboard) จากนั้น $3/dashboard/เดือน
AWS CloudTrail
AWS CloudTrail ให้บริการ governance, compliance และ audit สำหรับ AWS account ของคุณ — เปิดใช้งาน by default ทุก account ดู event history ย้อนหลังได้ 90 วันฟรี
- บันทึก history of events / API calls ที่เกิดขึ้นใน AWS account
- ครอบคลุมทุก source: Console, SDK, CLI, AWS services (เพราะทุกอย่างเรียกผ่าน API หมด)
- Logs to: CloudWatch Logs และ/หรือ S3 (สำหรับเก็บถาวร)
- Trail: ตั้งค่าให้ apply All Regions (default, แนะนำ) หรือ single Region
Management Events
Operations ที่จัดการ resource เช่น create user, set IAM policy, configure security group — logged by default ฟรี (control plane operations)
Data Events
High-volume operations เช่น S3 GetObject / PutObject / DeleteObject, Lambda Invoke — opt-in เพราะปริมาณมหาศาลและเสียค่าใช้จ่าย
CloudTrail Insights
ตรวจจับ unusual activity โดยอัตโนมัติด้วย ML — anomaly detection เช่น API call spike, error rate ผิดปกติ (เสียค่าใช้จ่ายเพิ่ม)
Retention
Console ดูได้ 90 วันฟรี — ส่งไป S3 เก็บได้ตลอดไป หรือใช้ CloudTrail Lake เก็บได้ถึง 7 ปี (queryable ด้วย SQL)
CloudTrail vs CloudWatch
หลายคนสับสน 2 service นี้ — จำให้ขึ้นใจว่าทำงานคนละหน้าที่:
CloudWatch
Monitoring — เก็บ metrics + logs จาก application และ AWS services ตอบคำถาม "ระบบทำงานเป็นอย่างไร?" (CPU สูงไหม, มี error log ไหม)
CloudTrail
Audit — บันทึก API calls / governance / compliance ตอบคำถาม "ใครทำอะไร เมื่อไร?" (ใครลบ S3 bucket, ใคร modify IAM)
AWS Config
AWS Config ช่วยในด้าน auditing และบันทึก compliance ของ AWS resources — เก็บประวัติ configuration และการเปลี่ยนแปลงตลอดเวลา
- Records configurations and changes over time — ดูได้ว่า resource เคยถูกตั้งค่าอย่างไรในอดีต
- Stores config data in S3 (วิเคราะห์ต่อด้วย Athena ได้)
- Per-region service — ต้องเปิดในแต่ละ region แต่สามารถ aggregate ข้าม regions และ accounts ได้
- Alerts via SNS เมื่อมีการเปลี่ยนแปลง config
- ใช้ร่วมกับ CloudTrail ได้ — Config บอก "resource เปลี่ยนเป็นอะไร" ส่วน CloudTrail บอก "ใครเปลี่ยน"
Q: SSH access ไหน unrestricted?
Config rule ตรวจสอบ Security Group ว่ามี 0.0.0.0/0 บน port 22 หรือไม่ — แจ้งเตือนทันทีถ้าเจอ
Q: S3 buckets ไหน public?
Config rule ตรวจสอบ bucket policy + ACL ว่าเปิด public access หรือไม่ — สำคัญสำหรับ data security
Q: ALB config เปลี่ยนอย่างไร?
ดู configuration timeline ของ ALB — เห็นทุกการเปลี่ยนแปลง listener, target group, security group
AWS Config Resource View
ดู compliance + configuration over time ของ resource หนึ่งตัว + CloudTrail API calls ที่เกี่ยวข้อง — รวมข้อมูลในที่เดียว
AWS Service Health Dashboard
AWS Service Health Dashboard เป็น public dashboard ที่แสดงสถานะของ AWS services ทุกตัวในทุก region — ใครก็เข้าดูได้ ไม่ต้อง login
- URL: https://status.aws.amazon.com
- แสดงสถานะของ ทุก AWS service ทั่วทุก region
- แสดง service outages และ incidents ทั่วโลก
- ดูประวัติของ events ย้อนหลังได้
- เป็น generic view ไม่เจาะจงว่า resource ของคุณได้รับผลกระทบหรือไม่
AWS Personal Health Dashboard (PHD)
AWS Personal Health Dashboard (PHD) ให้ personalized view ของสุขภาพ AWS resources ที่คุณใช้งานจริง — แตกต่างจาก Service Health Dashboard ที่เป็น public แบบรวม
- Alerts เมื่อ resource ของคุณเอง ได้รับผลกระทบ (ไม่ใช่แค่ทุก service)
- ให้ remediation steps — บอกว่าควรทำอะไรเพื่อแก้ปัญหา
- Proactive notifications: แจ้งล่วงหน้าเรื่อง scheduled changes เช่น EC2 ที่ underlying hardware กำลังจะถูก retire, RDS maintenance window
- Integration กับ EventBridge — automate การตอบสนองเมื่อมี health event
- ดูข้อมูล Open issues, Scheduled changes, Other notifications
Comparison Summary
ตารางสรุปเครื่องมือ Cloud Monitoring แต่ละตัวและ use case:
CloudWatch Metrics
Use case: ดูสถานะ performance ของ resource (CPU, memory, network) — ตอบคำถาม "ระบบทำงานปกติไหม?"
CloudWatch Logs
Use case: เก็บและ search application logs จาก Lambda, ECS, EC2 — ตอบคำถาม "app log error อะไร?"
CloudWatch Alarms
Use case: trigger action เมื่อ metric ข้าม threshold เช่น auto scale, ส่ง SNS — ตอบสนองอัตโนมัติ
CloudWatch Events / EventBridge
Use case: schedule cron jobs + react ต่อ AWS events — automate workflow
CloudTrail
Use case: audit API calls — ตอบคำถาม "ใครทำอะไร เมื่อไร จากที่ไหน?" (governance, compliance, security)
AWS Config
Use case: track configuration changes + compliance — ตอบคำถาม "resource ถูกตั้งค่าอย่างไร และ compliant ไหม?"
Service Health Dashboard
Use case: ดูสถานะ AWS services ทั้งหมด (public) — ตอบคำถาม "AWS ล่มทั่วโลกไหม?"
Personal Health Dashboard
Use case: ดูสถานะ resource ของคุณเอง + remediation — ตอบคำถาม "resource ของฉันได้รับผลกระทบไหม?"
Decision Tree สำหรับข้อสอบ — เริ่มจากคำถามใน scenario แล้วจับคู่กับบริการที่ตอบโจทย์โดยตรง:
"ใครทำ?"
ต้อง audit API call ว่าใครเรียก เมื่อไร จากที่ไหน → CloudTrail
"ระบบทำงานอย่างไร?"
ดู performance metric, log และ alarm ของ resource → CloudWatch
"resource ตั้งค่าอย่างไร / compliant ไหม?"
ติดตาม configuration change และ compliance rule → AWS Config
"AWS service ล่มไหม?"
ดูสถานะบริการ AWS แบบ public ทั่วโลก → Service Health Dashboard
"resource ของฉัน healthy ไหม?"
ดูสถานะ resource ใน account ของคุณเอง พร้อม remediation → Personal Health Dashboard
Summary
Cloud Monitoring บน AWS ใช้บริการหลายตัวร่วมกัน — แต่ละตัวมีบทบาทเฉพาะ และเสริมกันเป็นภาพรวมของ visibility, governance และ compliance
Amazon CloudWatch
Monitoring แบบครบวงจร: Metrics, Alarms, Logs, Events / EventBridge และ Dashboards
AWS CloudTrail
Audit ทุก API call ใน account — ตอบคำถาม “ใครทำอะไร เมื่อไร จากที่ไหน”
AWS Config
ติดตาม configuration change ของ resource ตามเวลา และตรวจสอบ compliance rule
Health Dashboards
Service Health = สถานะ AWS แบบ public ส่วน Personal Health = สถานะ resource ใน account คุณเอง
- CloudWatch Metrics: ตัวเลข performance ของ AWS service และ custom metric รองรับ high-resolution ถึง 1 วินาที
- CloudWatch Alarms: มี 3 states (OK / INSUFFICIENT_DATA / ALARM) trigger ASG, EC2 action, SNS หรือ composite alarm
- CloudWatch Logs: ใช้ log group และ stream เก็บ log จาก Lambda, ECS, VPC Flow Logs, API Gateway ฯลฯ และ query ด้วย Logs Insights
- EventBridge: cron schedule และ event pattern → trigger Lambda / SNS / SQS รองรับ multiple event buses และ schema registry
- CloudWatch Dashboards: สูงสุด 1000 dashboards / account และ 100 widgets / dashboard รองรับ cross-region และ cross-account
- CloudTrail Events: แบ่งเป็น Management, Data และ Insights — เปิด default และดูย้อนหลังได้ 90 วันฟรี
- AWS Config: ทำงาน per-region แต่สามารถ aggregate ข้าม account และข้าม region ได้
- Personal Health Dashboard: ให้คำแนะนำ remediation เมื่อ resource ของคุณได้รับผลกระทบ