0Pricing
AWS Solutions Architect · บทเรียน

การแจ้งเตือน CloudWatch และการแจ้งเตือนแบบผสม

ตั้งค่าการแจ้งเตือนตามเกณฑ์เพื่อเรียกใช้ Auto Scaling หรือการแจ้งเตือน SNS และรวมการแจ้งเตือนหลายรายการเป็นการแจ้งเตือนแบบผสมเพื่อลดการแจ้งเตือนรบกวน

การแจ้งเตือน CloudWatch และการแจ้งเตือนแบบผสม เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

CloudWatch alarm คืออะไร

CloudWatch alarm จะตรวจสอบตัวชี้วัดเดียวหรือผลลัพธ์จากนิพจน์คณิตศาสตร์ของตัวชี้วัดในช่วงเวลาที่คุณกำหนด เมื่อค่าตัวชี้วัดข้ามค่าเกณฑ์ที่คุณกำหนด alarm จะเปลี่ยนสถานะและสามารถ ทริกเกอร์การดำเนินการ ได้โดยอัตโนมัติ เช่น ส่งการแจ้งเตือน SNS ปรับขนาดกลุ่ม Auto Scaling หยุดอินสแตนซ์ EC2 หรือเรียกใช้ OpsItem ของระบบจัดการ โดย alarm เป็นกลไกหลักสำหรับการตอบสนองด้านปฏิบัติการแบบอัตโนมัติใน AWS

สถานะของ alarm

CloudWatch alarm จะอยู่ในหนึ่งในสามสถานะเสมอ: OK — ตัวชี้วัดอยู่ภายในค่าเกณฑ์ที่กำหนด; ALARM — ตัวชี้วัดข้ามค่าเกณฑ์เป็นจำนวนรอบการประเมินตามที่กำหนด; INSUFFICIENT_DATA — เพิ่งสร้าง alarm ตัวชี้วัดยังไม่พร้อมใช้งาน หรือยังรวบรวมข้อมูลได้ไม่เพียงพอ การเปลี่ยนสถานะจะทริกเกอร์การดำเนินการที่กำหนดค่าไว้สำหรับการเปลี่ยนแปลงสถานะนั้น คุณสามารถกำหนดหัวข้อ SNS ที่แตกต่างกันสำหรับสถานะ OK, ALARM และ INSUFFICIENT_DATA ได้

# View all alarms and their current state
aws cloudwatch describe-alarms \
  --query 'MetricAlarms[].{Name:AlarmName,State:StateValue,Metric:MetricName}' \
  --output table

# List only alarms currently in ALARM state
aws cloudwatch describe-alarms \
  --state-value ALARM \
  --query 'MetricAlarms[].AlarmName'

การสร้าง CloudWatch alarm

เมื่อสร้าง alarm คุณต้องระบุ: ตัวชี้วัด และเนมสเปซ, สถิติ (Average, Sum, Maximum เป็นต้น), ช่วงเวลา (ความถี่ในการประเมินตัวชี้วัดเป็นวินาที), รอบการประเมิน (จำนวนช่วงเวลาติดต่อกันที่ต้องข้ามค่าเกณฑ์), ค่า เกณฑ์ และ ตัวดำเนินการเปรียบเทียบ alarm จะทริกเกอร์เมื่อตัวชี้วัดข้ามค่าเกณฑ์เป็นจำนวนรอบการประเมินติดต่อกันตามที่ระบุ

# Create an alarm: trigger when CPU > 70% for 2 consecutive 5-min periods
aws cloudwatch put-metric-alarm \
  --alarm-name HighCPUAlarm \
  --alarm-description 'Trigger when EC2 CPU exceeds 70%' \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
  --statistic Average \
  --period 300 \
  --evaluation-periods 2 \
  --threshold 70 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:AlertTeam

การดำเนินการของ alarm: SNS, Auto Scaling, EC2

การดำเนินการของ alarm สามารถกำหนดปลายทางได้หลายประเภท: หัวข้อ Amazon SNS (สำหรับส่งอีเมล, SMS หรือทริกเกอร์ Lambda), นโยบาย Auto Scaling (สำหรับปรับขนาดเข้า หรือปรับขนาดออกของ ASG) และ การดำเนินการของ EC2 (สำหรับหยุด ยุติ รีบูต หรือกู้คืนอินสแตนซ์ EC2) สำหรับแต่ละสถานะ (OK, ALARM, INSUFFICIENT_DATA) คุณสามารถระบุชุดการดำเนินการที่แตกต่างกันได้ ตัวอย่างเช่น แจ้งทีมเมื่อเป็น ALARM แจ้งเมื่อกู้คืนด้วย OK และแจ้งเตือนเมื่อเป็น INSUFFICIENT_DATA เพื่อค้นหาช่องว่างในการตรวจสอบ

# Alarm that stops an idle EC2 instance when CPU < 1% for 30 min
aws cloudwatch put-metric-alarm \
  --alarm-name LowCPUStopInstance \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
  --statistic Average \
  --period 300 \
  --evaluation-periods 6 \
  --threshold 1 \
  --comparison-operator LessThanThreshold \
  --alarm-actions arn:aws:swf:us-east-1:111122223333:action/actions/AWS_EC2.InstanceId.Stop/1.0

การจัดการข้อมูลที่ขาดหาย

เมื่อ CloudWatch ประเมิน alarm และพบว่าจุดข้อมูลบางส่วนขาดหาย คุณต้องตัดสินใจว่าจะจัดการกับจุดข้อมูลเหล่านั้นอย่างไร ตัวเลือกมีดังนี้: notBreaching (ถือว่าข้อมูลที่ขาดหายอยู่ภายในค่าเกณฑ์ — alarm ยังคงเป็น OK หากข้อมูลอื่นเป็น OK), breaching (ถือว่าข้อมูลที่ขาดหายเกินค่าเกณฑ์ — alarm เปลี่ยนเป็น ALARM), ignore (สถานะของ alarm ไม่เปลี่ยนแปลง) และ missing (alarm เปลี่ยนเป็น INSUFFICIENT_DATA) การเลือกตัวเลือกผิดอาจทำให้เกิดผลบวกเท็จหรือความล้มเหลวที่ไม่แสดงสัญญาณ ซึ่งเป็นประเด็นสำคัญของข้อสอบ SAA-C03

# Set missing data treatment on an alarm
aws cloudwatch put-metric-alarm \
  --alarm-name WebsiteLatencyAlarm \
  --metric-name TargetResponseTime \
  --namespace AWS/ApplicationELB \
  --statistic Average \
  --period 60 \
  --evaluation-periods 3 \
  --threshold 2.0 \
  --comparison-operator GreaterThanThreshold \
  --treat-missing-data breaching \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:Ops

ความละเอียดของ alarm และรอบการประเมิน

ความละเอียดของ alarm คือผลคูณของช่วงเวลา × รอบการประเมิน ตัวอย่างเช่น ช่วงเวลา 60 วินาทีร่วมกับรอบการประเมิน 5 รอบ หมายความว่า alarm จะพิจารณาจุดข้อมูลขนาด 1 นาทีติดต่อกัน 5 จุด โดยค่าเริ่มต้น alarm จะเปลี่ยนเป็น ALARM ก็ต่อเมื่อ ทั้งห้าช่วงเวลาข้ามค่าเกณฑ์ คุณสามารถกำหนดค่า datapoints-to-alarm เพื่อให้ต้องมีเพียง M จาก N ช่วงเวลาที่ข้ามค่าเกณฑ์ เช่น 3 จาก 5 ซึ่งช่วยลดผลบวกเท็จจากการพุ่งขึ้นชั่วคราวได้

# Alarm that requires 3 out of 5 periods to breach (reduces false positives)
aws cloudwatch put-metric-alarm \
  --alarm-name CPUSpike \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=AutoScalingGroupName,Value=my-asg \
  --statistic Average \
  --period 60 \
  --evaluation-periods 5 \
  --datapoints-to-alarm 3 \
  --threshold 80 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:autoscaling:us-east-1:111122223333:scalingPolicy:...

Composite alarm: การรวม alarm หลายรายการ

composite alarm จะประเมินสถานะของ alarm อื่นหลายรายการโดยใช้ตรรกะบูลีน (AND, OR, NOT) โดยจะเข้าสู่สถานะ ALARM ก็ต่อเมื่อนิพจน์กฎของตนประเมินค่าเป็นจริง Composite alarm ใช้เพื่อ ลดเสียงรบกวนจากการแจ้งเตือน ตัวอย่างเช่น แจ้งเตือนเฉพาะเมื่อ alarm ของ CPU สูงและ alarm ของความหน่วงสูงทำงานพร้อมกัน เพราะ CPU สูงเพียงอย่างเดียวอาจยอมรับได้ระหว่างการประมวลผลแบบกลุ่ม นอกจากนี้ คุณยังใช้ composite alarm เพื่อระงับ alarm ลูกระหว่างช่วงเวลาบำรุงรักษาได้

# Create a composite alarm (alerts only when BOTH CPU and latency are high)
aws cloudwatch put-composite-alarm \
  --alarm-name HighLoadComposite \
  --alarm-rule 'ALARM("HighCPUAlarm") AND ALARM("HighLatencyAlarm")' \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:CriticalOps \
  --alarm-description 'Alert only when both CPU and latency are elevated'

การระงับ alarm ด้วย composite alarm

Composite alarm รองรับ การดำเนินการระงับ alarm คุณสามารถกำหนดค่า composite alarm ให้ระงับ alarm ลูกระหว่างการบำรุงรักษาตามแผนได้ ตัวอย่างเช่น ระหว่างช่วงเวลาการนำระบบไปใช้งาน คุณอาจตั้งค่า composite alarm ที่รวม alarm 'MaintenanceMode' ด้วยตรรกะ OR เพื่อระงับการแจ้งเตือนของ alarm ลูกทั้งหมดขณะที่การบำรุงรักษายังทำงานอยู่ วิธีนี้ช่วยป้องกันการแจ้งเตือนจำนวนมหาศาลเมื่อคุณตั้งใจนำบริการออกจากระบบเพื่ออัปเกรด

# Composite alarm with suppression: alert UNLESS maintenance is active
aws cloudwatch put-composite-alarm \
  --alarm-name ProductionAlerts \
  --alarm-rule 'ALARM("HighCPUAlarm") AND NOT ALARM("MaintenanceModeAlarm")' \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:ProductionOps

การผสานรวมกับนโยบาย Auto Scaling

กลุ่ม Auto Scaling ใช้ CloudWatch alarm เป็นทริกเกอร์สำหรับนโยบาย การปรับขนาดแบบขั้น และ การปรับขนาดแบบง่าย เมื่อ alarm เข้าสู่สถานะ ALARM นโยบายการปรับขนาดจะทำงาน สำหรับการปรับขนาดแบบขั้น คุณจะกำหนดการปรับขนาดหลายรายการสำหรับช่วงค่าเกณฑ์ที่แตกต่างกัน ตัวอย่างเช่น เพิ่ม 1 อินสแตนซ์หาก CPU อยู่ที่ 70-80% เพิ่ม 3 หาก CPU อยู่ที่ 80-90% และเพิ่ม 5 หาก CPU สูงกว่า 90% alarm จะทริกเกอร์ขั้นแรกที่ใช้ได้ตามระดับการข้ามค่าเกณฑ์ขณะประเมิน

# Create a scale-out alarm linked to an ASG scaling policy
aws cloudwatch put-metric-alarm \
  --alarm-name ScaleOutTrigger \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --dimensions Name=AutoScalingGroupName,Value=my-asg \
  --statistic Average \
  --period 60 \
  --evaluation-periods 2 \
  --threshold 70 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:autoscaling:us-east-1:111122223333:scalingPolicy:POLICY_ARN

Billing alarm ของ CloudWatch

คุณสามารถสร้าง billing alarm ใน CloudWatch เพื่อรับการแจ้งเตือนเมื่อค่าใช้จ่าย AWS โดยประมาณสูงเกินค่าเกณฑ์ ตัวชี้วัดด้านค่าใช้จ่ายจะเผยแพร่เฉพาะในรีเจียน us-east-1 เท่านั้น ไม่ว่าทรัพยากรของคุณจะทำงานอยู่ที่ใด และจะอัปเดตประมาณทุก 6 ชั่วโมง หากต้องการเปิดใช้ billing alarm คุณต้องเปิด Billing Alerts ในคอนโซล AWS Billing ก่อน เครื่องมือที่แม่นยำกว่าคือ AWS Budgets แต่ billing alarm ของ CloudWatch ยังคงเป็นตัวเลือกที่ใช้ได้และมีการทดสอบในข้อสอบ

# Create a billing alarm for $100 threshold
aws cloudwatch put-metric-alarm \
  --region us-east-1 \
  --alarm-name MonthlyBillingAlert \
  --alarm-description 'Alert when estimated charges exceed $100' \
  --metric-name EstimatedCharges \
  --namespace AWS/Billing \
  --dimensions Name=Currency,Value=USD \
  --statistic Maximum \
  --period 86400 \
  --evaluation-periods 1 \
  --threshold 100 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:BillingAlerts

การทดสอบและการตรวจสอบ alarm

คุณสามารถ ตั้งค่าสถานะ alarm ด้วยตนเอง โดยใช้คำสั่ง set-alarm-state เพื่อทดสอบการดำเนินการของ alarm โดยไม่ต้องรอให้เกิดการข้ามค่าเกณฑ์จริง วิธีนี้มีประโยชน์สำหรับตรวจสอบว่าหัวข้อ SNS นโยบาย Auto Scaling และฟังก์ชัน Lambda ตอบสนองได้อย่างถูกต้องหรือไม่ ควรทดสอบการดำเนินการของ alarm ในสภาพแวดล้อมที่ไม่ใช่ระบบจริงเสมอ และตรวจสอบว่าหัวข้อ SNS ยืนยันการสมัครรับอีเมลที่ถูกต้องแล้ว ก่อนพึ่งพา alarm สำหรับการแจ้งเตือนในระบบจริง

# Manually trigger an alarm for testing (does NOT persist — reverts on next evaluation)
aws cloudwatch set-alarm-state \
  --alarm-name HighCPUAlarm \
  --state-value ALARM \
  --state-reason 'Testing alarm action'

# Watch alarm state history
aws cloudwatch describe-alarm-history \
  --alarm-name HighCPUAlarm \
  --history-item-type StateUpdate \
  --query 'AlarmHistoryItems[].{Time:Timestamp,Summary:HistorySummary}'

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า alarm มีสามสถานะ (OK, ALARM, INSUFFICIENT_DATA) และสามารถทริกเกอร์การดำเนินการของ SNS, Auto Scaling และ EC2 ได้, datapoints-to-alarm รองรับการประเมินแบบ M จาก N เพื่อลดผลบวกเท็จ และ composite alarm ใช้ตรรกะบูลีนเพื่อรวม alarm หลายรายการและระงับเสียงรบกวนจากการแจ้งเตือน ต่อไปเราจะศึกษา CloudWatch Logs และ Log Insights สำหรับการจัดการบันทึกแบบรวมศูนย์

คำถามที่พบบ่อย

บทเรียน “การแจ้งเตือน CloudWatch และการแจ้งเตือนแบบผสม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การแจ้งเตือน CloudWatch และการแจ้งเตือนแบบผสม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การแจ้งเตือน CloudWatch และการแจ้งเตือนแบบผสม”

ตั้งค่าการแจ้งเตือนตามเกณฑ์เพื่อเรียกใช้ Auto Scaling หรือการแจ้งเตือน SNS และรวมการแจ้งเตือนหลายรายการเป็นการแจ้งเตือนแบบผสมเพื่อลดการแจ้งเตือนรบกวน คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การแจ้งเตือน CloudWatch และการแจ้งเตือนแบบผสม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม

ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เมตริก CloudWatch เนมสเปซ และมิติข้อมูล
  2. การแจ้งเตือน CloudWatch และการแจ้งเตือนแบบผสม
  3. บันทึก CloudWatch และ Log Insights
  4. แดชบอร์ด CloudWatch และ Container Insights
← กลับไปที่ AWS Solutions Architect