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

المختبر 2.3 - مراقبة النظام المتقدمة

الأهداف​

في نهاية هذا المختبر، ستكون قادرًا على:

  • مراقبة أداء النظام
  • تحليل الموارد (CPU، RAM، القرص، الشبكة)
  • استخدام أدوات المراقبة المتقدمة
  • إنشاء سكربتات للمراقبة
  • تكوين التنبيهات

المتطلبات الأساسية​

  • نظام Linux يعمل
  • وصول root أو sudo
  • أدوات: htop، iotop، nethogs (اختيارية ولكن موصى بها)

التمرين 1: تثبيت الأدوات​

الخطوة 1: أدوات أساسية​

# تحديث
sudo apt update

# تثبيت أدوات المراقبة
sudo apt install -y htop iotop nethogs sysstat

# التحقق من التثبيت
which htop iotop nethogs sar

التمرين 2: مراقبة CPU​

الخطوة 1: معلومات CPU​

# معلومات CPU
lscpu

# تفاصيل CPU
cat /proc/cpuinfo

# عدد CPUs
nproc

# متوسط الحمل
uptime
cat /proc/loadavg

الخطوة 2: استخدام CPU​

# العمليات الأعلى استخدامًا لـ CPU
top -bn1 | head -20

# باستخدام htop
htop

# إحصائيات CPU
mpstat 1 5

# لكل CPU
mpstat -P ALL 1 5

الخطوة 3: سكربت CPU​

# سكربت مراقبة CPU
cat > cpu-monitor.sh << 'EOF'
#!/bin/bash
echo "=== CPU Info ==="
lscpu | grep -E 'Model name|CPU\(s\)|Thread|Core'
echo
echo "=== Load Average ==="
uptime
echo
echo "=== Top 5 CPU ==="
ps aux --sort=-%cpu | head -6
EOF

chmod +x cpu-monitor.sh
./cpu-monitor.sh

التمرين 3: مراقبة الذاكرة​

الخطوة 1: نظرة عامة​

# الذاكرة
free -h

# التفاصيل
vmstat -s

# لكل عملية
ps aux --sort=-%mem | head -10

الخطوة 2: مراقبة مستمرة​

# مراقبة الذاكرة
watch -n 1 'free -h'

# مع العمليات الأعلى
watch -n 1 'free -h && echo && ps aux --sort=-%mem | head -5'

التمرين 4: مراقبة القرص​

الخطوة 1: مساحة القرص​

# المساحة المتاحة
df -h

# لكل دليل
du -sh /* 2>/dev/null | sort -h

# أكبر 10 أدلة
du -h /home 2>/dev/null | sort -rh | head -10

الخطوة 2: I/O القرص​

# إحصائيات I/O
iostat -x 1 5

# لكل عملية (iotop)
sudo iotop

# إحصائيات مفصلة
cat /proc/diskstats

الخطوة 3: سكربت القرص​

# سكربت مراقبة القرص
cat > disk-monitor.sh << 'EOF'
#!/bin/bash
echo "=== Espace Disque ==="
df -h
echo
echo "=== Top 10 Répertoires /home ==="
du -h /home 2>/dev/null | sort -rh | head -10
EOF

chmod +x disk-monitor.sh
./disk-monitor.sh

التمرين 5: مراقبة الشبكة​

الخطوة 1: واجهات الشبكة​

# الواجهات
ip addr show
# أو
ifconfig

# الإحصائيات
ip -s link show

# لكل واجهة
cat /proc/net/dev

الخطوة 2: الاتصالات​

# الاتصالات النشطة
ss -tuln

# الاستماع
ss -tulpn

# لكل عملية
sudo netstat -tulpn

الخطوة 3: حركة المرور الشبكية​

# nethogs (لكل عملية)
sudo nethogs

# iftop (لكل اتصال)
sudo iftop

# الإحصائيات
cat /proc/net/sockstat

التمرين 6: مراقبة كاملة​

الخطوة 1: سكربت المراقبة​

# سكربت كامل
cat > system-monitor.sh << 'EOF'
#!/bin/bash
clear
echo "=== MONITORING SYSTÈME $(date) ==="
echo

echo "=== CPU ==="
echo "Load: $(uptime | awk -F'load average:' '{print $2}')"
echo "Top CPU:"
ps aux --sort=-%cpu | head -4 | tail -3
echo

echo "=== MÉMOIRE ==="
free -h | grep -E 'Mem|Swap'
echo "Top Mémoire:"
ps aux --sort=-%mem | head -4 | tail -3
echo

echo "=== DISQUE ==="
df -h / | tail -1
echo

echo "=== RÉSEAU ==="
ss -tun | grep ESTAB | wc -l
echo "Connexions établies"
EOF

chmod +x system-monitor.sh
./system-monitor.sh

الخطوة 2: مراقبة مستمرة​

# مراقبة كل 2 ثانية
watch -n 2 ./system-monitor.sh

# أو مع while
while true; do
clear
./system-monitor.sh
sleep 2
done

التمرين 7: تنبيهات تلقائية​

الخطوة 1: سكربت التنبيه​

# سكربت مع العتبات
cat > system-alert.sh << 'EOF'
#!/bin/bash
THRESHOLD_CPU=80
THRESHOLD_MEM=80
THRESHOLD_DISK=80

# CPU
CPU_IDLE=$(mpstat 1 1 | tail -1 | awk '{print $NF}')
CPU_USED=$(echo "100 - $CPU_IDLE" | bc)
if (( $(echo "$CPU_USED > $THRESHOLD_CPU" | bc -l) )); then
echo "ALERTE: CPU à ${CPU_USED}%"
fi

# Mémoire
MEM_USED=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
if [ "$MEM_USED" -gt "$THRESHOLD_MEM" ]; then
echo "ALERTE: Mémoire à ${MEM_USED}%"
fi

# Disque
DISK_USED=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK_USED" -gt "$THRESHOLD_DISK" ]; then
echo "ALERTE: Disque à ${DISK_USED}%"
fi
EOF

chmod +x system-alert.sh
./system-alert.sh

الخطوة 2: Cron للمراقبة​

# إضافة إلى crontab
crontab -e

# إضافة هذا السطر (كل 5 دقائق)
# */5 * * * * /chemin/vers/system-alert.sh >> /var/log/system-alerts.log 2>&1

التمرين 8: التقارير​

الخطوة 1: تقرير يومي​

# سكربت التقرير
cat > daily-report.sh << 'EOF'
#!/bin/bash
REPORT="/var/log/daily-report-$(date +%Y%m%d).txt"

{
echo "=== RAPPORT SYSTÈME $(date) ==="
echo
echo "=== CPU ==="
lscpu | grep -E 'Model name|CPU\(s\)'
uptime
echo
echo "=== MÉMOIRE ==="
free -h
echo
echo "=== DISQUE ==="
df -h
echo
echo "=== TOP PROCESSUS ==="
ps aux --sort=-%cpu | head -6
echo
ps aux --sort=-%mem | head -6
} > "$REPORT"

echo "Rapport créé: $REPORT"
EOF

chmod +x daily-report.sh
sudo ./daily-report.sh

التحقق​

قائمة التحقق​

تحقق من أنك تستطيع:

  • مراقبة CPU، الذاكرة، القرص، الشبكة
  • استخدام htop، iotop، nethogs
  • إنشاء سكربتات للمراقبة
  • تكوين التنبيهات
  • إنشاء التقارير

أسئلة للتفكير​

  1. أي أداة تستخدم لأي نوع من المراقبة؟

    • CPU: top، htop، mpstat
    • الذاكرة: free، vmstat
    • القرص: df، du، iotop
    • الشبكة: ss، netstat، nethogs
  2. لماذا من المهم المراقبة بانتظام؟

    • اكتشاف المشاكل قبل أن تصبح حرجة
    • تخطيط الموارد
    • تحسين الأداء

الخطوات التالية​

  • الوحدة 3: نظام الملفات
  • الوحدة 4: إدارة العمليات
  • الوحدة 11: المراقبة والسجلات (متقدم)

تم إنشاء المختبر في: ديسمبر 2024