تخطَّ إلى المحتوى
ططارق الوليديAI Developer Tools Directory
G

Gatus

نشط ومستقريعمل محلياً ✓بدون اشتراك API

راقب مواقعك وواجهات API وDNS والشهادات من خادمك، واعرض صفحة حالة وأرسل تنبيهًا عند تكرر الإخفاق باستخدام Gatus.

$docker run -p 8080:8080 --name gatus ghcr.io/twin/gatus
💡

الاستخدام المثالي لهذه الأداة

يناسب مطورًا منفردًا أو فريقًا صغيرًا يريد فحص توفر موقع أو API وشروط الاستجابة والشهادات من خادم يملكه. يجمع صفحة الحالة والتنبيه والتخزين البسيط في خدمة واحدة. لا يغني عن مراقبة الموارد أو السجلات أو التتبّع الموزع.

التفاصيل والميزات المصورة

إذا كان موقعك أو API يتعطل، فغالبًا تكتشف المشكلة من رسالة عميل أو بعد فتح الخدمة بنفسك. Gatus يغيّر هذا المسار: يفحص الخدمات دوريًا من خادمك، يطبّق شروطًا واضحة على الاستجابة، ثم يعرض الحالة ويرسل تنبيهًا عندما يتكرر الإخفاق. قيمته المضافة أنه يجمع الفحص النشط وصفحة الحالة والتنبيه في خدمة خفيفة بدل سكربتات متفرقة وفحص يدوي.

🧭 ما أداة Gatus؟

Gatus أداة مفتوحة المصدر لمراقبة توفر الخدمات وإنشاء صفحة حالة موجهة للمطورين. تصف في ملف YAML ما تريد مراقبته، مثل موقع أو REST API أو DNS أو منفذ TCP، وتحدد شروط الصحة. ينفذ Gatus الفحص حسب الفاصل الزمني، يحفظ النتيجة وفق إعداد التخزين، ويعرضها في واجهة ويب.

هو ليس بديلًا كاملًا لمنصات السجلات والتتبّع والمقاييس مثل منظومات Observability الكبيرة؛ تركيزه الأساسي هو الفحص النشط: هل الخدمة متاحة؟ هل أعادت الحالة والمحتوى المتوقعين؟ هل زمن الاستجابة أو صلاحية الشهادة ضمن الشرط الذي وضعته؟

مسار إعداد Gatus من ملف YAML إلى فحص الخدمات ولوحة الحالة والتنبيه
مسار إعداد Gatus من ملف YAML إلى فحص الخدمات ولوحة الحالة والتنبيه
رسم توضيحي أصلي لمسار العمل، وليس لقطة من واجهة المنتج.

🎯 كيف ستفيدك؟

لديك مثلًا واجهة API لمشروع نسق ومسار صحة /health. بدل فتح الرابط يدويًا، تضيفه مرة إلى config.yaml وتحدد أن الحالة يجب أن تكون 200 وأن جسم JSON يحتوي status: UP. يستطيع Gatus تكرار الفحص وإظهار النتيجة، ثم إرسال تنبيه بعد عدد متتالٍ من الإخفاقات تحدده أنت.

الفائدة العملية ليست مجرد معرفة أن الخادم يرد. يمكنك اكتشاف حالات يفتح فيها الرابط لكنه يعيد محتوى غير صحيح، أو يستغرق أكثر من الحد الذي تراه مقبولًا، أو تقترب شهادة TLS أو النطاق من الانتهاء. يناسب مطورًا منفردًا أو فريقًا صغيرًا يريد مراقبة واضحة ذاتية الاستضافة دون تشغيل منصة مراقبة ثقيلة.

لا يناسبك وحده إذا كان المطلوب تحليل استهلاك CPU والذاكرة، تجميع سجلات التطبيق، تتبع الطلبات بين الخدمات، أو إدارة حوادث مؤسسية معقدة؛ ستحتاج حينها إلى أدوات مكملة.

🌟 الميزات والقدرات الرئيسية

1. شروط صحة تتجاوز فتح الرابط

كل endpoint له هدف وفاصل زمني وشروط. في فحص HTTP تستطيع التحقق من رمز الحالة، وقيمة داخل JSON، وزمن الاستجابة، وقرب انتهاء الشهادة أو النطاق. هذا يمنع النتيجة المضللة «الخدمة تعمل» عندما تكون الصفحة متاحة لكن البيانات أو الأداء غير سليمين.

  • أين توجد: داخل endpoints ثم conditions في ملف YAML.
  • كيف تستخدمها: ابدأ بشرط حالة بسيط، ثم أضف شرطًا للمحتوى أو الزمن فقط عندما تعرف القيمة المقبولة لخدمتك.
  • مثال توضيحي: [STATUS] == 200 مع [BODY].status == UP و[RESPONSE_TIME] < 500.
  • انتبه: رقم 500 مللي ثانية مثال، وليس معيارًا عامًا. اختر الحد من قياسات خدمتك الفعلية.

2. فحص أكثر من بروتوكول

لا يقتصر Gatus على HTTP. توثق المصادر الرسمية فحوص HTTP وDNS وTCP وUDP وTLS وSTARTTLS وSSH وgRPC وWebSocket وICMP وانتهاء النطاق، إضافة إلى endpoint خارجي يُحدّث بالدفع. تستخدم كل فئة placeholders مناسبة؛ ففحص TCP مثلًا يركز على الاتصال وعنوان IP وزمن الاستجابة، وليس جسم HTTP.

  • الفائدة: تضع الموقع وواجهة API وDNS والشهادة وبعض المنافذ في لوحة واحدة.
  • طريقة الاستخدام: اختر نوع الهدف ثم استخدم الشروط التي يدعمها ذلك النوع فقط.
  • القيد: نجاح اتصال TCP لا يثبت أن وظيفة التطبيق خلف المنفذ تعمل بصورة صحيحة؛ استخدم فحصًا أعلى مستوى عندما يتوفر.
فحوص HTTP وDNS وTCP وTLS وICMP تمر عبر شروط صحة موحدة
فحوص HTTP وDNS وTCP وTLS وICMP تمر عبر شروط صحة موحدة
رسم توضيحي للفئات والشروط الموثقة، وليس نتيجة فحص حقيقية.

3. تنبيهات بحدود إخفاق وتعافٍ

تستطيع ربط endpoint بمزود تنبيه وتحديد failure-threshold قبل إرسال التنبيه، وsuccess-threshold قبل إعلان التعافي، مع خيار إرسال إشعار عند عودة الخدمة. هذا يساعد على عدم تحويل إخفاق عابر واحد إلى ضجيج، مع بقاء الحساسية بيدك.

يوثق المشروع مزودات متعددة تشمل البريد وSlack وMicrosoft Teams وTelegram وDiscord وGotify وntfy وPagerDuty ومزودًا مخصصًا، إضافة إلى غيرها. كل مزود يحتاج أسراره وإعداداته الخاصة؛ وجود التكامل في الكود لا يجعل خدمة الطرف الثالث مجانية.

تسلسل الفحص ثم بلوغ حد الإخفاق والتنبيه ثم التعافي
تسلسل الفحص ثم بلوغ حد الإخفاق والتنبيه ثم التعافي
رسم توضيحي للمنطق؛ لا يفرض Gatus عددًا واحدًا على جميع الخدمات.

4. تشغيل ذاتي وتخزين بسيط

يعمل Gatus كتطبيق Go بواجهة ويب مدمجة، ويتوفر كصورة Docker. يدعم التخزين في الذاكرة أو SQLite أو PostgreSQL. الذاكرة مناسبة للتجربة فقط لأن السجل يضيع عند إعادة التشغيل، بينما يسمح SQLite ببدء صغير إذا ربطت ملف قاعدة البيانات بمجلد دائم.

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

تشغيل Gatus داخل Docker مع ملف إعداد وتخزين محلي واتصالات صادرة
تشغيل Gatus داخل Docker مع ملف إعداد وتخزين محلي واتصالات صادرة
رسم توضيحي للحدود بين التخزين المحلي والاتصالات الخارجية.

🪜 كيف تستخدمه خطوة بخطوة؟

مثال توضيحي لم أنفذه على مشروعك: راقب واجهة API واحدة أولًا قبل إضافة جميع الخدمات.

  1. أنشئ ملف config.yaml بجانب مشروع التشغيل.
  2. أضف endpoint باسم واضح ومجموعة مثل production.
  3. ابدأ بثلاثة شروط يمكن تفسيرها: الحالة، قيمة صحة داخل JSON، وحد زمن مناسب.
  4. شغّل الحاوية وافتح http://localhost:8080.
  5. اختبر endpoint آمنًا في بيئة غير إنتاجية، ثم راجع كيف يظهر الإخفاق والتعافي.
  6. أضف التخزين الدائم قبل الاعتماد على السجل التاريخي.
  7. اربط قناة تنبيه بعد حماية سرّها، ثم اضبط الحدود لتجنب الضجيج.
storage:
  type: sqlite
  path: /data/gatus.db

endpoints:
  - name: nasq-api
    group: production
    url: "https://example.com/health"
    interval: 60s
    conditions:
      - "[STATUS] == 200"
      - "[BODY].status == UP"
      - "[RESPONSE_TIME] < 500"

استبدل الرابط والقيمة والحد بما يناسب خدمتك. نجاح هذا المثال لا يثبت أن بقية وظائف النظام تعمل؛ أضف فحوصًا تستهدف الرحلات المهمة دون تحويل المراقبة إلى اختبار شامل لكل شيء.

⚖️ ماذا يضيف مقارنة بالطريقة اليدوية؟

الطريقة اليدويةباستخدام Gatus
تفتح الرابط عندما تشك بوجود مشكلةفحص دوري وفق إعداد معلن
ترى هل الصفحة تفتح فقطتتحقق من الحالة والمحتوى والزمن والشهادة حسب الشروط
نتائج متفرقة بلا سجل موحدصفحة حالة وسجل وفق نوع التخزين
التنبيه يعتمد على ملاحظة شخصتنبيه بعد حد إخفاق وتعافٍ محدد
كل سكربت له صيغة مختلفةendpoints وشروط في ملف YAML واحد

هذه مقارنة لسير العمل، وليست وعدًا بمنع الانقطاعات أو اكتشاف كل عطل. إذا توقف Gatus نفسه أو انقطع مساره الشبكي فقد لا يرسل التنبيه؛ شغّله في مكان مستقل نسبيًا عن الخدمة التي يراقبها عندما تكون الاعتمادية مهمة.

⚙️ الإعدادات المهمة

  • interval: فترة الفحص؛ النطاق الموثق في واجهة Gatus الحالية من 30 ثانية إلى ساعة. لا تجعلها قصيرة بلا حاجة.
  • conditions: قواعد الصحة، ويجب أن تستخدم placeholders المتاحة لنوع endpoint.
  • client.timeout: حد انتظار العميل عندما تحتاج ضبطه.
  • storage: ذاكرة أو SQLite أو PostgreSQL. استخدم volume دائمًا مع SQLite.
  • alerting: بيانات مزود التنبيه. مرّر الأسرار بوسيلة آمنة ولا تضعها في مستودع عام.
  • security: يدعم الكود المصادقة الأساسية وOIDC لحماية الواجهة؛ راجع القيود المفتوحة المتعلقة باستخدام API مع OIDC قبل الاعتماد عليه للوصول الآلي.
  • GATUS_CONFIG_PATH: يغير مسار ملف الإعداد، والمسار الافتراضي موثق على أنه config/config.yaml.

🚀 التثبيت والبدء

أبسط أمر Docker موثق:

docker run -p 8080:8080 --name gatus ghcr.io/twin/gatus

لاستخدام إعدادك، اربط الملف داخل الحاوية. المثال التالي توضيحي مبني على مسار الإعداد الموثق؛ راجع المسارات على نظامك ولا تنفذه على خادم إنتاج قبل حفظ نسخة من البيانات:

docker run --rm --name gatus -p 8080:8080 \
  -v "$PWD/config.yaml:/config/config.yaml:ro" \
  -v "$PWD/data:/data" \
  ghcr.io/twin/gatus:v5.37.0

بعد التشغيل افتح http://localhost:8080. نجاح الحاوية يعني أن الواجهة بدأت، وليس أن كل endpoint صحيح؛ راجع النتائج والأخطاء في الصفحة وسجل الحاوية. يتوفر كذلك البناء من المصدر باستخدام Go، وأمثلة Docker Compose وKubernetes في المستودع.

🔗 التكاملات والتوافق

صورة Docker تجعل التشغيل ممكنًا على Linux وmacOS وWindows حيث يتوفر Docker. يعمل التطبيق نفسه بلغة Go، وتوجد أمثلة نشر لـKubernetes. يدعم Prometheus metrics عند تفعيلها، لكن Gatus لا يحل محل مخزن مقاييس أو لوحة تحليل متقدمة.

تكاملات التنبيه قد تحتاج Webhook أو رمز API. افحص تكلفة المزود وسياسة الاحتفاظ لديه بصورة مستقلة. لا تفترض أن دعم اسم خدمة يعني أن حسابها أو رسائلها مجانية.

💰 التكلفة والتشغيل المحلي

المستودع مرخص Apache-2.0، ولا يفرض تشغيل Gatus مفتوح المصدر اشتراكًا أو API مدفوعًا. التكلفة الفعلية هي الخادم والتخزين والشبكة، وأي خدمة تنبيه خارجية تختارها. يمكن تشغيله ذاتيًا، لكن الأهداف العامة ومزودات التنبيه تظل اتصالات خارجية.

في 30 سبتمبر 2026 أظهر GitHub نحو 12.2 ألف نجمة و842 تفرعًا. هذه مؤشرات شعبية متغيرة للمستودع وليست تقييمًا للأمان أو الجودة.

⚠️ الحدود ومتى لا تستخدمه

  • لا يجمع logs أو traces للتشخيص العميق؛ سيخبرك أن الشرط فشل، لا يشرح دائمًا سبب العطل داخل التطبيق.
  • المراقبة من نقطة واحدة لا تمثل تجربة المستخدم من جميع المناطق.
  • التخزين في الذاكرة مؤقت، وSQLite يحتاج مسارًا دائمًا ونسخًا احتياطية إذا كان السجل مهمًا.
  • شروط زمن الاستجابة تتأثر بموقع خادم Gatus والشبكة، لذلك لا تنسخ حدًا من مشروع آخر.
  • OIDC يحمي الوصول البشري، لكن توجد مشكلة مفتوحة حول استخدام bearer token مع API في بعض سيناريوهات OIDC؛ اختبر مسارك الآلي بدل افتراضه.
  • تشغيله على نفس الخادم والخط الشبكي للخدمة قد يجعل المراقب يتعطل معها.
  • لا تستخدمه بدل مراقبة الموارد والنسخ الاحتياطي واختبارات التطبيق.

🔐 الأمان والصلاحيات والخصوصية

يقرأ Gatus ملف الإعداد وقد يحتوي رؤوس Authorization أو Webhooks وأسرار OIDC. لا تضع قيم الأسرار في Git عام، واقصر صلاحيات الملف، واستخدم متغيرات البيئة أو مدير أسرار عندما تدعم بيئتك ذلك. الحاوية تحتاج وصولًا شبكيًا إلى كل هدف ومزود تنبيه؛ لا تمنحها شبكة أوسع مما تحتاج.

إذا عرضت صفحة الحالة للعامة، أخفِ الروابط والأسماء الداخلية والأخطاء والشروط التي تكشف بنية النظام. تحمي Basic Auth أو OIDC الواجهة، لكنك مسؤول عن TLS أمامها وعن تحديث الصورة ومراجعة التغييرات. لم أجد في المستودع عقد telemetry مستقلًا يثبت إرسال بيانات استخدام؛ غياب هذا التوثيق ليس ضمانًا بعدم وجود أي اتصال، والطلبات الخارجية جزء أساسي من وظيفة الأداة.

📚 المصادر وتاريخ التحقق

تحققت في 30 سبتمبر 2026 من المستودع الأصلي، الإصدار v5.37.0، ملف الإعداد النموذجي، ترخيص Apache-2.0، توثيق endpoints، توثيق HTTP، وتوثيق التنبيهات. أحدث إصدار ظاهر هو v5.37.0 المنشور في 24 سبتمبر 2026. لم أثبّت الأداة أو أنفذ المثال على مشروع فعلي.