انتقل إلى المحتوى الرئيسي

التنبيهات والإشعارات في CloudWatch

مقدمة​

تراقب التنبيهات في CloudWatch مقاييسك وتطلق إجراءات تلقائية عندما يتم الوصول إلى العتبات المحددة. إنها مكون أساسي للمراقبة والقدرة على الاستجابة التشغيلية.

بنية التنبيهات​

┌─────────────────────────────────────────────────────────────────┐
│ تدفق التنبيهات │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │
│ │ مقياس │────►│ تنبيه │────►│ إجراءات │ │
│ │ │ │ │ │ │ │
│ │ CPU 85% │ │ عتبة>80% │ │ • SNS (بريد إلكتروني/SMS) │ │
│ └──────────┘ └──────────┘ │ • Auto Scaling │ │
│ │ • Lambda │ │
│ │ • EC2 (إيقاف/إعادة تشغيل) │ │
│ └──────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

حالات التنبيه​

┌─────────────────────────────────────────────────────────────────┐
│ حالات التنبيه │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ OK │ المقياس ضمن الحدود الطبيعية │
│ │ (أخضر) │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ تجاوز العتبة │
│ ┌─────────────────┐ │
│ │ ALARM │ تم الوصول إلى العتبة → تم تفعيل الإجراءات │
│ │ (أحمر) │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ بيانات مفقودة │
│ ┌─────────────────┐ │
│ │ INSUFFICIENT │ لا توجد بيانات كافية للتقييم │
│ │ DATA │ │
│ │ (رمادي) │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

إعداد التنبيه​

عناصر الإعداد​

┌─────────────────────────────────────────────────────────────────┐
│ تشريح التنبيه │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. المقياس │
│ └── أي مقياس يجب مراقبته؟ │
│ مثال: CPUUtilization, NetworkIn, Errors │
│ │
│ 2. الإحصاء │
│ └── كيف يتم تجميع البيانات؟ │
│ Average, Sum, Minimum, Maximum, SampleCount │
│ │
│ 3. الفترة │
│ └── نافذة الوقت لكل نقطة │
│ 60s, 300s (5min), 3600s (1h) │
│ │
│ 4. العتبة │
│ └── ما هي القيمة التي تطلق التنبيه؟ │
│ > 80%, < 10, >= 1000 │
│ │
│ 5. فترات التقييم │
│ └── كم عدد الفترات في الانتهاك؟ │
│ "3 من 5 فترات" (لتجنب الإيجابيات الكاذبة) │
│ │
│ 6. الإجراءات │
│ └── ماذا تفعل عندما يتم تفعيل التنبيه؟ │
│ Notification, Auto Scaling, etc. │
│ │
└─────────────────────────────────────────────────────────────────┘

مثال: تنبيه CPU لـ EC2​

# Pseudo-configuration CloudFormation
HighCPUAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName: "EC2-HighCPU-Production"
AlarmDescription: "CPU superieur a 80% pendant 5 minutes"

# Metrique
Namespace: "AWS/EC2"
MetricName: "CPUUtilization"
Dimensions:
- Name: InstanceId
Value: "i-1234567890abcdef0"

# Evaluation
Statistic: "Average"
Period: 60 # 1 minute
EvaluationPeriods: 5 # 5 periodes
DatapointsToAlarm: 3 # 3 sur 5 en violation

# Seuil
ComparisonOperator: "GreaterThanThreshold"
Threshold: 80

# Actions
AlarmActions:
- "arn:aws:sns:us-east-1:123456789:AlerteOps"
OKActions:
- "arn:aws:sns:us-east-1:123456789:AlerteOps"

أنواع التنبيهات الشائعة​

1. تنبيهات الأداء​

الخدمةالمقياسالعتبة النموذجيةالسبب
EC2CPUUtilization> 80%زيادة الحمل
EC2StatusCheckFailed> 0فشل المثيل
RDSDatabaseConnections> 80% maxتشبع
ELBTargetResponseTime> 2sتأخير
LambdaDuration> 80% timeoutخطر انتهاء المهلة

2. تنبيهات الأخطاء​

الخدمةالمقياسالعتبة النموذجيةالسبب
LambdaErrors> 1%معدل الخطأ
ALBHTTPCode_Target_5XX> 10أخطاء الخادم
API Gateway4XXError> 5%أخطاء العميل
SQSApproximateNumberOfMessagesVisible> 1000قائمة مشبعة

3. تنبيهات التكاليف​

المقياسالعتبةالإجراء
EstimatedCharges> BudgetNotification
EC2 Running Hours> PrevuInvestigation

التنبيهات المركبة​

┌─────────────────────────────────────────────────────────────────┐
│ التنبيه المركب │
├─────────────────────────────────────────────────────────────────┤
│ │
│ دمج عدة تنبيهات مع منطق AND/OR/NOT │
│ │
│ مثال: تنبيه حرج فقط إذا: │
│ - CPU > 80% و │
│ - الذاكرة > 90% و │
│ - ليس في الصيانة │
│ │
│ ┌────────────┐ │
│ │ CPU > 80% │───┐ │
│ └────────────┘ │ │
│ │ AND │
│ ┌────────────┐ ├────────► التنبيه المركب │
│ │ Mem > 90% │───┤ │ │
│ └────────────┘ │ ▼ │
│ │ إجراءات حرجة │
│ ┌────────────┐ │ │
│ │NOT Maint. │───┘ │
│ └────────────┘ │
│ │
│ الفائدة: يقلل من الإيجابيات الكاذبة │
│ │
└─────────────────────────────────────────────────────────────────┘

الإجراءات التلقائية​

SNS (الإشعارات)​

┌─────────────────────────────────────────────────────────────────┐
│ إشعارات SNS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ تنبيه ────► SNS Topic ────► المشتركين │
│ │ │
│ ├──► بريد إلكتروني (equipe-ops@company.com) │
│ ├──► SMS (+1-555-123-4567) │
│ ├──► Slack (webhook) │
│ ├──► PagerDuty (integration) │
│ └──► Lambda (automatisation) │
│ │
└─────────────────────────────────────────────────────────────────┘

Auto Scaling​

تنبيه CPU > 80% ────► إجراء: توسيع (+2 مثيلات)
تنبيه CPU < 30% ────► إجراء: تقليص (-1 مثيل)

إجراءات EC2​

تنبيه فشل StatusCheck ────► إجراء: استعادة المثيل
تنبيه مثيل خامل ────► إجراء: إيقاف المثيل

أفضل الممارسات​

1. تجنب الإيجابيات الكاذبة​

# سيء: تنبيه حساس جداً
Period: 60
EvaluationPeriods: 1
DatapointsToAlarm: 1
# → يتم التفعيل عند أي قمة

# جيد: تنبيه مع تحمل
Period: 60
EvaluationPeriods: 5
DatapointsToAlarm: 3
# → 3 انتهاكات خلال 5 دقائق = مشكلة حقيقية

2. تسمية واضحة​

التنسيق الموصى به:
[البيئة]-[الخدمة]-[المقياس]-[الخطورة]

أمثلة:
• PROD-EC2-HighCPU-Critical
• PROD-Lambda-Errors-Warning
• DEV-RDS-Connections-Info

3. توثيق التنبيهات​

يجب أن يحتوي كل تنبيه على:
• وصف واضح
• دليل تشغيل مرتبط (ماذا تفعل عند التفعيل)
• المالك (من هو المسؤول)
• تاريخ التفعيل

مثال على إعداد كامل​

مراقبة تطبيق ويب​

┌─────────────────────────────────────────────────────────────────┐
│ التنبيهات لتطبيق ويب │
├─────────────────────────────────────────────────────────────────┤
│ │
│ طبقة العرض (ALB) │
│ ├── ALB-HighLatency (ResponseTime > 2s) │
│ ├── ALB-High5XX (5XX > 10/min) │
│ └── ALB-UnhealthyHosts (> 0) │
│ │
│ طبقة التطبيق (EC2/Lambda) │
│ ├── EC2-HighCPU (> 80%) │
│ ├── EC2-HighMemory (> 85%) │
│ ├── Lambda-HighErrors (> 1%) │
│ └── Lambda-NearTimeout (> 80% timeout) │
│ │
│ طبقة البيانات (RDS) │
│ ├── RDS-HighCPU (> 80%) │
│ ├── RDS-LowStorage (< 20%) │
│ ├── RDS-HighConnections (> 80% max) │
│ └── RDS-ReplicaLag (> 60s) │
│ │
│ التكاليف │
│ └── Billing-OverBudget (> budget mensuel) │
│ │
└─────────────────────────────────────────────────────────────────┘

تمرين: إنشاء خطة تنبيهات​

لتطبيق تجارة إلكترونية، حدد التنبيهات لـ:

  1. التوافر: التطبيق متاح
  2. الأداء: وقت استجابة مقبول
  3. الأخطاء: معدل خطأ منخفض
  4. السعة: موارد كافية
عرض الحل
الفئةالتنبيهالمقياسالعتبةالإجراء
التوافرALB-NoHealthyTargetsHealthyHostCount= 0PagerDuty Critical
التوافرRoute53-HealthCheckHealthCheckStatusFailedSNS + Failover
الأداءALB-HighLatencyTargetResponseTime> 3sSNS Warning
الأداءLambda-SlowExecutionDuration> 10sSNS Warning
الأخطاءALB-High5XXHTTPCode_Target_5XX> 50/5minSNS Critical
الأخطاءLambda-HighErrorsErrors> 5%SNS Critical
السعةEC2-HighCPUCPUUtilization> 80%Auto Scaling
السعةRDS-LowStorageFreeStorageSpace< 10GBSNS Warning

ملخص​

  • تراقب التنبيهات المقاييس وتطلق الإجراءات
  • 3 حالات: OK، ALARM، INSUFFICIENT_DATA
  • قم بإعداد فترات التقييم لتجنب الإيجابيات الكاذبة
  • استخدم التنبيهات المركبة للظروف المعقدة
  • وثق كل تنبيه بدليل تشغيل

القسم التالي: اختبار التحقق