CloudWatch Metrics, Alarms and Dashboards
Amazon CloudWatch ให้ observability ผ่าน metrics, alarms, dashboards และ agent เพื่อให้คุณเห็น resource utilization, application health และ operational signals แบบ real time
Metrics, Namespace และ Dimension
Metric คือข้อมูลเชิงตัวเลขตามเวลา เช่น CPUUtilization, DiskReadOps หรือ custom business metric
Namespace คือกลุ่มของ metric เช่น AWS/EC2 ส่วน Dimension คือ key-value ที่ระบุ resource หรือมุมมอง เช่น InstanceId
Namespace: AWS/EC2
Metric: CPUUtilization
Dimension: InstanceId=i-0123456789abcdef0
Statistic: Average
Period: 5 minutes
CloudWatch Alarm
Alarm monitor metric เทียบกับ threshold แล้วเปลี่ยน state เช่น OK, ALARM หรือ INSUFFICIENT_DATA Alarm ที่ดีควร action ได้จริง เช่นส่ง SNS, trigger automation หรือเปิด incident ไม่ใช่แค่ส่ง noise
Dashboard
Dashboard รวม metrics และ logs visualization ไว้ดูระบบแบบเร็ว เช่น API latency, error rate, CPU, memory, database connection, queue depth และ alarm state สำหรับ service สำคัญ
CloudWatch Agent
EC2 ส่ง basic metrics บางตัวให้ CloudWatch เอง แต่ metrics ระดับ OS เช่น memory, disk usage และ custom log files มักต้องใช้ CloudWatch Agent และ IAM Role ที่มี permission เหมาะสม
Common mistakes
- ตั้ง alarm จาก CPU อย่างเดียว ทั้งที่ user impact อยู่ที่ latency/error rate
- ตั้ง threshold แคบเกินจน alert บ่อยและทีมไม่สนใจ
- ไม่มี dashboard สำหรับ incident ทำให้เสียเวลาหา metric ตอนระบบมีปัญหา
- ลืมว่าบาง custom metrics และ high-resolution metrics มีค่าใช้จ่าย
Review questions
- Namespace และ Dimension ใช้ทำอะไร?
- Alarm ที่ actionable ควรมีคุณสมบัติอะไร?
- CloudWatch Agent ช่วยเก็บ metrics/logs อะไรที่ EC2 basic metrics ไม่มี?