📊

المراقبة والسجلات (Monitoring & Logging)

راقب كل شيء في بنيتك التحتية. تنبيهات فورية، لوحات تحكم تفاعلية، وسجلات مركزية.

متقدم Prometheus Grafana

📖 لماذا المراقبة؟

Observability — الرؤية الكاملة

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

📈

Metrics (المقاييس)

أرقام رقمية: استخدام CPU، الذاكرة، الطلبات/ثانية. Prometheus يجمعها.

📋

Logs (السجلات)

نصوص تفصيلية: أخطاء، تحذيرات، أحداث. Loki و Elasticsearch يخزنانها.

🔔

Alerts (التنبيهات)

إشعارات فورية عند تجاوز الحدود. عبر Slack, Email, PagerDuty.

📊

Dashboards (اللوحات)

عرض مرئي لكل المقاييس. Grafana يوفر لوحات جميلة وقابلة للتخصيص.

🔥 Prometheus

قاعدة بيانات المقاييس

Prometheus يجمع المقاييس من التطبيقات والبنية التحتية عبر scraping. يستخدم PromQL للاستعلام.

prometheus.yml
global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node-exporter' static_configs: - targets: ['localhost:9100'] - job_name: 'nginx' static_configs: - targets: ['localhost:9113']
PromQL — أمثلة استعلامات
# استخدام CPU (متوسط 5 دقائق) rate(node_cpu_seconds_total{mode="idle"}[5m]) # استخدام الذاكرة node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 # طلبات HTTP في الثانية rate(http_requests_total[5m]) # معدل الأخطاء 5xx rate(http_requests_total{status=~"5.."}[5m])

📊 Grafana

لوحات تحكم مرئية

Grafana يتصل بـ Prometheus (ومصادر أخرى) ويعرض البيانات في لوحات تحكم جميلة. يدعم التنبيهات والمشاركة.

docker-compose.yml — Monitoring Stack
services: prometheus: image: prom/prometheus:latest volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - prometheus-data:/prometheus ports: - "9090:9090" grafana: image: grafana/grafana:latest volumes: - grafana-data:/var/lib/grafana ports: - "3000:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=admin node-exporter: image: prom/node-exporter:latest ports: - "9100:9100" volumes: prometheus-data: grafana-data:

📋 Loki — إدارة السجلات

سجلات خفيفة ومركزية

Loki من نفس شركة Grafana. يجمع السجلات من كل الخوادم والتطبيقات في مكان واحد. يستخدم LogQL للاستعلام.

LogQL — أمثلة استعلامات
# كل سجلات Nginx {job="nginx"} # أخطاء فقط {job="nginx"} |= "error" # عدد الأخطاء في الساعة count_over_time({job="nginx"} |= "error" [1h]) # سجلات تطبيق معين {app="myapp", level="error"}

🔔 التنبيهات (Alerting)

alerts.yml — Prometheus Alert Rules
groups: - name: server-alerts rules: - alert: HighCPUUsage expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: "CPU usage > 80% on {{ $labels.instance }}" - alert: HighMemoryUsage expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 90 for: 5m labels: severity: critical annotations: summary: "Memory usage > 90% on {{ $labels.instance }}" - alert: ServiceDown expr: up == 0 for: 1m labels: severity: critical annotations: summary: "{{ $labels.job }} is down"

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

🎯 1. راقب Golden Signals: Latency, Traffic, Errors, Saturation
2. لا ترسل تنبيهات لكل شيء — فقط لما يحتاج تدخل
3. استخدم Dashboards جاهزة من Grafana Community
4. فعّل Retention Policy للسجلات القديمة
5. اختبر التنبيهات بشكل دوري
6. استخدم SLIs و SLOs لقياس جودة الخدمة
السابق: البنية التحتية كـ Code التالي: منصات السحابة