كلاود
أدلة

نظام المراقبة والتنبيهات: إعداد Prometheus + Grafana

كلاود|٣٠ يناير ٢٠٢٦|4 دقائق قراءة|٤٠٤ مشاهدة
نظام المراقبة والتنبيهات: إعداد Prometheus + Grafana

CPU فوق 90%؟ قرص ممتلئ؟ التنبيه يوصلك قبل المشكلة. نشرح إعداد Prometheus + Grafana على سيرفرك.

لماذا المراقبة ضرورية؟

بدون نظام مراقبة فعال، أنت تعرف عن المشاكل فقط لما العميل يتصل يشتكي. هذا يعني إن المشكلة حصلت وأثرت على المستخدمين قبل ما تكتشفها. المراقبة الاستباقية تقلب المعادلة وتنبهك قبل ما تتحول المشكلة الصغيرة لكارثة.

نظام المراقبة الاحترافي يراقب 3 محاور أساسية: البنية التحتية (المعالج والذاكرة والتخزين)، التطبيقات (زمن الاستجابة والأخطاء)، والأعمال (عدد الطلبات والمبيعات). تجاهل أي محور منها يترك نقطة عمياء خطيرة.

المقاييس الأساسية للسيرفرات

مقاييس المعالج (CPU)

  • استخدام المعالج: النسبة المئوية من قدرة المعالج المستخدمة. تنبيه عند تجاوز 80% لمدة 5 دقائق
  • حمل النظام (Load Average): عدد العمليات المنتظرة. القيمة الطبيعية أقل من عدد الأنوية
  • سرقة المعالج (CPU Steal): مهم في بيئات VPS. إذا تجاوز 10% فالسيرفر المادي محمل بشكل زائد

مقاييس الذاكرة (RAM)

  • الذاكرة المستخدمة: تنبيه عند تجاوز 85%
  • Swap المستخدم: أي استخدام للـ Swap يعني نقص ذاكرة. تنبيه فوري
  • الذاكرة المتاحة: الأهم من الذاكرة الفارغة لأنها تشمل القابلة للتحرير

مقاييس التخزين

  • المساحة المستخدمة: تنبيه عند 80%، حرج عند 90%
  • IOPS: عمليات الإدخال والإخراج في الثانية
  • زمن الاستجابة (Latency): تنبيه إذا تجاوز 20ms
  • Inodes المستخدمة: نفادها يمنع إنشاء ملفات جديدة حتى لو في مساحة فارغة

مقاييس الشبكة

  • حركة المرور (Bandwidth): الداخل والخارج بالميغابت
  • الحزم المفقودة (Packet Loss): أي خسارة فوق 1% تحتاج تحقيق
  • الاتصالات النشطة: ارتفاع مفاجئ قد يشير لهجمة DDoS

إعداد Prometheus و Grafana

الخطوة 1: تثبيت Prometheus

sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus /var/lib/prometheus

wget https://github.com/prometheus/prometheus/releases/download/v2.52.0/prometheus-2.52.0.linux-amd64.tar.gz
tar xvf prometheus-2.52.0.linux-amd64.tar.gz
sudo cp prometheus-2.52.0.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.52.0.linux-amd64/promtool /usr/local/bin/

الخطوة 2: إعداد Prometheus

# /etc/prometheus/prometheus.yml
global:
 scrape_interval: 15s
 evaluation_interval: 15s

rule_files:
 - "alerts.yml"

alerting:
 alertmanagers:
 - static_configs:
 - targets: ['localhost:9093']

scrape_configs:
 - job_name: 'node'
 static_configs:
 - targets: ['localhost:9100']

 - job_name: 'nginx'
 static_configs:
 - targets: ['localhost:9113']

الخطوة 3: تثبيت Node Exporter

Node Exporter يجمع مقاييس السيرفر ويقدمها لـ Prometheus:

wget https://github.com/prometheus/node_exporter/releases/download/v1.8.0/node_exporter-1.8.0.linux-amd64.tar.gz
tar xvf node_exporter-1.8.0.linux-amd64.tar.gz
sudo cp node_exporter-1.8.0.linux-amd64/node_exporter /usr/local/bin/

الخطوة 4: تثبيت Grafana

sudo apt install -y apt-transport-https software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update && sudo apt install grafana -y
sudo systemctl enable grafana-server && sudo systemctl start grafana-server

Grafana يعمل على المنفذ 3000. ادخل بالمتصفح وأضف Prometheus كمصدر بيانات.

إعداد قواعد التنبيهات

ملف التنبيهات

# /etc/prometheus/alerts.yml
groups:
 - name: server_alerts
 rules:
 - alert: HighCPU
 expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
 for: 5m
 labels:
 severity: warning
 annotations:
 summary: "استخدام المعالج مرتفع ({{ $value }}%)"

 - alert: HighMemory
 expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 85
 for: 3m
 labels:
 severity: warning
 annotations:
 summary: "استخدام الذاكرة مرتفع ({{ $value }}%)"

 - alert: DiskSpaceLow
 expr: (1 - node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100 > 80
 for: 5m
 labels:
 severity: warning
 annotations:
 summary: "المساحة التخزينية منخفضة ({{ $value }}%)"

 - alert: DiskSpaceCritical
 expr: (1 - node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100 > 90
 for: 2m
 labels:
 severity: critical
 annotations:
 summary: "المساحة التخزينية حرجة ({{ $value }}%)"

إعداد Alertmanager

Alertmanager يستقبل التنبيهات من Prometheus ويوجهها للقنوات المناسبة:

# /etc/alertmanager/alertmanager.yml
global:
 resolve_timeout: 5m

route:
 receiver: 'default'
 group_wait: 30s
 group_interval: 5m
 repeat_interval: 4h

 routes:
 - match:
 severity: critical
 receiver: 'critical-alerts'
 repeat_interval: 1h

receivers:
 - name: 'default'
 email_configs:
 - to: 'ops@example.com'

 - name: 'critical-alerts'
 email_configs:
 - to: 'ops@example.com'
 webhook_configs:
 - url: 'https://hooks.slack.com/services/xxx'

قنوات التنبيه

القناة الاستخدام وقت الاستجابة
البريد الإلكتروني تنبيهات منخفضة الخطورة دقائق لساعات
Slack/Teams تنبيهات متوسطة دقائق
SMS تنبيهات حرجة ثوان
PagerDuty تصعيد تلقائي مع مناوبات ثوان
Webhook تكامل مع أنظمة مخصصة فوري

لوحات Grafana الأساسية

لوحة نظرة عامة

  • استخدام المعالج لكل سيرفر (خطي)
  • استخدام الذاكرة (مقياس)
  • مساحة التخزين (شريطي)
  • حركة الشبكة (خطي مزدوج)
  • وقت التشغيل لكل خدمة

لوحة التطبيق

  • عدد الطلبات في الثانية
  • زمن الاستجابة (p50, p95, p99)
  • معدل الأخطاء (4xx, 5xx)
  • الاتصالات النشطة

أدوات مراقبة إضافية

الأداة التخصص النوع
Uptime Kuma مراقبة التوفر من الخارج مفتوح المصدر
Blackbox Exporter فحص HTTP/TCP/ICMP مفتوح المصدر
Loki تجميع وبحث في السجلات مفتوح المصدر
Netdata مراقبة فورية بواجهة جاهزة مفتوح المصدر

أخطاء شائعة

  1. تنبيهات كثيرة جدا: إرهاق التنبيهات يؤدي لتجاهلها. اضبط العتبات بعناية
  2. عدم اختبار التنبيهات: تنبيه لم يختبر قد لا يعمل عند الحاجة
  3. مراقبة المقاييس فقط: السجلات والتتبع مهمة بنفس القدر
  4. عدم توثيق الاستجابة: كل تنبيه يجب أن يرتبط بإجراء واضح

الخلاصة

نظام المراقبة الجيد يحول فريقك من رد الفعل للاستباق. ابدأ بـ Prometheus و Grafana وNode Exporter كأساس، ثم أضف المزيد حسب احتياجك. على سيرفرات كلاود (cloud.net.sa) تحصل على أداء ثابت مع زمن استجابة 8ms وSLA بنسبة 99.99%، لكن المراقبة من طرفك تبقى ضرورية لمتابعة تطبيقاتك وخدماتك.


ابدأ الآن

تبي تجرب بنفسك؟ اختر باقة الاستضافة المناسبة أو صمم سيرفرك الخاص بالمواصفات اللي تبيها.

مشاركة