دليل عملي

بدائل self-hosted لـ Opsgenie قبل أبريل 2027

الأمان والمراقبة8 دقائق للقراءةعدد الخطوات: 7

‏في 5 أبريل 2027، سيتوقف Opsgenie نهائياً. أعلنت Atlassian عن نهاية دورة حياة المنتج وطالبت المستخدمين بالانتقال إلى بدائل أخرى. قبل ذلك بأسابيع، أرشفت Grafana Labs مستودع Grafana OnCall OSS في 24 مارس 2026، مما أزال فعلياً أحد أكثر البدائل مفتوحة المصدر شيوعاً. يجمع هذا المقال بين بديلين مستضافَين ذاتياً بالكامل — ‏OneUptime وIncidentRelay — يمكن نشرهما على VPS عادي وتهيئتهما في أقل من ساعة دون اشتراك في أي خدمة SaaS. يكمّل هذا الدليل المقالات السابقة عن المراقبة الخفيفة مع Beszel وUptime Kuma، وعن نشر Wazuh لاكتشاف الاختراقات.

المحتويات· ‏Opsgenie وGrafana OnCall: ركيزتان تتلاشيان1/10
  1. 01‏Opsgenie وGrafana OnCall: ركيزتان تتلاشيان
  2. 02ما يجب أن تغطيه حل إدارة الحوادث
  3. 03‏OneUptime مقابل IncidentRelay مقابل PagerDuty
  4. 04‏متطلبات VPS لـ OneUptime
  5. 05‏نشر OneUptime على VPS في 7 خطوات
  6. 06‏ضبط التنبيهات: webhook Prometheus إلى OneUptime
  7. 07إدارة جداول الاستنفار والتصعيد
  8. 08‏كشف صفحة الحالة خلف nginx
  9. 09استكشاف الأخطاء — مشاكل شائعة عند الإقلاع
  10. 10‏التخطيط للترحيل من Opsgenie إلى OneUptime قبل أبريل 2027

‏Opsgenie وGrafana OnCall: ركيزتان تتلاشيان

‏استحوذت Atlassian على Opsgenie عام 2018 ودمجته تدريجياً في مجموعة Jira. نُشر إعلان نهاية دورة الحياة على صفحة الحالة الرسمية لـ Atlassian: يتوقف الخدمة في 5 أبريل 2027. يتوفر لدى المستخدمين أكثر من عام قليلاً لترحيل سياسات الاستنفار وعمليات التكامل وسجلات الحوادث. من جهة أخرى، أُرشف مستودع ‏Grafana OnCall OSS على GitHub في 24 مارس 2026. أعلن فريق Grafana Labs أن النسخة السحابية لا تزال متاحة، لكن مستودع الاستضافة الذاتية لم يعد يتلقى تصحيحات أو ميزات جديدة. تتقارب هذا الحدثان في أقل من اثني عشر شهراً مما يفرض نافذة ترحيل ينبغي للفرق التخطيط لها الآن بدلاً من انتظار ضغط الأسابيع الأخيرة قبل موعد أبريل 2027.

ما يجب أن تغطيه حل إدارة الحوادث

  • ‏استقبال التنبيهات وإزالة تكرارها من Prometheus وGrafana وZabbix أو أي webhook HTTP
  • توجيه التنبيهات إلى الفرق المناسبة وفق قواعد قابلة للتهيئة (الخطورة، الخدمة، الجدول الزمني)
  • إدارة جداول الاستنفار مع دورات أسبوعية أو مخصصة
  • التصعيد التلقائي إذا لم يُقرَّ التنبيه في الوقت المحدد
  • ‏إشعارات متعددة القنوات: بريد إلكتروني، رسائل SMS، مكالمات صوتية، Slack، Microsoft Teams
  • صفحة حالة عامة لإبقاء المستخدمين على اطلاع في الوقت الفعلي
  • سجل حوادث قابل للبحث والتصدير لمراجعات ما بعد الحادثة
  • ‏واجهة REST API للتكامل مع مسارات CI/CD وأدوات الأتمتة

‏OneUptime مقابل IncidentRelay مقابل PagerDuty

مرّر الجدول أفقيًا

المعيارOneUptimeIncidentRelayPagerDuty (SaaS)
الرخصةApache 2.0MITملكية خاصة
الاستضافة‏استضافة ذاتية (Docker Compose)‏استضافة ذاتية (Docker Compose)سحابي فقط
التقنية المستخدمة‏Node.js / TypeScript, PostgreSQL‏Go, SQLite/PostgreSQLغير مُفصح عنها
الحد الأدنى من RAM الموصى به‏4 GB (إنتاج خفيف)، 8 GB مُوصى به‏512 MB (SQLite)، 2 GB (PostgreSQL)غير مُطبَّق
صفحة حالة مدمجةنعم، عامة وقابلة للتخصيصنعم، أساسية‏نعم، عبر Statuspage (مدفوع منفصل)
السعر الأساسيمجاني (استضافة ذاتية)مجاني (استضافة ذاتية)‏يبدأ من 21 دولار/مستخدم/شهر

‏متطلبات VPS لـ OneUptime

‏يعتمد OneUptime على بنية متعددة الحاويات مُنسَّقة بواسطة Docker Compose. للفرق التي تضم أقل من عشرين شخصاً مع حجم تنبيهات معتدل (أقل من ألف حدث يومياً)، يُعدّ VPS بـ 4 vCPU و8 GB من RAM أساساً مناسباً. تحت 4 GB من RAM تتنافس عدة حاويات عند الإقلاع مما يُسبب إعادات تشغيل متكررة. يجب أن يكون التخزين على قرص SSD، إذ يكتب OneUptime بتكرار في PostgreSQL وفي ناقل أحداثه الداخلي. احتسب 40 GB على الأقل للسجلات وقاعدة البيانات لمدة ستة أشهر. يجب أن يكشف الخادم المنفذين 80 و443؛ يمكن وضع وكيل عكسي nginx أو Caddy أمامه إذا كان VPS يستضيف خدمات أخرى. مطلوب Docker Engine الإصدار 24 أو أعلى وDocker Compose الإصدار 2.20 أو أعلى. عنوان IP ثابت واسم نطاق مع سجل DNS A ضروريان لشهادة TLS ولكي تكون webhooks الواردة قابلة للوصول.

‏نشر OneUptime على VPS في 7 خطوات

  1. ‏اتصل بالـ VPS عبر SSH وثبّت Docker Engine وDocker Compose v2 من المستودع الرسمي لـ Docker: curl -fsSL https://get.docker.com | sh‏، ثم تحقق من النجاح بالأمر docker compose version‏.

  2. ‏استنسخ مستودع OneUptime: git clone https://github.com/OneUptime/oneuptime.git‏ ثم ادخل إلى الدليل cd oneuptime‏.

  3. ‏انسخ ملف الإعداد النموذجي: cp .env.example .env‏ ثم افتحه في محرر نصوص. أدخل على الأقل DOMAIN‏ (نطاقك أو نطاقك الفرعي) وDISABLE_TELEMETRY=true‏ إذا لم ترغب في إرسال بيانات الاستخدام، ومتغيرات SMTP (SMTP_HOST‏ وSMTP_PORT‏ وSMTP_USERNAME‏ وSMTP_PASSWORD‏ وSMTP_FROM_EMAIL‏) لإشعارات البريد الإلكتروني.

  4. ‏شغّل الحاويات في الخلفية: docker compose up -d‏. عند الإقلاع الأول تُحمَّل الصور وتُنفَّذ ترحيلات قاعدة البيانات؛ اترك ثلاث إلى خمس دقائق بحسب النطاق الترددي.

  5. ‏تحقق من أن جميع الخدمات تعمل بشكل سليم: docker compose ps‏. يجب أن تُظهر حاويات oneuptime-app‏ وoneuptime-worker‏ وoneuptime-postgres‏ وoneuptime-redis‏ الحالة running‏. عند حدوث خطأ في حاوية ما، راجع سجلاتها بـ docker compose logs <اسم-الحاوية> --tail=100‏.

  6. ‏افتح المتصفح على https://نطاقك‏ وأنشئ حساب المسؤول الأولي. ثم انتقل إلى *Settings → On-Call Duty → Policies* لإنشاء سياستك الأولى: حدد الفريق والنوافذ الزمنية وقنوات الإشعار.

  7. ‏فعّل التحديث التلقائي للصور باستخدام Watchtower، أو جدوِل أمر docker compose pull && docker compose up -d‏ أسبوعياً عبر cron لجلب تصحيحات الأمان دون انقطاع مطوّل.

‏ضبط التنبيهات: webhook Prometheus إلى OneUptime

‏يكشف OneUptime نقطة نهاية webhook واردة لكل مراقب أو تكامل يُنشأ. في الواجهة، اذهب إلى *Integrations → Incoming Webhooks* وأنشئ تكاملاً جديداً من نوع Prometheus Alertmanager. تُنتج الواجهة رابطاً بالشكل https://نطاقك/api/v1/incoming-request/<uuid>‏. في إعداد Alertmanager في Prometheus، أضف متلقياً من نوع webhook‏ يشير إلى هذا الرابط. يتيح الحقل send_resolved: true‏ لـ OneUptime إغلاق الحادثة تلقائياً عندما يُرسل Alertmanager إشعار الحل. للتكامل من Grafana، استخدم نوع الاتصال *Webhook* وأدخل نفس الرابط. يحلل OneUptime JSON الوارد ويستخرج تلقائياً العنوان والخطورة وعلامات تنبيه Prometheus. إذا أرسلت تنبيهات من أداة مخصصة، فإن التنسيق المطلوب موثق في صفحة التكامل: حقل title‏ وحقل description‏ كافيان لإنشاء حادثة.

إدارة جداول الاستنفار والتصعيد

‏تحدد جداول الاستنفار (On-Call Schedules) في OneUptime من يكون متاحاً، في أي وقت، ولأي خدمة. يرتبط الجدول بطبقة أو أكثر: كل طبقة تمثل دورة فريق. يمكن أن تكون الدورة يومية أو أسبوعية أو على فترة مخصصة. يستطيع كل عضو في الفريق تعيين تفضيلات الإشعار في ملفه الشخصي: بريد إلكتروني فوري، رسالة SMS بعد دقيقتين، مكالمة صوتية إذا لم يُقرَّ الحادث بعد خمس دقائق. يُهيَّأ التصعيد في سياسات التنبيه (Alert Policies): إذا لم يستجب شخص الاستنفار في المستوى 1 خلال النافذة المحددة، تصعد التنبيه تلقائياً إلى المستوى 2 الذي قد يكون شخصاً آخر أو فريقاً مختلفاً أو قناة Slack مشتركة. تسلسل التصعيد هذا مرئي في سجل كل حادثة مما يسهّل مراجعات ما بعد الحادثة.

‏كشف صفحة الحالة خلف nginx

‏يُنشئ OneUptime صفحة حالة عامة قابلة للوصول على نطاق فرعي مخصص، مثل status.نطاقك.com‏. لكشفها بشكل نظيف خلف nginx كوكيل عكسي، أنشئ vhost يُحيل الطلبات إلى المنفذ الداخلي 3105‏ الذي تستخدمه حاوية صفحة الحالة: proxy_pass http://127.0.0.1:3105;‏. فعّل رأس X-Forwarded-Proto‏ ليُنشئ OneUptime روابط HTTPS صحيحة في الإشعارات. يمكن الحصول على شهادة TLS عبر Certbot مع إضافة nginx: certbot --nginx -d status.نطاقك.com‏. تتيح صفحة الحالة للعملاء متابعة حالة الخدمات في الوقت الفعلي دون الوصول إلى واجهة الإدارة.

استكشاف الأخطاء — مشاكل شائعة عند الإقلاع

‏أكثر مشكلة شيوعاً عند الإقلاع الأول هي حاوية PostgreSQL غير جاهزة قبل أن تحاول الحاوية التطبيقية الاتصال بها. يتضمن OneUptime توجيهات healthcheck‏ في ملف docker-compose.yml‏ الرسمي؛ إذا استخدمت نسخة معدّلة، تأكد من أن الخدمة app‏ تحتوي على إدخال depends_on‏ بالشرط service_healthy‏ على خدمة postgres‏. مشكلة ثانية شائعة تتعلق بمتغيرات SMTP: إذا لم تُرسَل رسائل التحقق من الحساب، تحقق من أن SMTP_PORT‏ يساوي 587‏ (STARTTLS) وليس 465‏ (SSL مباشر) إذا كان مزود SMTP يتطلب ذلك. لتشخيص الأخطاء الصامتة، راقب سجلات العامل في الوقت الفعلي بـ docker compose logs -f oneuptime-worker‏. أخيراً، إذا كان المنفذ 443‏ محتلاً بخدمة أخرى، سيُقلع OneUptime لكنه سيكون غير قابل للوصول: عدّل تعيين المنفذ في docker-compose.yml‏ أو أوقف الخدمة المنافسة قبل تشغيل الحزمة.

‏التخطيط للترحيل من Opsgenie إلى OneUptime قبل أبريل 2027

‏يتيح Opsgenie تصدير سياسات التنبيه وجداول الاستنفار وسجل الحوادث بتنسيق JSON أو CSV من *Settings → Export*‏. تحتوي هذه الصادرات على قواعد التوجيه وأعضاء الفرق وعمليات التكامل النشطة. الاستيراد إلى OneUptime ليس تلقائياً: يجب إعادة إنشاء السياسات يدوياً أو عبر OneUptime REST API باستخدام البيانات المُصدَّرة. البدء بعمليات التكامل الحرجة (Prometheus وGrafana وDatadog) ثم الانتقال إلى جداول الاستنفار وأخيراً الإشعارات الثانوية هو النهج الموصى به. خطط لفترة تشغيل موازٍ لمدة أسبوعين على الأقل: يتلقى كلا النظامين نفس التنبيهات بينما تتحقق الفرق من السياسات الجديدة. يترك موعد 5 أبريل 2027 وقتاً كافياً لترحيل منظم إذا بدأ قبل يناير 2027. انتظار الأسابيع الأخيرة يُعرّض الفرق لتحول قسري دون إمكانية التراجع إذا فاتت أي عملية تكامل.

‏انشر OneUptime على VPS من ServOrbit

‏انشر OneUptime بنقرة واحدة على VPS من ServOrbit — قالب مُهيَّأ مسبقاً، بياناتك في حوزتك.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة