مفاهيم المراقبة في AWS
الأعمدة الثلاثة للمراقبة
┌─────────────────────────────────────────────────────────────┐
│ الأعمدة الثلاثة │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ المقاييس السجلات التتبعات │ │
│ │ ───────── ──── ────── │ │
│ │ │ │
│ │ ماذا؟ لماذا؟ كيف؟ │ │
│ │ │ │
│ │ CPU: 80% ERROR: Request A │ │
│ │ Requests: 1000 Connection → Service 1 │ │
│ │ Errors: 5% failed to DB → Service 2 │ │
│ │ → Database │ │
│ │ │ │
│ │ CloudWatch CloudWatch X-Ray │ │
│ │ Metrics Logs │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ معًا، يجيبون على: │
│ • ماذا يحدث؟ (المقاييس) │
│ • لماذا يحدث؟ (السجلات) │
│ • أين يحدث؟ (التتبعات) │
│ │
└─────────────────────────────────────────────────────────────┘
CloudWatch Metrics
المقاييس الأصلية لـ EC2
┌─────────────────────────────────────────────────────────────┐
│ المقاييس الأصلية لـ EC2 │
├─────────────────────────────────────────────────────────────┤
│ │
│ المقياس الوصف الوحدة │
│ ──────── ─────────── ───── │
│ │
│ CPUUtilization استخدام CPU % │
│ NetworkIn حركة المرور الواردة Bytes │
│ NetworkOut حركة المرور الصادرة Bytes │
│ DiskReadBytes قراءة القرص Bytes │
│ DiskWriteBytes كتابة القرص Bytes │
│ DiskReadOps عمليات القراءة Count │
│ DiskWriteOps عمليات الكتابة Count │
│ StatusCheckFailed فشل فحص الحالة Count │
│ │
│ ⚠️ انتباه: │
│ الذاكرة (RAM) ليست مضمنة افتراضيًا! │
│ → يتطلب CloudWatch Agent │
│ │
└─────────────────────────────────────────────────────────────┘
CloudWatch Agent (المقاييس المتقدمة)
┌─────────────────────────────────────────────────────────────┐
│ CLOUDWATCH AGENT │
├─────────────────────────────────────────────────────────────┤
│ │
│ يجمع وكيل CloudWatch مقاييس إضافية من داخل المثيل: │
│ │
│ المقاييس الإضافية: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ • mem_used_percent : استخدام RAM (%) │ │
│ │ • disk_used_percent : استخدام القرص (%) │ │
│ │ • processes_total : عدد العمليات │ │
│ │ • cpu_usage_user : CPU المستخدم │ │
│ │ • cpu_usage_system : CPU النظام │ │
│ │ • netstat_tcp_established : اتصالات TCP │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ التثبيت: │
│ 1. تثبيت الوكيل على المثيل │
│ 2. تكوين المقاييس التي سيتم جمعها │
│ 3. إرفاق دور IAM مع الأذونات │
│ │
│ # التثبيت على Amazon Linux 2 │
│ sudo yum install amazon-cloudwatch-agent │
│ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon- │
│ cloudwatch-agent-config-wizard │
│ sudo systemctl start amazon-cloudwatch-agent │
│ │
└─────────────────────────────────────────────────────────────┘
CloudWatch Alarms
أنواع الإنذارات
┌─────────────────────────────────────────────────────────────┐
│ CLOUDWATCH ALARMS │
├─────────────────────────────────────────────────────────────┤
│ │
│ حالات الإنذار: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ OK → المقياس ضمن الحدود │ │
│ │ ALARM → المقياس تجاوز العتبة │ │
│ │ INSUFFICIENT_DATA → لا توجد بيانات كافية │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ مكونات الإنذار: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. المقياس: CPUUtilization │ │
│ │ 2. الإحصائية: Average │ │
│ │ 3. الفترة: 300 ثانية (5 دقائق) │ │
│ │ 4. التقييم: 2 فترات │ │
│ │ 5. العتبة: > 80% │ │
│ │ 6. الإجراء: إخطار SNS │ │
│ │ │ │
│ │ الترجمة: │ │
│ │ "إذا كان متوسط CPU > 80% لمدة فترتين من 5 دقائق، │ │
│ │ فقم بتشغيل الإنذار وإخطار SNS" │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
تكوين CLI
# إنشاء إنذار CPU عالي
aws cloudwatch put-metric-alarm \
--alarm-name cpu-high-alarm \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--statistic Average \
--period 300 \
--threshold 80 \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 2 \
--dimensions Name=InstanceId,Value=i-xxx \
--alarm-actions arn:aws:sns:us-east-1:123456789:alerts \
--alarm-description "CPU above 80% for 10 minutes"
# إنشاء إنذار ذاكرة (يتطلب CloudWatch Agent)
aws cloudwatch put-metric-alarm \
--alarm-name mem-high-alarm \
--metric-name mem_used_percent \
--namespace CWAgent \
--statistic Average \
--period 300 \
--threshold 90 \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 2 \
--dimensions Name=InstanceId,Value=i-xxx \
--alarm-actions arn:aws:sns:us-east-1:123456789:alerts
CloudWatch Logs
هيكل السجلات
┌─────────────────────────────────────────────────────────────┐
│ هيكل سجلات CLOUDWATCH │
├─────────────────────────────────────────────────────────────┤
│ │
│ مجموعة السجلات (حاوية) │
│ └── /aws/ec2/my-app │
│ │ │
│ ├── تدفق السجلات (تدفق حسب المصدر) │
│ │ └── i-xxx/application.log │
│ │ │ │
│ │ ├── حدث السجل (إدخال فردي) │
│ │ │ └── 2024-01-15 10:30:00 INFO User login │
│ │ │ │
│ │ └── حدث السجل │
│ │ └── 2024-01-15 10:30:01 ERROR DB timeout │
│ │ │
│ └── تدفق السجلات │
│ └── i-yyy/application.log │
│ │
│ الاحتفاظ: │
│ • قابل للتكوين: من يوم إلى 10 سنوات (أو أبدًا) │
│ • الافتراضي: أبدًا (انتبه للتكاليف!) │
│ │
└─────────────────────────────────────────────────────────────┘
Log Insights (استعلامات)
┌─────────────────────────────────────────────────────────────┐
│ CLOUDWATCH LOG INSIGHTS │
├─────────────────────────────────────────────────────────────┤
│ │
│ لغة الاستعلام لتحليل السجلات: │
│ │
│ # البحث عن الأخطاء │
│ fields @timestamp, @message │
│ | filter @message like /ERROR/ │
│ | sort @timestamp desc │
│ | limit 100 │
│ │
│ # عد الأخطاء حسب الساعة │
│ fields @timestamp, @message │
│ | filter @message like /ERROR/ │
│ | stats count() by bin(1h) │
│ │
│ # أفضل 10 عناوين IP مع الأخطاء │
│ fields @timestamp, @message │
│ | filter @message like /ERROR/ │
│ | parse @message /IP: (?<ip>\d+\.\d+\.\d+\.\d+)/ │
│ | stats count() by ip │
│ | sort count desc │
│ | limit 10 │
│ │
│ # زمن الاستجابة P99 │
│ fields @timestamp, latency │
│ | stats percentile(latency, 99) as p99 │
│ │
└─────────────────────────────────────────────────────────────┘
CloudWatch Dashboards
┌─────────────────────────────────────────────────────────────┐
│ لوحة معلومات CLOUDWATCH │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ لوحة معلومات الإنتاج 🔄 │ │
│ ├─────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ استخدام CPU │ │ استخدام الذاكرة │ │ │
│ │ │ ████████░░ 80% │ │ ██████░░░░ 60% │ │ │
│ │ │ [graph] │ │ [graph] │ │ │
│ │ └─────────────────┘ └─────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ عدد الطلبات │ │ معدل الأخطاء │ │ │
│ │ │ 1,234 req/min │ │ 0.5% │ │ │
│ │ │ [graph] │ │ [graph] │ │ │
│ │ └─────────────────┘ └─────────────────┘ │ │
│ │ │ │
│ │ ┌───────────────────────────────────────┐ │ │
│ │ │ زمن الاستجابة P50/P95/P99 │ │ │
│ │ │ [line chart over time] │ │ │
│ │ └───────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ أنواع الويدجت: │
│ • Line : الاتجاهات عبر الزمن │
│ • Stacked : مقارنة المكونات │
│ • Number : قيمة واحدة (KPI) │
│ • Text : توثيق، روابط │
│ • Alarm Status : حالة الإنذارات │
│ • Logs : الأحداث الأخيرة │
│ │
└─────────────────────────────────────────────────────────────┘
دليل الحوادث
┌─────────────────────────────────────────────────────────────┐
│ نوع الدليل │
├─────────────────────────────────────────────────────────────┤
│ │
│ الحادث: CPU عالي (> 90%) │
│ ───────────────────────── │
│ │
│ 1. تقييم الخطورة │
│ □ مثيل واحد أم أكثر؟ │
│ □ تأثير مرئي على المستخدم؟ │
│ □ أخطاء في السجلات؟ │
│ │
│ 2. التشخيص السريع │
│ □ top -c على المثيل │
│ □ تحديد العملية المستهلكة │
│ □ التحقق من سجلات التطبيقات │
│ │
│ 3. الإجراءات الفورية │
│ □ إذا كانت الحمولة شرعية → توسيع النطاق (إضافة مثيلات)│
│ □ إذا كانت العملية غير مستقرة → إعادة تشغيل الخدمة │
│ □ إذا كانت هجومًا → حظر عنوان IP المصدر │
│ │
│ 4. الحل │
│ □ هل عاد CPU إلى < 70%؟ │
│ □ هل الخدمة تعمل؟ │
│ □ هل تم إبلاغ المستخدمين المتأثرين؟ │
│ │
│ 5. ما بعد الحادث │
│ □ توثيق السبب │
│ □ الإجراءات الوقائية │
│ □ تحسين التنبيهات │
│ │
└─────────────────────────────────────────────────────────────┘
ملخص
| الخدمة | الاستخدام | البيانات |
|---|---|---|
| Metrics | مراقبة في الوقت الحقيقي | CPU، RAM، الشبكة |
| Alarms | تنبيهات تلقائية | تجاوز العتبات |
| Logs | تصحيح الأخطاء، التدقيق | نص التطبيق |
| Dashboards | التصور | الرسوم البيانية، KPIs |
| Log Insights | التحليل | استعلامات على السجلات |
القسم التالي: مختبر المراقبة